[PATCH] drm/amdgpu: Deactivate SW interrupt fallback in amdgpu_fence_process

Christian König christian.koenig at amd.com
Sun Sep 23 08:17:32 UTC 2018


Am 23.09.2018 um 05:25 schrieb Andrey Grodzovsky:
> Deactivate SW interrupt fallback when all emited fences are completed.
> Also switch interrupt SW fallback message from INFO to WARN.
>
> Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky at amd.com>
> Suggested-by: Christian Konig <Christian.Koenig at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> index 1ae2583..9512248 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> @@ -231,6 +231,8 @@ void amdgpu_fence_process(struct amdgpu_ring *ring)
>   
>   	if (seq != ring->fence_drv.sync_seq)
>   		amdgpu_fence_schedule_fallback(ring);
> +	else
> +		del_timer(&ring->fence_drv.fallback_timer);

Thinking more about it I came to the conclusion that this still isn't 
100% correct.

We only want the fallback to be running when signaling is explicitly 
enabled. So if I'm not completely mistaken that rather should look like 
this:

if (del_timer(&ring->fence_drv.fallback_timer) &&
     seq != ring->fence_drv.sync_seq)
         amdgpu_fence_schedule_fallback(ring);

Regards,
Christian.

>   
>   	if (unlikely(seq == last_seq))
>   		return;
> @@ -274,7 +276,7 @@ static void amdgpu_fence_fallback(struct timer_list *t)
>   	struct amdgpu_ring *ring = from_timer(ring, t,
>   					      fence_drv.fallback_timer);
>   
> -	DRM_INFO("Fallback to SW interrupt on ring %s due to HW interrupt time out", ring->name);
> +	DRM_WARN("Fallback to SW interrupt on ring %s due to HW interrupt time out", ring->name);
>   	amdgpu_fence_process(ring);
>   }
>   



More information about the amd-gfx mailing list