drm/i915/userptr: Deactivate a failed userptr if the worker reports an EFAULT
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 7 Mar 2017 20:58:49 +0000 (20:58 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 9 Mar 2017 07:30:23 +0000 (07:30 +0000)
If the worker fails, it no longer has pages to release and can be
immediately removed from the invalidate-tree.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170307205851.32578-1-chris@chris-wilson.co.uk
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
drivers/gpu/drm/i915/i915_gem_userptr.c

index 22b46398831e09653b7d4621da08cdc1ff03a109..6ef05d5b884db3748b2662098864fe41f711670e 100644 (file)
@@ -541,6 +541,8 @@ __i915_gem_userptr_get_pages_worker(struct work_struct *_work)
                }
 
                obj->userptr.work = ERR_CAST(pages);
+               if (IS_ERR(pages))
+                       __i915_gem_userptr_set_active(obj, false);
        }
        mutex_unlock(&obj->mm.lock);