summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_gem_execbuffer.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2017-06-16 15:05:22 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2017-06-16 16:54:05 +0100
commit8a2421bd0d9abb3a599969d88e1910a2a101eccc (patch)
treefd2db96cb0fce9879162d03381dbf50562140baa /drivers/gpu/drm/i915/i915_gem_execbuffer.c
parent616d9cee4fdc4a377c03be8fd6efa5df4fcd0d81 (diff)
downloadop-kernel-dev-8a2421bd0d9abb3a599969d88e1910a2a101eccc.zip
op-kernel-dev-8a2421bd0d9abb3a599969d88e1910a2a101eccc.tar.gz
drm/i915: Wait upon userptr get-user-pages within execbuffer
This simply hides the EAGAIN caused by userptr when userspace causes resource contention. However, it is quite beneficial with highly contended userptr users as we avoid repeating the setup costs and kernel-user context switches. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: MichaƂ Winiarski <michal.winiarski@intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_execbuffer.c')
-rw-r--r--drivers/gpu/drm/i915/i915_gem_execbuffer.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 3eaf07d..f4b02ef 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -1499,6 +1499,9 @@ repeat:
goto out;
}
+ /* A frequent cause for EAGAIN are currently unavailable client pages */
+ flush_workqueue(eb->i915->mm.userptr_wq);
+
err = i915_mutex_lock_interruptible(dev);
if (err) {
mutex_lock(&dev->struct_mutex);
OpenPOWER on IntegriCloud