Bug 95401

Summary: [IVB bisected] assert_scanout:531 assertion 'width == info.width && height == info.height' failed
Product: xorg Reporter: Chris Bainbridge <chris.bainbridge>
Component: Driver/intelAssignee: Chris Wilson <chris>
Status: RESOLVED FIXED QA Contact: Intel GFX Bugs mailing list <intel-gfx-bugs>
Severity: normal    
Priority: medium CC: chris.bainbridge
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
xorg-log-debugfull
none
xorg-log-glitches
none
xorg-log-34f63f28c8f3
none
sna-Fix-assert_scanout-regression.patch none

Description Chris Bainbridge 2016-05-14 13:42:53 UTC
With normal compile, Xorg starts up but mouse and keyboard are unresponsive.
With enable-debug=full compile, Xorg fails to start up:

[  1632.814] (EE) 0: /usr/bin/X (xorg_backtrace+0x56) [0x55faada9ad46]
[  1632.814] (EE) 1: /usr/lib/xorg/modules/drivers/intel_drv.so (0x7fe7834a2000+0xafd96) [0x7fe783551d96]
[  1632.814] (EE) 2: /usr/lib/xorg/modules/drivers/intel_drv.so (0x7fe7834a2000+0xaffe4) [0x7fe783551fe4]
[  1632.814] (EE) 3: /usr/lib/xorg/modules/drivers/intel_drv.so (0x7fe7834a2000+0xc9940) [0x7fe78356b940]
[  1632.814] (EE) 4: /usr/lib/xorg/modules/drivers/intel_drv.so (0x7fe7834a2000+0xc826e) [0x7fe78356a26e]
[  1632.814] (EE) 5: /usr/lib/xorg/modules/drivers/intel_drv.so (0x7fe7834a2000+0xcb2c6) [0x7fe78356d2c6]
[  1632.814] (EE) 6: /usr/lib/xorg/modules/drivers/intel_drv.so (0x7fe7834a2000+0xce47c) [0x7fe78357047c]
[  1632.814] (EE) 7: /usr/bin/X (WakeupHandler+0xaa) [0x55faad94011a]
[  1632.815] (EE) 8: /usr/bin/X (WaitForSomething+0x1c3) [0x55faada97ff3]
[  1632.815] (EE) 9: /usr/bin/X (0x55faad8e4000+0x57211) [0x55faad93b211]
[  1632.815] (EE) 10: /usr/bin/X (0x55faad8e4000+0x5b596) [0x55faad93f596]
[  1632.815] (EE) 11: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0xf5) [0x7fe787226b45]
[  1632.815] (EE) 12: /usr/bin/X (0x55faad8e4000+0x4590e) [0x55faad92990e]
[  1632.815] (EE) 
[  1632.815] (EE) 
Fatal server error:
[  1632.815] (EE) assert_scanout:531 assertion 'width == info.width && height == info.height' failed


46caee86db0fb32b16213893c79d9c1a21ed0883 is the first bad commit
commit 46caee86db0fb32b16213893c79d9c1a21ed0883
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Apr 20 21:37:35 2016 +0100

    sna: Fix reporting of errno after setcrtc failure

    As we now do more syscalls after the setcrtc, we cannot rely on errno
    storing the pertinent error code. Instead we have to save it immediately
    after the drmIoctl() and propagate that back.

    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Comment 1 Chris Bainbridge 2016-05-14 13:44:17 UTC
Created attachment 123747 [details]
xorg-log-debugfull
Comment 2 Chris Bainbridge 2016-05-14 14:21:29 UTC
btw looks like there is another issue after this one - I can't confirm it is completely independent until this issue is resolved but after reverting 46caee there are glitches which bisect to:

34bc024bf2c721f27cf17acbf8c46783d62f8d08
sna: Do not force ping-pong migration for TearFree + NoAccel

I will attach a log anyway, though it seems more likely it is a different issue.
Comment 3 Chris Bainbridge 2016-05-14 14:26:36 UTC
Created attachment 123750 [details]
xorg-log-glitches

Log from current git with 46caee reverted, problems with 34bc02
Comment 4 Chris Wilson 2016-05-16 09:17:37 UTC
I think I see the cause for the assertion failure, when switching from full-screen to single-crtc flipping - it ended up keeping the common untransformed TearFree buffer to reuse for the local transformed CRTC rendering. That should be fixed now..

The glitches I presume might be bug 95638?
Comment 5 Chris Bainbridge 2016-05-16 14:03:11 UTC
Created attachment 123784 [details]
xorg-log-34f63f28c8f3

> That should be fixed now..

The assert still occurs with latest git (34f63f28c8f3). Log attached.

> The glitches I presume might be bug 95638?

Bug #95638 - Invalid bug number?
Comment 6 Chris Bainbridge 2016-05-16 20:14:55 UTC
Created attachment 123795 [details] [review]
sna-Fix-assert_scanout-regression.patch

The issue looks like a bug in the bisected commit (the "== 0" at end of drmIoctl line was missed), this patch reverts to the previous behaviour.
Comment 7 Chris Bainbridge 2016-05-16 20:26:13 UTC
With patch applied to latest git glitches still occur. Reverting "sna: Do not force ping-pong migration for TearFree + NoAccel" fixes it.
Comment 8 Chris Wilson 2016-05-17 06:34:03 UTC
(In reply to Chris Bainbridge from comment #6)
> Created attachment 123795 [details] [review] [review]
> sna-Fix-assert_scanout-regression.patch
> 
> The issue looks like a bug in the bisected commit (the "== 0" at end of
> drmIoctl line was missed), this patch reverts to the previous behaviour.

I didn't even spot it when looking at the commit :( Thanks! The result would be that we didn't notice the modeset and used the old flip buffer (as the flips are reported after the change is in effect).

commit ab3ab412a459a95e94707a4e39a18790ee04e6e3
Author: Chris Bainbridge <chris.bainbridge@gmail.com>
Date:   Tue May 17 07:26:10 2016 +0100

    sna: Fix increment of modeset serial after applying CRTC
    
    We track how many mode sets have been made in order to detect stale
    flips (i.e. a sequence that crosses a mode change). This was broken by
    the logic inversion in setcrc in 46caee86db0f ("sna: Fix reporting of
    errno after setcrtc failure")
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=95401
    Signed-off-by: Chris Bainbridge <chris.bainbridge@gmail.com>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Comment 9 Chris Wilson 2016-05-17 07:01:33 UTC
I meant bug 95368, but not this was a different issue. Please try:


commit a508b11bde9f3119b49b3e0f652587efb9e037af
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue May 17 07:55:03 2016 +0100

    sna: Don't skip migration-to-GPU for TearFree
    
    In 46caee86db0f ("sna: Fix reporting of errno after setcrtc failure"),
    the intention was to avoid reporting a fail to migrate whilst wedged for
    a simple copy from the frontbuffer to TearFree's shadow buffer. However,
    by skipping the migration, we never flushed any dirt from the CPU buffer
    prior to doing the TearFree flip.
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=95401#c7
    References: https://bugs.freedesktop.org/show_bug.cgi?id=95414#c4
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Comment 10 Chris Bainbridge 2016-05-17 08:40:37 UTC
Both issues now fixed. Thanks.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.