As we cannot wait upon an object to be released by the GPU once we have
disabled pagefaults, process any pending retirements first in the hope
that we move any potential relocations off the active list.

References: https://bugs.freedesktop.org/show_bug.cgi?id=35733
Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_gem_execbuffer.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 0010aee..b6f89f9 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -445,6 +445,12 @@ i915_gem_execbuffer_relocate(struct drm_device *dev,
        struct drm_i915_gem_object *obj;
        int ret = 0;
 
+       /* Try to move as many of the relocation targets off the active list
+        * to avoid unnecessary fallbacks to the slow path, as we cannot wait
+        * for the retirement with pagefaults disabled.
+        */
+       i915_gem_retire_requests(dev);
+
        /* This is the fast path and we cannot handle a pagefault whilst
         * holding the struct mutex lest the user pass in the relocations
         * contained within a mmaped bo. For in such a case we, the page
-- 
1.7.4.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to