diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c index 4fffb2539331..69b7d4540c6e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c | |||
@@ -202,6 +202,28 @@ int amdgpu_sync_resv(struct amdgpu_device *adev, | |||
202 | return r; | 202 | return r; |
203 | } | 203 | } |
204 | 204 | ||
205 | struct fence *amdgpu_sync_get_fence(struct amdgpu_sync *sync) | ||
206 | { | ||
207 | struct amdgpu_sync_entry *e; | ||
208 | struct hlist_node *tmp; | ||
209 | struct fence *f; | ||
210 | int i; | ||
211 | |||
212 | hash_for_each_safe(sync->fences, i, tmp, e, node) { | ||
213 | |||
214 | f = e->fence; | ||
215 | |||
216 | hash_del(&e->node); | ||
217 | kfree(e); | ||
218 | |||
219 | if (!fence_is_signaled(f)) | ||
220 | return f; | ||
221 | |||
222 | fence_put(f); | ||
223 | } | ||
224 | return NULL; | ||
225 | } | ||
226 | |||
205 | int amdgpu_sync_wait(struct amdgpu_sync *sync) | 227 | int amdgpu_sync_wait(struct amdgpu_sync *sync) |
206 | { | 228 | { |
207 | struct amdgpu_sync_entry *e; | 229 | struct amdgpu_sync_entry *e; |