diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1794-drm-amdgpu-amdgpu_device_recover_vram-got-NULL-of-sh.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1794-drm-amdgpu-amdgpu_device_recover_vram-got-NULL-of-sh.patch | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1794-drm-amdgpu-amdgpu_device_recover_vram-got-NULL-of-sh.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1794-drm-amdgpu-amdgpu_device_recover_vram-got-NULL-of-sh.patch new file mode 100644 index 00000000..515967a5 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1794-drm-amdgpu-amdgpu_device_recover_vram-got-NULL-of-sh.patch @@ -0,0 +1,43 @@ +From 85ecdfd34d4773c03396fe7d4a7d56a20ef478e1 Mon Sep 17 00:00:00 2001 +From: wentalou <Wentao.Lou@amd.com> +Date: Tue, 16 Apr 2019 15:09:16 +0800 +Subject: [PATCH 1794/2940] drm/amdgpu: amdgpu_device_recover_vram got NULL of + shadow->parent +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +amdgpu_bo_destroy had a bug by calling amdgpu_bo_unref outside mutex_lock. +If amdgpu_device_recover_vram executed between amdgpu_bo_unref and list_del_init, +it would get NULL of shadow->parent, then caused Call Trace and GPU reset failed. + +Change-Id: I41d7b54605e613e87ee03c3ad89c191063c19230 +Signed-off-by: Wentao Lou <Wentao.Lou@amd.com> +Reviewed-by: Christian König <christian.koenig@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +index 3565a7d9bb27..ecec6d2ecf73 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +@@ -90,12 +90,14 @@ static void amdgpu_bo_destroy(struct ttm_buffer_object *tbo) + if (bo->gem_base.import_attach) + drm_prime_gem_destroy(&bo->gem_base, bo->tbo.sg); + drm_gem_object_release(&bo->gem_base); +- amdgpu_bo_unref(&bo->parent); ++ /* in case amdgpu_device_recover_vram got NULL of bo->parent */ + if (!list_empty(&bo->shadow_list)) { + mutex_lock(&adev->shadow_list_lock); + list_del_init(&bo->shadow_list); + mutex_unlock(&adev->shadow_list_lock); + } ++ amdgpu_bo_unref(&bo->parent); ++ + kfree(bo->metadata); + kfree(bo); + } +-- +2.17.1 + |