diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c index 7d8f8f1e3f7f..2faf03bcda21 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | |||
@@ -357,12 +357,15 @@ int amdgpu_sa_bo_new(struct amdgpu_sa_manager *sa_manager, | |||
357 | 357 | ||
358 | for (i = 0, count = 0; i < AMDGPU_MAX_RINGS; ++i) | 358 | for (i = 0, count = 0; i < AMDGPU_MAX_RINGS; ++i) |
359 | if (fences[i]) | 359 | if (fences[i]) |
360 | fences[count++] = fences[i]; | 360 | fences[count++] = fence_get(fences[i]); |
361 | 361 | ||
362 | if (count) { | 362 | if (count) { |
363 | spin_unlock(&sa_manager->wq.lock); | 363 | spin_unlock(&sa_manager->wq.lock); |
364 | t = fence_wait_any_timeout(fences, count, false, | 364 | t = fence_wait_any_timeout(fences, count, false, |
365 | MAX_SCHEDULE_TIMEOUT); | 365 | MAX_SCHEDULE_TIMEOUT); |
366 | for (i = 0; i < count; ++i) | ||
367 | fence_put(fences[i]); | ||
368 | |||
366 | r = (t > 0) ? 0 : t; | 369 | r = (t > 0) ? 0 : t; |
367 | spin_lock(&sa_manager->wq.lock); | 370 | spin_lock(&sa_manager->wq.lock); |
368 | } else { | 371 | } else { |