]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: fix corruptions on i8xx due to relaxed fencing
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 22 Feb 2011 17:25:49 +0000 (18:25 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 24 Feb 2011 00:33:49 +0000 (00:33 +0000)
commit94ca0ee25b3d3da6515c8b1e889b66a6bda269fe
tree3adb50528eb95cb0c7df47b0231f1a3b2ee60b5e
parent666582b489267d02216fce5f990926506ceab5be
drm/i915: fix corruptions on i8xx due to relaxed fencing

It looks like gen2 has a peculiar interleaved 2-row inter-tile
layout. Probably inherited from i81x which had 2kb tiles (which
naturally fit an even-number-of-tile-rows scheme to fit onto 4kb
pages). There is no other mention of this in any docs (also not
in the Intel internal documention according to Chris Wilson).

Problem manifests itself in corruptions in the second half of the
last tile row (if the bo has an odd number of tiles). Which can
only happen with relaxed tiling (introduced in c128445b8f4a58316ccb).

So reject set_tiling calls that don't satisfy this constrain to
prevent broken userspace from causing havoc. While at it, also
check the size for newer chipsets.

LKML: https://lkml.org/lkml/2011/2/19/5
Reported-by: Indan Zupancic <indan@nul.nu>
Tested-by: Indan Zupancic <indan@nul.nu>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_gem_tiling.c