[Bug 111834] New: Xorg Segfault with intel driver on Intel x5-E8000 (Cherryview) hardware
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Thu Sep 26 12:58:27 UTC 2019
https://bugs.freedesktop.org/show_bug.cgi?id=111834
Bug ID: 111834
Summary: Xorg Segfault with intel driver on Intel x5-E8000
(Cherryview) hardware
Product: xorg
Version: git
Hardware: x86-64 (AMD64)
OS: Linux (All)
Status: NEW
Severity: not set
Priority: not set
Component: Driver/intel
Assignee: chris at chris-wilson.co.uk
Reporter: gottwald at igel.com
QA Contact: intel-gfx-bugs at lists.freedesktop.org
The device with the following problem is a IGEL UD2-LX50 (internal M250C) with
2 DisplayPorts (yes one is the eDP used as normal DP).
Reproducing the issue is hard because we only got the issue once with a dual
screen setup and waking up from DPMS off. The Xorg in this case was the 1.20.x
and the intel driver from current git.
We got following logs in Xorg.0.log:
[1725899.564] (EE)
[1725899.564] (EE) Backtrace:
[1725899.599] (EE) 0: /usr/lib/xorg/Xorg (xorg_backtrace+0x4e) [0x597dbe]
[1725899.599] (EE) 1: /usr/lib/xorg/Xorg (0x400000+0x19bb29) [0x59bb29]
[1725899.599] (EE) 2: /lib/x86_64-linux-gnu/libpthread.so.0
(0x7f83f5938000+0x12890) [0x7f83f594a890]
[1725899.599] (EE) 3: /usr/lib/xorg/Xorg (0x400000+0xba104) [0x4ba104]
[1725899.600] (EE) 4: /usr/lib/xorg/Xorg (0x400000+0x118808) [0x518808]
[1725899.600] (EE) 5: /usr/lib/xorg/Xorg (FreeCursor+0x71) [0x42a8f1]
[1725899.600] (EE) 6: /usr/lib/xorg/modules/drivers/intel_drv.so
(0x7f83f2a91000+0x6d7c3) [0x7f83f2afe7c3]
[1725899.600] (EE) 7: /usr/lib/xorg/modules/drivers/intel_drv.so
(0x7f83f2a91000+0x6f7ff) [0x7f83f2b007ff]
[1725899.600] (EE) 8: /usr/lib/xorg/modules/drivers/intel_drv.so
(0x7f83f2a91000+0x75114) [0x7f83f2b06114]
[1725899.600] (EE) 9: /usr/lib/xorg/modules/drivers/intel_drv.so
(0x7f83f2a91000+0x7b793) [0x7f83f2b0c793]
[1725899.600] (EE) 10: /usr/lib/xorg/Xorg (0x400000+0x7759d) [0x47759d]
[1725899.600] (EE) 11: /usr/lib/xorg/Xorg (DPMSSet+0x76) [0x477886]
[1725899.600] (EE) 12: /usr/lib/xorg/Xorg (mieqProcessInputEvents+0x166)
[0x57a866]
[1725899.600] (EE) 13: /usr/lib/xorg/Xorg (ProcessInputEvents+0x19) [0x477c59]
[1725899.600] (EE) 14: /usr/lib/xorg/Xorg (0x400000+0x36e37) [0x436e37]
[1725899.600] (EE) 15: /usr/lib/xorg/Xorg (0x400000+0x3b148) [0x43b148]
[1725899.600] (EE) 16: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0xe7)
[0x7f83f5568b97]
[1725899.600] (EE) 17: /usr/lib/xorg/Xorg (_start+0x29) [0x425099]
[1725899.601] (EE)
[1725899.601] (EE) Segmentation fault at address 0x18
[1725899.601] (EE)
Fatal server error:
[1725899.601] (EE) Caught signal 11 (Segmentation fault). Server aborting
[1725899.601] (EE)
[1725899.601] (EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
[1725899.601] (EE) Please also check the log file at "/var/log/Xorg.0.log" for
additional information.
[1725899.601] (EE)
[1725899.601] (II) AIGLX: Suspending AIGLX clients for VT switch
[1725899.712] (EE) Server terminated with error (1). Closing log file.
Which remembered us of the Cherryview issues with hardware cursors:
Small part from i915 Kernel driver which means if you are unlucky and move your
mouse cursor to the left screen border you will lose the hardware cursor. Which
was a bigger problem as the Intel driver was then stuck with the software
cursor.
/*
* There's something wrong with the cursor on CHV pipe C.
* If it straddles the left edge of the screen then
* moving it away from the edge or disabling it often
* results in a pipe underrun, and often that can lead to
* dead pipe (constant underrun reported, and it scans
* out just a solid color). To recover from that, the
* display power well must be turned off and on again.
* Refuse the put the cursor into that compromised position.
*/
if (IS_CHERRYVIEW(dev_priv) && pipe == PIPE_C &&
plane_state->base.visible && plane_state->base.crtc_x < 0) {
DRM_DEBUG_KMS("CHV cursor C not allowed to straddle the left screen
edge\n");
return -EINVAL;
}
The commit below helped as the cursor will switch back to hardware cursor
https://cgit.freedesktop.org/xorg/driver/xf86-video-intel/commit/?id=6afed33b2d673d88674f0c76efe500ae414e8e1b
But the above commit leads to new problems as one can see in the log. As we
already did some debugging before we digged a little bit deeper which wasn't
really hard with the FreeCursor mentioned in the logs.
The following is the fix we added in our builds and up to now no crash was
reported after this change:
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -6428,8 +6428,10 @@ static void restore_swcursor(struct sna
sna->cursor.info->HideCursor(sna->scrn);
/* XXX Force the cursor to be restored (avoiding recursion) */
- FreeCursor(sna->cursor.ref, None);
- sna->cursor.ref = NULL;
+ if (sna->cursor.ref) {
+ FreeCursor(sna->cursor.ref, None);
+ sna->cursor.ref = NULL;
+ }
RegisterBlockAndWakeupHandlers((void *)__restore_swcursor,
(void *)NoopDDA,
There are 2 other places where FreeCursor is called (there it is protected by
the if (sna->cursor.ref) {) and we think that this will fix the problem. The
issue seems to be a timing thing going out of DPMS with a mouse move and switch
from Software to Hardware Cursor at the same time and then call FreeCursor with
a NULL pointer. It is not fully clear this is really the solution as the
problem was only seen once with logfiles available. We have customers reporting
similar issues but with no Logs available. Most of them switched to the
modesetting driver which is also not really trouble free
(https://gitlab.freedesktop.org/xorg/xserver/issues/880 and
https://gitlab.freedesktop.org/xorg/xserver/issues/881) but seems more stable
(no further reports after switch to it).
--
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-gfx-bugs/attachments/20190926/3c55d342/attachment.html>
More information about the intel-gfx-bugs
mailing list