From ba15546819c31c8e257cf8c0bd9203d8e524edbf Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Tue, 29 Mar 2011 10:36:29 +0100 Subject: [PATCH] An ugly hack to keep trying the fast path --- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index b6f89f9..dd03d74 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -368,7 +368,7 @@ i915_gem_execbuffer_relocate_entry(struct drm_i915_gem_object *obj, /* We can't wait for rendering with pagefaults disabled */ if (obj->active && in_atomic()) - return -EFAULT; + return -EDEADLK; ret = i915_gem_object_set_to_gtt_domain(obj, 1); if (ret) @@ -460,7 +460,15 @@ i915_gem_execbuffer_relocate(struct drm_device *dev, */ pagefault_disable(); list_for_each_entry(obj, objects, exec_list) { +repeat: ret = i915_gem_execbuffer_relocate_object(obj, eb); + if (ret == -EDEADLK) { + pagefault_enable(); + ret = i915_gem_object_flush_gpu(obj); + pagefault_disable(); + if (ret == 0) + goto repeat; + } if (ret) break; } -- 1.7.4.1