On Tue, Oct 05, 2021 at 01:37:25PM +0200, Christian König wrote: > Simplifying the code a bit. > > Signed-off-by: Christian König <christian.koenig@xxxxxxx> Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> Yeah these iterators rock :-) -Daniel > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c | 44 ++++++++---------------- > 1 file changed, 14 insertions(+), 30 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c > index 862eb3c1c4c5..f7d8487799b2 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c > @@ -252,41 +252,25 @@ int amdgpu_sync_resv(struct amdgpu_device *adev, struct amdgpu_sync *sync, > struct dma_resv *resv, enum amdgpu_sync_mode mode, > void *owner) > { > - struct dma_resv_list *flist; > + struct dma_resv_iter cursor; > struct dma_fence *f; > - unsigned i; > - int r = 0; > + int r; > > if (resv == NULL) > return -EINVAL; > > - /* always sync to the exclusive fence */ > - f = dma_resv_excl_fence(resv); > - dma_fence_chain_for_each(f, f) { > - struct dma_fence_chain *chain = to_dma_fence_chain(f); > - > - if (amdgpu_sync_test_fence(adev, mode, owner, chain ? > - chain->fence : f)) { > - r = amdgpu_sync_fence(sync, f); > - dma_fence_put(f); > - if (r) > - return r; > - break; > - } > - } > - > - flist = dma_resv_shared_list(resv); > - if (!flist) > - return 0; > - > - for (i = 0; i < flist->shared_count; ++i) { > - f = rcu_dereference_protected(flist->shared[i], > - dma_resv_held(resv)); > - > - if (amdgpu_sync_test_fence(adev, mode, owner, f)) { > - r = amdgpu_sync_fence(sync, f); > - if (r) > - return r; > + dma_resv_for_each_fence(&cursor, resv, true, f) { > + dma_fence_chain_for_each(f, f) { > + struct dma_fence_chain *chain = to_dma_fence_chain(f); > + > + if (amdgpu_sync_test_fence(adev, mode, owner, chain ? > + chain->fence : f)) { > + r = amdgpu_sync_fence(sync, f); > + dma_fence_put(f); > + if (r) > + return r; > + break; > + } > } > } > return 0; > -- > 2.25.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch