Commit 75737cb4 authored by Xiangliang.Yu's avatar Xiangliang.Yu Committed by Alex Deucher
Browse files

drm/amdgpu/gfx8: Fix compute ring failure after resetting



Do ring clear before ring test, otherwise compute ring test will
fail after gpu resetting. Still can't find the root cause, just
workaround it.

Signed-off-by: default avatarXiangliang.Yu <Xiangliang.Yu@amd.com>
Acked-by: default avatarMonk Liu <Monk.Liu@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent add526b3
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -4877,9 +4877,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);
	}
@@ -4954,6 +4951,13 @@ 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) {
			/* move reset ring buffer to here to workaround
			 * compute ring test failed
			 */
			ring->wptr = 0;
			amdgpu_ring_clear_ring(ring);
		}
		ring->ready = true;
		r = amdgpu_ring_test_ring(ring);
		if (r)