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

Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
index d377a7c57d5e1..505ae9b73932f 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
@@ -7178,10 +7178,8 @@ static int gfx_v9_0_reset_kgq(struct amdgpu_ring *ring, 
unsigned int vmid)
        gfx_v9_0_ring_emit_wreg(kiq_ring,
                                 SOC15_REG_OFFSET(GC, 0, 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;
 
@@ -7193,6 +7191,7 @@ static int gfx_v9_0_reset_kgq(struct amdgpu_ring *ring, 
unsigned int vmid)
                                    SOC15_REG_OFFSET(GC, 0, mmCP_VMID_RESET), 
0, 0xffff);
        gfx_v9_0_ring_emit_wreg(ring,
                                SOC15_REG_OFFSET(GC, 0, mmCP_VMID_RESET), 0);
+       amdgpu_ring_commit(ring);
 
        return amdgpu_ring_test_ring(ring);
 }
@@ -7222,10 +7221,8 @@ static int gfx_v9_0_reset_kcq(struct amdgpu_ring *ring,
        kiq->pmf->kiq_unmap_queues(kiq_ring, ring, RESET_QUEUES,
                                   0, 0);
        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;
 
-- 
2.49.0

Reply via email to