aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/lima/lima_gem.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2019-04-01 18:26:35 -0400
committerEric Anholt <eric@anholt.net>2019-04-16 18:53:48 -0400
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,
145 if (explicit) 145 if (explicit)
146 return 0; 146 return 0;
147 147
148 /* implicit sync use bo fence in resv obj */ 148 return drm_gem_fence_array_add_implicit(&task->deps, &bo->gem, write);
149 if (write) {
150 unsigned nr_fences;
151 struct dma_fence **fences;
152 int i;
153
154 err = reservation_object_get_fences_rcu(
155 bo->gem.resv, NULL, &nr_fences, &fences);
156 if (err || !nr_fences)
157 return err;
158
159 for (i = 0; i < nr_fences; i++) {
160 err = lima_sched_task_add_dep(task, fences[i]);
161 if (err)
162 break;
163 }
164
165 /* for error case free remaining fences */
166 for ( ; i < nr_fences; i++)
167 dma_fence_put(fences[i]);
168
169 kfree(fences);
170 } else {
171 struct dma_fence *fence;
172
173 fence = reservation_object_get_excl_rcu(bo->gem.resv);
174 if (fence) {
175 err = lima_sched_task_add_dep(task, fence);
176 if (err)
177 dma_fence_put(fence);
178 }
179 }
180
181 return err;
182} 149}
183 150
184static int lima_gem_lock_bos(struct lima_bo **bos, u32 nr_bos, 151static 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)
251 if (err) 218 if (err)
252 return err; 219 return err;
253 220
254 err = lima_sched_task_add_dep(submit->task, fence); 221 err = drm_gem_fence_array_add(&submit->task->deps, fence);
255 if (err) { 222 if (err) {
256 dma_fence_put(fence); 223 dma_fence_put(fence);
257 return err; 224 return err;