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.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
index 068aeaff7183..cfd2999acc59 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
@@ -251,6 +251,20 @@ int amdgpu_sync_wait(struct amdgpu_sync *sync)
251 fence_put(e->fence); 251 fence_put(e->fence);
252 kfree(e); 252 kfree(e);
253 } 253 }
254
255 if (amdgpu_enable_semaphores)
256 return 0;
257
258 for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
259 struct amdgpu_fence *fence = sync->sync_to[i];
260 if (!fence)
261 continue;
262
263 r = fence_wait(&fence->base, false);
264 if (r)
265 return r;
266 }
267
254 return 0; 268 return 0;
255} 269}
256 270
@@ -285,7 +299,8 @@ int amdgpu_sync_rings(struct amdgpu_sync *sync,
285 return -EINVAL; 299 return -EINVAL;
286 } 300 }
287 301
288 if (amdgpu_enable_scheduler || (count >= AMDGPU_NUM_SYNCS)) { 302 if (amdgpu_enable_scheduler || !amdgpu_enable_semaphores ||
303 (count >= AMDGPU_NUM_SYNCS)) {
289 /* not enough room, wait manually */ 304 /* not enough room, wait manually */
290 r = fence_wait(&fence->base, false); 305 r = fence_wait(&fence->base, false);
291 if (r) 306 if (r)