Commit fe305198 authored by Daniel Vetter's avatar Daniel Vetter Committed by Eric Anholt

drm/intel: fix up set_tiling for untiled->tiled transition

Bug introduced in

commit 10ae9bd2
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Mon Feb 1 13:59:17 2010 +0100

    drm/i915: blow away userspace mappings before fence change

The problem is that when there's no fence reg assigned and the object
is mapped at a fenceable offset in the gtt, the userspace mappings won't
be torn down. Which happens on untiled->tiled transition quite often
on 4th gen and later because there fencing does not have any special
alignment constraints (as opposed to 2nd and 3rd gen on which I've tested
the original commit).

Bugzilla: http://bugs.freedesktop.org/show_bug.cgi?id=26993Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Tested-by: Eric Anholt <eric@anholt.net> (fixes OpenArena)
Signed-off-by: default avatarEric Anholt <eric@anholt.net>
parent 8956c8bb
...@@ -326,8 +326,11 @@ i915_gem_set_tiling(struct drm_device *dev, void *data, ...@@ -326,8 +326,11 @@ i915_gem_set_tiling(struct drm_device *dev, void *data,
*/ */
if (!i915_gem_object_fence_offset_ok(obj, args->tiling_mode)) if (!i915_gem_object_fence_offset_ok(obj, args->tiling_mode))
ret = i915_gem_object_unbind(obj); ret = i915_gem_object_unbind(obj);
else else if (obj_priv->fence_reg != I915_FENCE_REG_NONE)
ret = i915_gem_object_put_fence_reg(obj); ret = i915_gem_object_put_fence_reg(obj);
else
i915_gem_release_mmap(obj);
if (ret != 0) { if (ret != 0) {
WARN(ret != -ERESTARTSYS, WARN(ret != -ERESTARTSYS,
"failed to reset object for tiling switch"); "failed to reset object for tiling switch");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment