Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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=26993


Signed-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
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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))
			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);
		else
			i915_gem_release_mmap(obj);

		if (ret != 0) {
			WARN(ret != -ERESTARTSYS,
			     "failed to reset object for tiling switch");