diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c index eb20987ce18d..d6398cf45f24 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | |||
@@ -160,7 +160,8 @@ static void amdgpu_sa_bo_try_free(struct amdgpu_sa_manager *sa_manager) | |||
160 | 160 | ||
161 | sa_bo = list_entry(sa_manager->hole->next, struct amdgpu_sa_bo, olist); | 161 | sa_bo = list_entry(sa_manager->hole->next, struct amdgpu_sa_bo, olist); |
162 | list_for_each_entry_safe_from(sa_bo, tmp, &sa_manager->olist, olist) { | 162 | list_for_each_entry_safe_from(sa_bo, tmp, &sa_manager->olist, olist) { |
163 | if (sa_bo->fence == NULL || !amdgpu_fence_signaled(sa_bo->fence)) { | 163 | if (sa_bo->fence == NULL || |
164 | !fence_is_signaled(&sa_bo->fence->base)) { | ||
164 | return; | 165 | return; |
165 | } | 166 | } |
166 | amdgpu_sa_bo_remove_locked(sa_bo); | 167 | amdgpu_sa_bo_remove_locked(sa_bo); |
@@ -274,7 +275,7 @@ static bool amdgpu_sa_bo_next_hole(struct amdgpu_sa_manager *sa_manager, | |||
274 | sa_bo = list_first_entry(&sa_manager->flist[i], | 275 | sa_bo = list_first_entry(&sa_manager->flist[i], |
275 | struct amdgpu_sa_bo, flist); | 276 | struct amdgpu_sa_bo, flist); |
276 | 277 | ||
277 | if (!amdgpu_fence_signaled(sa_bo->fence)) { | 278 | if (!fence_is_signaled(&sa_bo->fence->base)) { |
278 | fences[i] = sa_bo->fence; | 279 | fences[i] = sa_bo->fence; |
279 | continue; | 280 | continue; |
280 | } | 281 | } |
@@ -317,6 +318,7 @@ int amdgpu_sa_bo_new(struct amdgpu_device *adev, | |||
317 | struct amdgpu_fence *fences[AMDGPU_MAX_RINGS]; | 318 | struct amdgpu_fence *fences[AMDGPU_MAX_RINGS]; |
318 | unsigned tries[AMDGPU_MAX_RINGS]; | 319 | unsigned tries[AMDGPU_MAX_RINGS]; |
319 | int i, r; | 320 | int i, r; |
321 | signed long t; | ||
320 | 322 | ||
321 | BUG_ON(align > sa_manager->align); | 323 | BUG_ON(align > sa_manager->align); |
322 | BUG_ON(size > sa_manager->size); | 324 | BUG_ON(size > sa_manager->size); |
@@ -350,7 +352,8 @@ int amdgpu_sa_bo_new(struct amdgpu_device *adev, | |||
350 | } while (amdgpu_sa_bo_next_hole(sa_manager, fences, tries)); | 352 | } while (amdgpu_sa_bo_next_hole(sa_manager, fences, tries)); |
351 | 353 | ||
352 | spin_unlock(&sa_manager->wq.lock); | 354 | spin_unlock(&sa_manager->wq.lock); |
353 | r = amdgpu_fence_wait_any(adev, fences, false); | 355 | t = amdgpu_fence_wait_any(adev, fences, false, MAX_SCHEDULE_TIMEOUT); |
356 | r = (t > 0) ? 0 : t; | ||
354 | spin_lock(&sa_manager->wq.lock); | 357 | spin_lock(&sa_manager->wq.lock); |
355 | /* if we have nothing to wait for block */ | 358 | /* if we have nothing to wait for block */ |
356 | if (r == -ENOENT) { | 359 | if (r == -ENOENT) { |
@@ -379,7 +382,7 @@ void amdgpu_sa_bo_free(struct amdgpu_device *adev, struct amdgpu_sa_bo **sa_bo, | |||
379 | 382 | ||
380 | sa_manager = (*sa_bo)->manager; | 383 | sa_manager = (*sa_bo)->manager; |
381 | spin_lock(&sa_manager->wq.lock); | 384 | spin_lock(&sa_manager->wq.lock); |
382 | if (fence && !amdgpu_fence_signaled(fence)) { | 385 | if (fence && !fence_is_signaled(&fence->base)) { |
383 | (*sa_bo)->fence = amdgpu_fence_ref(fence); | 386 | (*sa_bo)->fence = amdgpu_fence_ref(fence); |
384 | list_add_tail(&(*sa_bo)->flist, | 387 | list_add_tail(&(*sa_bo)->flist, |
385 | &sa_manager->flist[fence->ring->idx]); | 388 | &sa_manager->flist[fence->ring->idx]); |