[Intel-gfx] [PATCH 11/28] drm/amdgpu: use the new iterator in amdgpu_sync_resv
Daniel Vetter
daniel at ffwll.ch
Wed Oct 13 14:06:10 UTC 2021
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 at amd.com>
Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
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
More information about the Intel-gfx
mailing list