How is this different from just calling with no_wait == false?
As far as I can tell, both paths end up with the same result..

Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com>

diff --git a/drivers/gpu/drm/ttm/ttm_execbuf_util.c 
b/drivers/gpu/drm/ttm/ttm_execbuf_util.c
index 3f48a46..4e7b596 100644
--- a/drivers/gpu/drm/ttm/ttm_execbuf_util.c
+++ b/drivers/gpu/drm/ttm/ttm_execbuf_util.c
@@ -82,22 +82,6 @@ static void ttm_eu_list_ref_sub(struct list_head *list)
        }
 }

-static int ttm_eu_wait_unreserved_locked(struct list_head *list,
-                                        struct ttm_buffer_object *bo)
-{
-       struct ttm_bo_global *glob = bo->glob;
-       int ret;
-
-       ttm_eu_del_from_lru_locked(list);
-       spin_unlock(&glob->lru_lock);
-       ret = ttm_bo_wait_unreserved(bo, true);
-       spin_lock(&glob->lru_lock);
-       if (unlikely(ret != 0))
-               ttm_eu_backoff_reservation_locked(list);
-       return ret;
-}
-
-
 void ttm_eu_backoff_reservation(struct list_head *list)
 {
        struct ttm_validate_buffer *entry;
@@ -152,19 +136,10 @@ retry:
        list_for_each_entry(entry, list, head) {
                struct ttm_buffer_object *bo = entry->bo;

-retry_this_bo:
-               ret = ttm_bo_reserve_locked(bo, true, true, true, val_seq);
+               ret = ttm_bo_reserve_locked(bo, true, false, true, val_seq);
                switch (ret) {
                case 0:
                        break;
-               case -EBUSY:
-                       ret = ttm_eu_wait_unreserved_locked(list, bo);
-                       if (unlikely(ret != 0)) {
-                               spin_unlock(&glob->lru_lock);
-                               ttm_eu_list_ref_sub(list);
-                               return ret;
-                       }
-                       goto retry_this_bo;
                case -EAGAIN:
                        ttm_eu_backoff_reservation_locked(list);
                        spin_unlock(&glob->lru_lock);

Reply via email to