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 >
