diff options
Diffstat (limited to 'drivers/gpu/drm/lima/lima_gem.c')
-rw-r--r-- | drivers/gpu/drm/lima/lima_gem.c | 37 |
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 | ||
184 | static int lima_gem_lock_bos(struct lima_bo **bos, u32 nr_bos, | 151 | 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) | |||
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; |