[PATCH 13/16] drm/msm: use new iterator in msm_gem_sync_object

Christian König ckoenig.leichtzumerken at gmail.com
Thu Jun 17 11:15:55 UTC 2021


Simplifying the code a bit.

Untested since I can't get the driver to compile on !ARM.

Signed-off-by: Christian König <christian.koenig at amd.com>
---
 drivers/gpu/drm/msm/msm_gem.c | 20 +++-----------------
 1 file changed, 3 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
index 72a07e311de3..24f8c0603385 100644
--- a/drivers/gpu/drm/msm/msm_gem.c
+++ b/drivers/gpu/drm/msm/msm_gem.c
@@ -813,25 +813,11 @@ void msm_gem_vunmap(struct drm_gem_object *obj)
 int msm_gem_sync_object(struct drm_gem_object *obj,
 		struct msm_fence_context *fctx, bool exclusive)
 {
-	struct dma_resv_list *fobj;
+	struct dma_resv_cursor cursor;
 	struct dma_fence *fence;
-	int i, ret;
-
-	fence = dma_resv_excl_fence(obj->resv);
-	/* don't need to wait on our own fences, since ring is fifo */
-	if (fence && (fence->context != fctx->context)) {
-		ret = dma_fence_wait(fence, true);
-		if (ret)
-			return ret;
-	}
-
-	fobj = dma_resv_shared_list(obj->resv);
-	if (!exclusive || !fobj)
-		return 0;
+	int ret;
 
-	for (i = 0; i < fobj->shared_count; i++) {
-		fence = rcu_dereference_protected(fobj->shared[i],
-						dma_resv_held(obj->resv));
+	dma_resv_for_each_fence(obj->resv, &cursor, exclusive, fence) {
 		if (fence->context != fctx->context) {
 			ret = dma_fence_wait(fence, true);
 			if (ret)
-- 
2.25.1



More information about the dri-devel mailing list