summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimur Kristóf <timur.kristof@gmail.com>2026-06-17 21:14:23 +0200
committerAlex Deucher <alexander.deucher@amd.com>2026-07-01 11:14:14 -0400
commita25d644890c17115482d1d16ad0675fe0f14554e (patch)
tree34f49c95f01b309fd5db006aaa155c85b95407be
parent1fc76380c6ce5440e3cd02ddec76067f83969dc0 (diff)
downloadlinux-stable-a25d644890c17115482d1d16ad0675fe0f14554e.tar.gz
linux-stable-a25d644890c17115482d1d16ad0675fe0f14554e.zip
drm/amdgpu/gfx8: Stop CP and RLC during reset
The only case when they may not go idle is when we are dealing with a GPU hang, in which case we should just forcibly disable these even when they aren't idle. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index 8ae9ab0fb886..c383035073a4 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -4868,14 +4868,12 @@ static int gfx_v8_0_hw_fini(struct amdgpu_ip_block *ip_block)
}
amdgpu_gfx_rlc_enter_safe_mode(adev, 0);
- if (!gfx_v8_0_wait_for_idle(ip_block))
- gfx_v8_0_cp_enable(adev, false);
- else
+ if (!amdgpu_in_reset(adev) && gfx_v8_0_wait_for_idle(ip_block))
pr_err("cp is busy, skip halt cp\n");
- if (!gfx_v8_0_wait_for_rlc_idle(adev))
- adev->gfx.rlc.funcs->stop(adev);
- else
- pr_err("rlc is busy, skip halt rlc\n");
+ if (!amdgpu_in_reset(adev) && gfx_v8_0_wait_for_rlc_idle(adev))
+ pr_err("rlc is busy\n");
+ gfx_v8_0_cp_enable(adev, false);
+ adev->gfx.rlc.funcs->stop(adev);
amdgpu_gfx_rlc_exit_safe_mode(adev, 0);
return 0;