drm/i915: Add a simple is-bound check before unbinding
authorChris Wilson <chris@chris-wilson.co.uk>
Sun, 22 Dec 2019 21:02:54 +0000 (21:02 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 23 Dec 2019 12:30:23 +0000 (12:30 +0000)
Only acquire the various atomic references required to unbind the vma if
we do need to unbind the vma.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191222210256.2066451-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem.c

index 983755b..e9f82e9 100644 (file)
@@ -138,6 +138,10 @@ try_again:
                struct i915_address_space *vm = vma->vm;
                bool awake = false;
 
+               list_move_tail(&vma->obj_link, &still_in_list);
+               if (!i915_vma_is_bound(vma, I915_VMA_BIND_MASK))
+                       continue;
+
                ret = -EAGAIN;
                if (!i915_vm_tryopen(vm))
                        break;
@@ -153,7 +157,6 @@ try_again:
                        }
                }
 
-               list_move_tail(&vma->obj_link, &still_in_list);
                spin_unlock(&obj->vma.lock);
 
                ret = -EBUSY;