diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c | 17 |
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) |