summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLin.Cao <lincao12@amd.com>2023-05-08 17:28:41 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-05-17 13:59:06 +0200
commit2b5633e31f2e097119b3c7f2d9a59c558571056e (patch)
treedb1d31460f36101d034edc775d9a4b13a74ed4ff
parent90ed4c433a1c15d984aad1a6ba08c14066c9de5b (diff)
downloadlinux-stable-2b5633e31f2e097119b3c7f2d9a59c558571056e.tar.gz
linux-stable-2b5633e31f2e097119b3c7f2d9a59c558571056e.tar.bz2
linux-stable-2b5633e31f2e097119b3c7f2d9a59c558571056e.zip
drm/amdgpu: Fix vram recover doesn't work after whole GPU reset (v2)
commit 6c032c37ac3ef3b7df30937c785ecc4da428edc0 upstream. v1: Vmbo->shadow is used to back vram bo up when vram lost. So that we should set shadow as vmbo->shadow to recover vmbo->bo v2: Modify if(vmbo->shadow) shadow = vmbo->shadow as if(!vmbo->shadow) continue; Fixes: e18aaea733da ("drm/amdgpu: move shadow_list to amdgpu_bo_vm") Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Lin.Cao <lincao12@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_device.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 533263d44265..8a14202f8613 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -4503,7 +4503,11 @@ static int amdgpu_device_recover_vram(struct amdgpu_device *adev)
dev_info(adev->dev, "recover vram bo from shadow start\n");
mutex_lock(&adev->shadow_list_lock);
list_for_each_entry(vmbo, &adev->shadow_list, shadow_list) {
- shadow = &vmbo->bo;
+ /* If vm is compute context or adev is APU, shadow will be NULL */
+ if (!vmbo->shadow)
+ continue;
+ shadow = vmbo->shadow;
+
/* No need to recover an evicted BO */
if (shadow->tbo.resource->mem_type != TTM_PL_TT ||
shadow->tbo.resource->start == AMDGPU_BO_INVALID_OFFSET ||