aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-04-14 04:55:51 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-04-18 04:48:38 -0400
commit7b09638f45379fd1f8cbcb0a95ea2b11f0c8b850 (patch)
tree408518ff3565fb68cacc9ca137d2dc7bd28f577b
parent3bf3f452362841404fe6d4589883f9471842ef8b (diff)
drm/i915: Always flush tiling changes before accessing through the GTT
As we defer updating the fence register from set-tiling to the point of use, we need to declare every access through the GTT as either fenced or unfenced. This patches fixes an old bug in the execbuffer relocation processing which could conceivably be hit by a pathological userspace. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/i915_gem_execbuffer.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 2a24d0cd9b46..1a0d54f278c4 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -381,7 +381,11 @@ i915_gem_execbuffer_relocate_entry(struct drm_i915_gem_object *obj,
381 uint32_t __iomem *reloc_entry; 381 uint32_t __iomem *reloc_entry;
382 void __iomem *reloc_page; 382 void __iomem *reloc_page;
383 383
384 ret = i915_gem_object_set_to_gtt_domain(obj, 1); 384 ret = i915_gem_object_set_to_gtt_domain(obj, true);
385 if (ret)
386 return ret;
387
388 ret = i915_gem_object_put_fence(obj);
385 if (ret) 389 if (ret)
386 return ret; 390 return ret;
387 391