AMD General

> -----Original Message-----
> From: Alex Deucher <[email protected]>
> Sent: Friday, May 22, 2026 8:20 AM
> To: [email protected]; Koenig, Christian
> <[email protected]>; Khatri, Sunil <[email protected]>; Lin, Amber
> <[email protected]>; Zhang, Jesse(Jie) <[email protected]>; Liu,
> Shaoyun <[email protected]>
> Cc: Deucher, Alexander <[email protected]>
> Subject: [PATCH 02/42] drm/amdgpu: don't reemit if there is nothing to reemit
>
> Return early in amdgpu_ring_set_fence_errors_and_reemit()
> if ring_backup_entries_to_copy is 0.  That means that either the ring is idle 
> and
> there is nothing to reemit, or there some reason why we should reemit, so 
> return
> early and signal the fences (if applicable).
>
> Signed-off-by: Alex Deucher <[email protected]>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> index ea69b1bac7c6e..6a43c8494fa8c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> @@ -727,6 +727,15 @@ void amdgpu_ring_set_fence_errors_and_reemit(struct
> amdgpu_ring *ring,
>       last_seq = amdgpu_fence_read(ring) & ring->fence_drv.num_fences_mask;
>       seq = ring->fence_drv.sync_seq & ring->fence_drv.num_fences_mask;
>
> +     /* If there is nothing to reemit, return early and set an error on the 
> fence
> +      * if applicable. If all of the fences are siganlled, this will be a 
> nop.
> +      * if there are still fences and ring_backup_entries_to_copy is 0, then
> +      * we are skipping it on purpose.
> +      */
> +     if (!ring->ring_backup_entries_to_copy) {
[Zhang, Jesse(Jie)]  should we  check if guilty_fence is NULL?
Reviewed-by: Jesse Zhang <[email protected]>
> +             amdgpu_fence_driver_force_completion(ring, &guilty_fence->base);
> +             return;
> +     }
>       ring->reemit = true;
>       amdgpu_ring_alloc(ring, ring->ring_backup_entries_to_copy);
>       spin_lock_irqsave(&ring->fence_drv.lock, flags);
> --
> 2.54.0

Reply via email to