Created attachment 122506 [details]
dmesg and Xorg.0.log
I am a Gentoo user and have the exact same problem as a Debian user which he describes at . His words:
"The mouse pointer simply disappears when I want to log into the system after
locking the screen. After restarting the Xserver, everything backs to normal,
but when I lock the screen again, I won't see the pointer after login. I'm
using lightdm as DM.
I can get the mouse pointer back also when I switch to TTY using ctl-alt-f1 and
then to xsession via ctrl-alt-f7."
The issue appeared between 1.18.1 and 1.18.2, so I bisected. Reverting commit b04767c84deafc44993723add4b1c5163fc11711 by Michel Dänzer solves this particular issue.
Does this also happen using the modesetting driver instead of the intel driver?
(In reply to Michel Dänzer from comment #1)
> Does this also happen using the modesetting driver instead of the intel
Good catch. I tried and it does not happen with the modesetting driver.
First machine I looked at worked fine. Could you please run xf86-video-intel/tools/cursor and cat /sys/kernel/debug/dri/0/i915_display_info when the cursor is invisible coming back from screenlock?
Created attachment 122577 [details]
This is a cat of /sys/kernel/debug/dri/0/i915_display_info when the cursor is invisible. The before and after screenlock diff is this:
--- before 2016-03-26 11:12:18.744047285 -0600
+++ after 2016-03-26 11:13:28.722867306 -0600
@@ -6,11 +6,11 @@
fb: 50, pos: 0x0, size: 1280x800
encoder 26: type: LVDS-26, connectors:
connector 25: type: LVDS-1, status: connected, mode:
- id 0:"1280x800" freq 60 clock 82060 hdisp 1280 hss 1332 hse 1396 htot 1672 vdisp 800 vss 803 vse 806 vtot 818 type 0x48 flags 0xa
- cursor visible? yes, position (365, 188), size 64x64, addr 0x00816000, active? yes
+ id 0:"1280x800" freq 60 clock 82060 hdisp 1280 hss 1332 hse 1396 htot 1672 vdisp 800 vss 803 vse 806 vtot 818 type 0x0 flags 0xa
+ cursor visible? no, position (0, 0), size 0x0, addr 0x00000000, active? no
No scalers available on this platform
--Plane id 22: type=PRI, crtc_pos= 0x 0, crtc_size=1280x 800, src_pos=0.0000x0.0000, src_size=1280.0000x800.0000, format=XR24 little-endian (0x34325258), rotation=0 (0x00000001)
- --Plane id 23: type=CUR, crtc_pos= 365x 188, crtc_size= 64x 64, src_pos=0.0000x0.0000, src_size=64.0000x64.0000, format=AR24 little-endian (0x34325241), rotation=0 (0x00000001)
+ --Plane id 23: type=CUR, crtc_pos= 0x 0, crtc_size= 0x 0, src_pos=0.0000x0.0000, src_size=0.0000x0.0000, format=N/A, rotation=0 (0x00000001)
underrun reporting: cpu=yes pch=no
Created attachment 123068 [details]
To add to the previous comment, running xf86-video-intel/tools/cursor when the pointer is invisible prints a correct pointer image and dimensions.
For reference: duplicate bug #95132
*** Bug 95132 has been marked as a duplicate of this bug. ***
I'm seeing this too with XUbuntu 16.04. Here's a potential downstream bug https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/1568604 .
I'm affected by this bug and I'm trying to figure out if there's anything I can do to help get it fixed. For example, I see the cursor-related functions in sna_display.c already have a fair amount of debug logging. Would it help if I compiled the Intel driver with --enable-debug=full and then captured the log while the bug was occurring?
(In reply to Tim Starling from comment #9)
> I'm affected by this bug and I'm trying to figure out if there's anything I
> can do to help get it fixed.
This bug is already fixed (at least for me). It went away simply by upgrading my Arch Linux installation. But I cannot say for sure which package was the culprit.
I looked into this with gdb, with the stock packages from Ubuntu 16.04 since I have a reliable reproduction with that version. Specifically, xserver-xorg-core 2:1.18.3-1ubuntu2.3 and xserver-xorg-video-intel 2:2.99.917+git20160325-1ubuntu1.
The cursor is actually restored successfully after unlock, but then it disappears again when sna_mode_disable_secondary_planes() is called, specifically during the LOCAL_IOCTL_MODE_SETPLANE ioctl.
After this, there is no chance of the cursor being restored, since sna_crtc->cursor remains non-null, so further attempts to restore it hit the "skipping cursor already show on CRTC" case.
So, there's a good chance this bug was fixed by f1c757e4518f6835bbff6c940269a5c6be75f202, since the commit message claims to modify sna_mode_disable_secondary_planes() to "ignore the secondary cursor planes".
Confirmed by patching the xserver-xorg-video-intel package source with that commit and also its dependency 00a3adaf43640b9aaa84b8cb98c1f2f227686689 "sna: Record all sprite planes reported by the kernel".