aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c22
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
205struct 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
205int amdgpu_sync_wait(struct amdgpu_sync *sync) 227int amdgpu_sync_wait(struct amdgpu_sync *sync)
206{ 228{
207 struct amdgpu_sync_entry *e; 229 struct amdgpu_sync_entry *e;