Xorg freeze / hang / process D-state with kernel 5.10.1+
This issue has now occured twice after upgrading to kernel 5.10.4 from 5.9. On first occasion, it occured less than 24 hours after boot, on second occurance uptime was over 4 days.
Symptoms are as follows: Xorg suddenly "froze", except for mouse cursor, which moved normally but no UI element reacted to clicks etc. Otherwise the screen was not updating anymore. Keyboard was not doing anything, including VT switch ctrl+alt+Fx not working, keyboard LED states not changing either.
Attempting to SSH into the machine works, so it's not a total system freeze. Xorg process was in "D" uninterruptible sleep state. Doing "openvt -l -ls" changed the active VT and keyboard input there works .. this lasts until some process automatically switches back to Xorg's VT. This can be repeated without a problem.
There seems to be nothing of interest in syslog/dmesg nor Xorg log. Attaching anyway.
Xorg process was unkillable and attempting to attach GDB to it just "hung" with GDB waiting to attach to process, as could be expected for "D" state process. Same for strace.
In /proc//stack one can see this, however:
[<0>] rcu_barrier+0x157/0x1f0
[<0>] i915_gem_object_unbind+0x251/0x380 [i915]
[<0>] i915_gem_set_caching_ioctl+0x13f/0x160 [i915]
[<0>] drm_ioctl_kernel+0xa7/0xf0 [drm]
[<0>] drm_ioctl+0x20c/0x3c0 [drm]
[<0>] __x64_sys_ioctl+0x7f/0xb0
[<0>] do_syscall_64+0x33/0x80
[<0>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
- Linux distribution: Debian GNU/Linux bullseye/sid
- System architecture: amd64 Foreign architectures: i386
- Machine: Asus H97M-PLUS, Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
- Kernel version: 5.10.4
- Chipset: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
- Display connector(s): HDMI (2560x1440)
- Window manager: WindowMaker 0.95.9-2
- xf86-video-intel: GIT
- X server: Xorg 2:1.20.10-1
- Mesa: 20.2.6-1
- libpixman: 0.40.0-1
- libdrm version: 2.4.103-2
Unfortunately it seems that this issue is very "random", at least I have no idea how to reproduce it apart from just waiting and using the system. This practically makes bisecting impossible :(