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 8b88edb0434b..ca72a2e487b9 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | |||
@@ -354,12 +354,15 @@ int amdgpu_sa_bo_new(struct amdgpu_sa_manager *sa_manager, | |||
354 | 354 | ||
355 | for (i = 0, count = 0; i < AMDGPU_MAX_RINGS; ++i) | 355 | for (i = 0, count = 0; i < AMDGPU_MAX_RINGS; ++i) |
356 | if (fences[i]) | 356 | if (fences[i]) |
357 | fences[count++] = fences[i]; | 357 | fences[count++] = fence_get(fences[i]); |
358 | 358 | ||
359 | if (count) { | 359 | if (count) { |
360 | spin_unlock(&sa_manager->wq.lock); | 360 | spin_unlock(&sa_manager->wq.lock); |
361 | t = fence_wait_any_timeout(fences, count, false, | 361 | t = fence_wait_any_timeout(fences, count, false, |
362 | MAX_SCHEDULE_TIMEOUT); | 362 | MAX_SCHEDULE_TIMEOUT); |
363 | for (i = 0; i < count; ++i) | ||
364 | fence_put(fences[i]); | ||
365 | |||
363 | r = (t > 0) ? 0 : t; | 366 | r = (t > 0) ? 0 : t; |
364 | spin_lock(&sa_manager->wq.lock); | 367 | spin_lock(&sa_manager->wq.lock); |
365 | } else { | 368 | } else { |