[Intel-gfx] [PATCH 1/2] drm/i915: Mark uneven memory banks on gen4 desktop as unknown swizzling

Daniel Vetter daniel at ffwll.ch
Wed Nov 18 08:46:38 PST 2015


On Tue, Nov 17, 2015 at 10:40:51AM +0000, Chris Wilson wrote:
> We have varied reports of swizzling corruption on gen4 desktop, and
> confirmation that it is triggered by uneven memory banks. The
> implication is that the swizzling various between the paired channels
> and the remainder of memory on the single channel. As the object then
> has unpredictable swizzling (it will vary depending on exact page
> allocation and may even change during the object's lifetime as the pages
> are replaced), we have to report to userspace that the swizzling is
> unknown.
> 
> Reported-by: Matti Hämäläinen <ccr at tnsp.org>
> References: https://bugs.freedesktop.org/show_bug.cgi?id=90725
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Matti Hämäläinen <ccr at tnsp.org>
> Cc: stable at vger.kernel.org
> ---
>  drivers/gpu/drm/i915/i915_gem_fence.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_fence.c b/drivers/gpu/drm/i915/i915_gem_fence.c
> index 40a10b25956c..6ba68083aa95 100644
> --- a/drivers/gpu/drm/i915/i915_gem_fence.c
> +++ b/drivers/gpu/drm/i915/i915_gem_fence.c
> @@ -677,8 +677,8 @@ i915_gem_detect_bit_6_swizzle(struct drm_device *dev)
>  		 * the minimum size of a rank.
>  		 */
>  		if (I915_READ16(C0DRB3) != I915_READ16(C1DRB3)) {
> -			swizzle_x = I915_BIT_6_SWIZZLE_NONE;
> -			swizzle_y = I915_BIT_6_SWIZZLE_NONE;
> +			swizzle_x = I915_BIT_6_SWIZZLE_UNKNOWN;
> +			swizzle_y = I915_BIT_6_SWIZZLE_UNKNOWN;

Existing userspace goes boom if we hand it _UNKNOWN as the swizzle type.
We need the same lie as with L-shaped on g4x and only set the quirk, so
that phys_swizzle_mode is _UNKOWN. See

commit 5eb3e5a5e11d14f9deb2a4b83555443b69ab9940
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sun Jun 28 09:19:26 2015 +0100

    drm/i915: Declare the swizzling unknown for L-shaped configurations

So if you keep the swizzle put add the

	dev_priv->quirks |= QUIRK_PIN_SWIZZLED_PAGES;

here instead (and drop patch 2) this looks good and gets my r-b. But
please include a reference to the above commit so we don't forget all
this.
-Daniel

>  		} else {
>  			swizzle_x = I915_BIT_6_SWIZZLE_9_10;
>  			swizzle_y = I915_BIT_6_SWIZZLE_9;
> -- 
> 2.6.2
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the Intel-gfx mailing list