diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3782-drm-amdgpu-Fix-mutex-lock-from-atomic-context.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3782-drm-amdgpu-Fix-mutex-lock-from-atomic-context.patch | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3782-drm-amdgpu-Fix-mutex-lock-from-atomic-context.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3782-drm-amdgpu-Fix-mutex-lock-from-atomic-context.patch new file mode 100644 index 00000000..5076903d --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3782-drm-amdgpu-Fix-mutex-lock-from-atomic-context.patch @@ -0,0 +1,41 @@ +From 37ee7543723ef762a479ac6d6bb5c53555950f58 Mon Sep 17 00:00:00 2001 +From: Andrey Grodzovsky <andrey.grodzovsky@amd.com> +Date: Tue, 10 Sep 2019 15:34:16 -0400 +Subject: [PATCH 3782/4256] drm/amdgpu: Fix mutex lock from atomic context. + +Problem: +amdgpu_ras_reserve_bad_pages was moved to amdgpu_ras_reset_gpu +because writing to EEPROM during ASIC reset was unstable. +But for ERREVENT_ATHUB_INTERRUPT amdgpu_ras_reset_gpu is called +directly from ISR context and so locking is not allowed. Also it's +irrelevant for this partilcular interrupt as this is generic RAS +interrupt and not memory errors specific. + +Fix: +Avoid calling amdgpu_ras_reserve_bad_pages if not in task context. + +Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com> +Reviewed-by: Tao Zhou <tao.zhou1@amd.com> +Reviewed-by: Guchun Chen <guchun.chen@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h +index 012034d2ae06..dd5da3c6327e 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h +@@ -504,7 +504,9 @@ static inline int amdgpu_ras_reset_gpu(struct amdgpu_device *adev, + /* save bad page to eeprom before gpu reset, + * i2c may be unstable in gpu reset + */ +- amdgpu_ras_reserve_bad_pages(adev); ++ if (in_task()) ++ amdgpu_ras_reserve_bad_pages(adev); ++ + if (atomic_cmpxchg(&ras->in_recovery, 0, 1) == 0) + schedule_work(&ras->recovery_work); + return 0; +-- +2.17.1 + |