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