Do ring clear before ring test, otherwise compute ring test will
fail after gpu resetting.

Signed-off-by: Xiangliang.Yu <xiangliang...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index a74515a..a982919 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -4868,9 +4868,6 @@ static int gfx_v8_0_kcq_init_queue(struct amdgpu_ring 
*ring)
                /* reset MQD to a clean status */
                if (adev->gfx.mec.mqd_backup[mqd_idx])
                        memcpy(mqd, adev->gfx.mec.mqd_backup[mqd_idx], 
sizeof(struct vi_mqd_allocation));
-               /* reset ring buffer */
-               ring->wptr = 0;
-               amdgpu_ring_clear_ring(ring);
        } else {
                amdgpu_ring_clear_ring(ring);
        }
@@ -4945,6 +4942,11 @@ static int gfx_v8_0_kiq_resume(struct amdgpu_device 
*adev)
        /* Test KCQs */
        for (i = 0; i < adev->gfx.num_compute_rings; i++) {
                ring = &adev->gfx.compute_ring[i];
+               if (adev->in_gpu_reset) {
+                       /* reset ring buffer */
+                       ring->wptr = 0;
+                       amdgpu_ring_clear_ring(ring);
+               }
                ring->ready = true;
                r = amdgpu_ring_test_ring(ring);
                if (r)
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to