aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c11
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]);