summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_sync.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2021-06-16 09:23:50 +0200
committerChristian König <christian.koenig@amd.com>2021-10-20 14:07:54 +0200
commit0597ca7b43e41c509bd0feb143bdfb7278496397 (patch)
treefc6c53eb419227ccea191ed8b998977fe777e94f /drivers/gpu/drm/radeon/radeon_sync.c
parentdrm/msm: use new iterator in msm_gem_describe (diff)
downloadlinux-0597ca7b43e41c509bd0feb143bdfb7278496397.tar.xz
linux-0597ca7b43e41c509bd0feb143bdfb7278496397.zip
drm/radeon: use new iterator in radeon_sync_resv
Simplifying the code a bit. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20211005113742.1101-16-christian.koenig@amd.com
Diffstat (limited to '')
-rw-r--r--drivers/gpu/drm/radeon/radeon_sync.c22
1 files changed, 3 insertions, 19 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_sync.c b/drivers/gpu/drm/radeon/radeon_sync.c
index 9257b60144c4..b991ba1bcd51 100644
--- a/drivers/gpu/drm/radeon/radeon_sync.c
+++ b/drivers/gpu/drm/radeon/radeon_sync.c
@@ -91,33 +91,17 @@ int radeon_sync_resv(struct radeon_device *rdev,
struct dma_resv *resv,
bool shared)
{
- struct dma_resv_list *flist;
- struct dma_fence *f;
+ struct dma_resv_iter cursor;
struct radeon_fence *fence;
- unsigned i;
+ struct dma_fence *f;
int r = 0;
- /* always sync to the exclusive fence */
- f = dma_resv_excl_fence(resv);
- fence = f ? to_radeon_fence(f) : NULL;
- if (fence && fence->rdev == rdev)
- radeon_sync_fence(sync, fence);
- else if (f)
- r = dma_fence_wait(f, true);
-
- flist = dma_resv_shared_list(resv);
- if (shared || !flist || r)
- return r;
-
- for (i = 0; i < flist->shared_count; ++i) {
- f = rcu_dereference_protected(flist->shared[i],
- dma_resv_held(resv));
+ dma_resv_for_each_fence(&cursor, resv, shared, f) {
fence = to_radeon_fence(f);
if (fence && fence->rdev == rdev)
radeon_sync_fence(sync, fence);
else
r = dma_fence_wait(f, true);
-
if (r)
break;
}