diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2017-06-16 15:05:22 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2017-06-16 16:54:05 +0100 |
commit | 8a2421bd0d9abb3a599969d88e1910a2a101eccc (patch) | |
tree | fd2db96cb0fce9879162d03381dbf50562140baa /drivers/gpu/drm/i915/i915_gem_execbuffer.c | |
parent | 616d9cee4fdc4a377c03be8fd6efa5df4fcd0d81 (diff) | |
download | op-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.c | 3 |
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); |