summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/i915_gem_execbuffer.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-04-14 09:55:51 +0100
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-04-18 10:48:38 +0200
commit7b09638f45379fd1f8cbcb0a95ea2b11f0c8b850 (patch)
tree408518ff3565fb68cacc9ca137d2dc7bd28f577b /drivers/gpu/drm/i915/i915_gem_execbuffer.c
parent3bf3f452362841404fe6d4589883f9471842ef8b (diff)
downloadlinux-3.10-7b09638f45379fd1f8cbcb0a95ea2b11f0c8b850.tar.gz
linux-3.10-7b09638f45379fd1f8cbcb0a95ea2b11f0c8b850.tar.bz2
linux-3.10-7b09638f45379fd1f8cbcb0a95ea2b11f0c8b850.zip
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>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_execbuffer.c')
-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 2a24d0cd9b4..1a0d54f278c 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,
uint32_t __iomem *reloc_entry;
void __iomem *reloc_page;
- ret = i915_gem_object_set_to_gtt_domain(obj, 1);
+ ret = i915_gem_object_set_to_gtt_domain(obj, true);
+ if (ret)
+ return ret;
+
+ ret = i915_gem_object_put_fence(obj);
if (ret)
return ret;