[PATCH] drm/amdgpu/gfx8: Fix compute ring failure after resetting

Liu, Monk Monk.Liu at amd.com
Fri Nov 10 08:59:52 UTC 2017


That way please add comments like "w/a for ring test fail after GPU reset, root cause unknown"

Ack-by: Monk

-----Original Message-----
From: Yu, Xiangliang 
Sent: 2017年11月10日 16:58
To: Liu, Monk <Monk.Liu at amd.com>; amd-gfx at lists.freedesktop.org
Subject: RE: [PATCH] drm/amdgpu/gfx8: Fix compute ring failure after resetting

> The ring clear is already before "ring test", you patch just postpone 
> the ring clear to an even later point, Do you know the root cause of your fix ?

Yes, just postpone it. Still can't find the root cause and the issue only happen on gfx8.
I'm ok if you can find better solution.
 
> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf 
> Of Xiangliang.Yu
> Sent: 2017年11月10日 14:52
> To: amd-gfx at lists.freedesktop.org
> Cc: Yu, Xiangliang <Xiangliang.Yu at amd.com>
> Subject: [PATCH] drm/amdgpu/gfx8: Fix compute ring failure after 
> resetting
> 
> Do ring clear before ring test, otherwise compute ring test will fail 
> after gpu resetting.
> 
> Signed-off-by: Xiangliang.Yu <Xiangliang.Yu at 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list