summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/lima/lima_gem.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2019-04-01 15:26:35 -0700
committerEric Anholt <eric@anholt.net>2019-04-16 15:53:48 -0700
commitf3fb20074e02865e1724c586eae46a77a7f2266b (patch)
tree3cb39d3e0a295f22b43beaadd635501f6a8a62e2 /drivers/gpu/drm/lima/lima_gem.c
parent5d5a179d3e90a8385b115e4bd19826ea0bcc6d11 (diff)
drm/lima: Use the drm_gem_fence_array_add helpers for our deps.
It's a pretty direct port of what I did for v3d. Signed-off-by: Eric Anholt <eric@anholt.net> Link: https://patchwork.freedesktop.org/patch/msgid/20190401222635.25013-8-eric@anholt.net Reviewed-and-tested-by: Qiang Yu <yuq825@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/lima/lima_gem.c')
-rw-r--r--drivers/gpu/drm/lima/lima_gem.c37
1 files changed, 2 insertions, 35 deletions
diff --git a/drivers/gpu/drm/lima/lima_gem.c b/drivers/gpu/drm/lima/lima_gem.c
index 1d69498bc17e..477c0f766663 100644
--- a/drivers/gpu/drm/lima/lima_gem.c
+++ b/drivers/gpu/drm/lima/lima_gem.c
@@ -145,40 +145,7 @@ static int lima_gem_sync_bo(struct lima_sched_task *task, struct lima_bo *bo,
if (explicit)
return 0;
- /* implicit sync use bo fence in resv obj */
- if (write) {
- unsigned nr_fences;
- struct dma_fence **fences;
- int i;
-
- err = reservation_object_get_fences_rcu(
- bo->gem.resv, NULL, &nr_fences, &fences);
- if (err || !nr_fences)
- return err;
-
- for (i = 0; i < nr_fences; i++) {
- err = lima_sched_task_add_dep(task, fences[i]);
- if (err)
- break;
- }
-
- /* for error case free remaining fences */
- for ( ; i < nr_fences; i++)
- dma_fence_put(fences[i]);
-
- kfree(fences);
- } else {
- struct dma_fence *fence;
-
- fence = reservation_object_get_excl_rcu(bo->gem.resv);
- if (fence) {
- err = lima_sched_task_add_dep(task, fence);
- if (err)
- dma_fence_put(fence);
- }
- }
-
- return err;
+ return drm_gem_fence_array_add_implicit(&task->deps, &bo->gem, write);
}
static int lima_gem_lock_bos(struct lima_bo **bos, u32 nr_bos,
@@ -251,7 +218,7 @@ static int lima_gem_add_deps(struct drm_file *file, struct lima_submit *submit)
if (err)
return err;
- err = lima_sched_task_add_dep(submit->task, fence);
+ err = drm_gem_fence_array_add(&submit->task->deps, fence);
if (err) {
dma_fence_put(fence);
return err;