Re: linux-next: Tree for Aug 13 [ screen corruption in graphical mode ]

From: Sedat Dilek
Date: Tue Aug 13 2013 - 13:53:32 EST


On Tue, Aug 13, 2013 at 7:13 PM, Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> wrote:
> On Tue, Aug 13, 2013 at 07:03:44PM +0200, Sedat Dilek wrote:
>> On Tue, Aug 13, 2013 at 6:37 PM, Sedat Dilek <sedat.dilek@xxxxxxxxx> wrote:
>> > On Tue, Aug 13, 2013 at 6:34 PM, Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> wrote:
>> >> On Tue, Aug 13, 2013 at 06:23:29PM +0200, Sedat Dilek wrote:
>> >>> On Tue, Aug 13, 2013 at 5:59 PM, Sedat Dilek <sedat.dilek@xxxxxxxxx> wrote:
>> >>> > I have bisected the issue on Linux v3.11-rc5 + drm-intel-nightly:
>> >>> >
>> >>> > 5456fe3882812aba251886e36fe55bfefb8e8829 is the first bad commit
>> >>> > commit 5456fe3882812aba251886e36fe55bfefb8e8829
>> >>> > Author: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
>> >>> > Date: Thu Aug 8 14:41:07 2013 +0100
>> >>> >
>> >>> > drm/i915: Allocate LLC ringbuffers from stolen
>> >>> >
>> >>> > As stolen objects now behave identically (wrt to default LLC cacheing)
>> >>> > as their normal system counterparts, we no longer have to differentiate
>> >>> > our usage for ringbuffers. So allocate them from stolen on SNB+ as well.
>> >>> >
>> >>> > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
>> >>> > Reviewed-by: Ville SyrjÃlà <ville.syrjala@xxxxxxxxxxxxxxx>
>> >>> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx>
>> >>> >
>> >>> > :040000 040000 de063a052f39095f4d2f51b49caef9f827df41e8
>> >>> > 1c819aa5501a9fcc9912a5c7c037c71b9b9e9a6b M drivers
>> >>> >
>> >>> > See also attached files!
>> >>> >
>> >>>
>> >>> With the attached revert-patch my system is OK (with my customized X stack).
>> >>
>> >> No indication of a GPU hang? I'm puzzled as to how this ends up with the
>> >> scanout being misread.
>> >>
>> >> cat /sys/kernel/debug/dri/0/i915_gem_stolen
>> >> cat /sys/kernel/debug/dri/0/i915_gem_framebuffer
>> >>
>> >> would be interesting.
>
>> Attached both outputs with GOOD and BAD (BROKEN) kernel.
>
> ggtt offset is the same for both setups, the only difference between the
> two is the location of fbcon in stolen memory.
>
> Can you please attach the output of intel_reg_dumper for good/bad? It's
> a long shot...
>
> Speaking of long shots, try this (slightly different to the earlier patch):
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index a21f935..37ad772 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -1850,6 +1850,9 @@ intel_pin_and_fence_fb_obj(struct drm_device *dev,
> BUG();
> }
>
> + if (obj->stolen && INTEL_INFO(dev)->gen >= 6)
> + alignment = 256 * 1024;
> +
> /* Note that the w/a also requires 64 PTE of padding following the
> * bo. We currently fill all unused PTE with the shadow page and so
> * we should always have valid PTE following the scanout preventing
>
>
> --

Files attached.

- Sedat -
fbcon size: 1366 x 768, depth 24, 32 bpp, refcount 2, obj ffff88010c54fe40: p g 4128KiB 77 00 0 0 0 uncached (name: 1) (pinned x 1) (display) (ggtt offset: 00080000, size: 00408000) (stolen: 00060000) (p mappable)
user size: 1366 x 768, depth 24, 32 bpp, refcount 3, obj ffff88010c54fcc0: pXg 5120KiB 36 02 -591 -591 0 uncached dirty (name: 3) (pinned x 1) (display) (fence: 0) (ggtt offset: 00488000, size: 00500000) (p mappable) (blitter ring)
fbcon size: 1366 x 768, depth 24, 32 bpp, refcount 2, obj ffff880073fca200: p g 4128KiB 77 00 0 0 0 uncached (name: 1) (pinned x 1) (display) (ggtt offset: 00080000, size: 00408000) (stolen: 00000000) (p mappable)
user size: 1366 x 768, depth 24, 32 bpp, refcount 3, obj ffff880118928b40: pXg 5120KiB 36 02 -12 -12 0 uncached dirty (name: 3) (pinned x 1) (display) (fence: 0) (ggtt offset: 00488000, size: 00500000) (p mappable) (blitter ring)
Stolen:
ffff880072c39c80: p g 128KiB 40 40 0 0 0 snooped or LLC dirty (pinned x 1) (ggtt offset: 00001000, size: 00020000) (stolen: 00000000) (p mappable)
ffff880072c39800: p g 128KiB 40 40 0 0 0 snooped or LLC dirty (pinned x 1) (ggtt offset: 00023000, size: 00020000) (stolen: 00020000) (p mappable)
ffff880072c39500: p g 128KiB 40 40 0 0 0 snooped or LLC dirty (pinned x 1) (ggtt offset: 00044000, size: 00020000) (stolen: 00040000) (p mappable)
ffff88010c54fe40: p g 4128KiB 77 00 0 0 0 uncached (name: 1) (pinned x 1) (display) (ggtt offset: 00080000, size: 00408000) (stolen: 00060000) (p mappable)
Total 4 objects, 4620288 bytes, 4620288 GTT size
Stolen:
ffff880073fca200: p g 4128KiB 77 00 0 0 0 uncached (name: 1) (pinned x 1) (display) (ggtt offset: 00080000, size: 00408000) (stolen: 00000000) (p mappable)
Total 1 objects, 4227072 bytes, 4227072 GTT size