From: Chris Wilson Date: Sun, 26 Sep 2010 21:47:46 +0000 (+0100) Subject: drm/i915: Ensure that the mode change flushing is currently uninterruptible X-Git-Tag: v2.6.37-rc1~92^2~28^2~30 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=ced270fa893735363f74bf96e0a8a05ec330d04d;p=linux.git drm/i915: Ensure that the mode change flushing is currently uninterruptible Introduced by 48b956c5, I had thought I had already fixed this. Oh well. Reported-by: Sitsofe Wheeler Signed-off-by: Chris Wilson --- diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 78282edc02ca..1025508e5916 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2858,10 +2858,17 @@ i915_gem_object_set_to_display_plane(struct drm_gem_object *obj, if (obj_priv->gtt_space == NULL) return -EINVAL; - ret = i915_gem_object_flush_gpu_write_domain(obj, pipelined); + ret = i915_gem_object_flush_gpu_write_domain(obj, true); if (ret) return ret; + /* Currently, we are always called from an non-interruptible context. */ + if (!pipelined) { + ret = i915_gem_object_wait_rendering(obj, false); + if (ret) + return ret; + } + i915_gem_object_flush_cpu_write_domain(obj); old_read_domains = obj->read_domains;