Ping on this series.

Alex

On Mon, Sep 22, 2025 at 5:33 PM Alex Deucher <[email protected]> wrote:
>
> Compare the sequence numbers directly.
>
> Fixes: 77cc0da39c7c ("drm/amdgpu: track ring state associated with a fence")
> Signed-off-by: Alex Deucher <[email protected]>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> index fd8cca241da62..e270df30c2790 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> @@ -790,14 +790,19 @@ void amdgpu_ring_backup_unprocessed_commands(struct 
> amdgpu_ring *ring,
>         struct dma_fence *unprocessed;
>         struct dma_fence __rcu **ptr;
>         struct amdgpu_fence *fence;
> -       u64 wptr, i, seqno;
> +       u64 wptr;
> +       u32 seq, last_seq;
>
> -       seqno = amdgpu_fence_read(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;
>         wptr = ring->fence_drv.signalled_wptr;
>         ring->ring_backup_entries_to_copy = 0;
>
> -       for (i = seqno + 1; i <= ring->fence_drv.sync_seq; ++i) {
> -               ptr = &ring->fence_drv.fences[i & 
> ring->fence_drv.num_fences_mask];
> +       do {
> +               last_seq++;
> +               last_seq &= ring->fence_drv.num_fences_mask;
> +
> +               ptr = &ring->fence_drv.fences[last_seq];
>                 rcu_read_lock();
>                 unprocessed = rcu_dereference(*ptr);
>
> @@ -813,7 +818,7 @@ void amdgpu_ring_backup_unprocessed_commands(struct 
> amdgpu_ring *ring,
>                         wptr = fence->wptr;
>                 }
>                 rcu_read_unlock();
> -       }
> +       } while (last_seq != seq);
>  }
>
>  /*
> --
> 2.51.0
>

Reply via email to