[PATCH 3/3] drm/amdgpu/gfx7: reset cleanups

Alex Deucher alexander.deucher at amd.com
Thu May 22 21:49:19 UTC 2025


Move the KIQ ring test into the kiq lock, add
the missing ring_commit.

Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
index da0534ff1271a..e8b8035fc7900 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
@@ -4937,10 +4937,8 @@ static int gfx_v7_0_reset_kgq(struct amdgpu_ring *ring, unsigned int vmid)
 	tmp = REG_SET_FIELD(0, CP_VMID_RESET, RESET_REQUEST, 1 << vmid);
 	gfx_v7_0_ring_emit_wreg(kiq_ring, mmCP_VMID_RESET, tmp);
 	amdgpu_ring_commit(kiq_ring);
-
-	spin_unlock_irqrestore(&kiq->ring_lock, flags);
-
 	r = amdgpu_ring_test_ring(kiq_ring);
+	spin_unlock_irqrestore(&kiq->ring_lock, flags);
 	if (r)
 		return r;
 
@@ -4950,6 +4948,7 @@ static int gfx_v7_0_reset_kgq(struct amdgpu_ring *ring, unsigned int vmid)
 				     ring->fence_drv.sync_seq, AMDGPU_FENCE_FLAG_EXEC);
 	gfx_v7_0_ring_emit_reg_wait(ring, mmCP_VMID_RESET, 0, 0xffff);
 	gfx_v7_0_ring_emit_wreg(ring, mmCP_VMID_RESET, 0);
+	amdgpu_ring_commit(ring);
 
 	return amdgpu_ring_test_ring(ring);
 }
-- 
2.49.0



More information about the amd-gfx mailing list