After encountering this for the 1,000th time I asked Claude to debug the problem. It did a markedly better job than I did and found a workaround, which I added as a wakeup-from-suspend hook. I’m uploading it here in case it helps. Please let’s not turn this into a political argument.
Workaround: this will turn the display back on.
sudo chvt 2 && sleep 2 && sudo chvt 1
LLM bug report:
Black screen after resume from suspend — kwin_wayland “Pageflip timed out (nvidia-drm)” with Plasma 6 / Wayland
Summary
On a desktop RTX 4080 SUPER (NVIDIA open kernel module 580.159.03, KDE Plasma 6
Wayland under SDDM), the display stays black after resuming from suspend (S3).
The GPU itself comes back fine (nvidia-smi works, the HDMI connector reads
connected/enabled), but kwin_wayland cannot complete a single atomic
pageflip and logs the timeout continuously (~1/sec) until manually recovered.
The failure recurs on multiple independent resume cycles (logged on Jun 22, 23,
24 and 30), so it is reproducible rather than a one-off.
The black screen is recoverable without rebooting by forcing a VT handoff:
sudo chvt 2 && sleep 2 && sudo chvt 1, which makes kwin re-acquire DRM master
and re-do the modeset. This strongly suggests a DRM-master / modeset-restore
problem on resume rather than a dead GPU.
Hardware / software
- GPU: NVIDIA GeForce RTX 4080 SUPER (AD103) [10de:2702], PCI 0000:01:00.0
- Driver: NVIDIA UNIX Open Kernel Module 580.159.03 (CUDA 13.0)
- Kernel: 6.17.0-23-generic (Ubuntu 26.04 LTS)
- Desktop: KDE Plasma 6, Wayland session (
kwin_wayland), display manager SDDM
- Suspend type: S3 (deep),
PM: suspend entry (deep)
- NVIDIA power-management config (already at recommended settings):
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var
options nvidia-drm modeset=1
nvidia-suspend/resume/hibernate.service all enabled
Symptom (kwin journal, repeats ~1/sec from resume onward)
kwin_wayland_drm: Atomic modeset test failed! Permission denied
kwin_wayland_drm: Pageflip timed out! This is a bug in the nvidia-drm kernel driver
kwin_core: Failed to open /dev/dri/renderD128 device (No such device)
kwin_wayland_drm: Failed to open drm device /dev/dri/renderD128
632 Pageflip timed out lines in the affected boot. renderD128 exists again
shortly after resume (the “No such device” is transient during the resume
window), yet pageflips keep timing out.
State during the failure
nvidia-smi: GPU alive, idle (P8, ~31C) — GPU is NOT crashed.
- DRM connector
card1-HDMI-A-1: status=connected enabled=enabled.
/dev/dri/renderD128 (DRIVER=nvidia, PCI 0000:01:00.0) present.
- Active VT = tty1 (the Plasma Wayland session).
- A lingering SDDM X11 greeter is still running on tty2:
/usr/lib/xorg/Xorg ... -seat seat0 vt2 -auth /run/sddm/xauth_...
i.e. an Xorg process holding the GPU on a different VT. The kwin
Atomic modeset test failed! Permission denied (EACCES) is consistent with
kwin failing to (re)acquire DRM master after resume while that Xorg exists.
Reproduction
- Boot into KDE Plasma 6 Wayland (SDDM, default X11 greeter) on the NVIDIA driver.
- Suspend (S3) and leave suspended.
- Resume.
- Display stays black; kwin logs the pageflip-timeout loop above.
Workaround
sudo chvt 2 && sleep 2 && sudo chvt 1 restores the display immediately
(no reboot, session preserved).
Open question for triage
Is the root cause (a) nvidia-drm failing to restore the modeset/pageflip engine
on resume, or (b) the DRM-master contention introduced by SDDM’s lingering X11
greeter on a second VT, or both? The Permission denied on the atomic modeset
test points at a master-ownership issue; the Pageflip timed out points at the
driver. Logs for both are attached.
Attached logs
00-system-summary.txt — OS/GPU/driver/config
01-drm-master-conflict.txt — VT, processes holding the GPU, connectors
02-kwin-pageflip-timeout.log — full kwin journal (journalctl --user-unit plasma-kwin_wayland -b 0)
02b-kwin-condensed.txt — key lines + repeat count
03-resume-sequence.log — system journal across the resume
03b-pm-transitions.log — suspend/resume PM transitions
04-dmesg.log — kernel ring buffer (run collect-kernel-logs.sh with sudo to generate)
nvidia-bug-report.log.gz — NVIDIA’s official bundle (generated by the same script)
01-drm-master-conflict.txt (1.2 KB)
00-system-summary.txt (1.4 KB)
03b-pm-transitions.log (1.2 KB)
03-resume-sequence.log (88.0 KB)
02b-kwin-condensed.txt (1.8 KB)
02-kwin-pageflip-timeout.log (309.8 KB)
nvidia-bug-report.log.gz (748.9 KB)
BUG-REPORT.txt (4.0 KB)