Reviewed-by: Christian König <[email protected]> for the series.
On 09.10.25 16:28, Alex Deucher wrote: > 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 >>
