This has apparently been a problem for a few months now, and can effect Intel and Nvidia graphics too, but AMD is the most susceptible, and Gnome on Wayland seems to trigger the issue the most. A developer of Kwin explains in a comment on the bug report what's causing it.
My “Favorite”: Pageflip Timeouts
Judging by how often I come across this issue in bug triage, if you’re reading this, chances aren’t too terrible that you’ve heard of this one already, possibly even seen it yourself in the form of
kwin_wayland_drm: Pageflip timed out! This is a bug in the amdgpu kernel driver kwin_wayland_drm: Please report this at https://gitlab.freedesktop.org/drm/amd/-/is>sues kwin_wayland_drm: With the output of 'sudo dmesg' and 'journalctl --user-unit plasma->kwin_wayland > --boot 0'
in your own system logs at some point. To be clear, this is just an example and it does not only affect amdgpu. I’ve seen the same with NVidia and Intel too, but as amdgpu’s GPU resets have been a lot less reliable in >the past, it’s been a bigger issue for them.
Basically, pageflip timeouts are when the compositor does an atomic commit through KMS, and then waits for that to complete… forever. When this happens, the kernel literally doesn’t allow the compositor to present to the screen anymore, so the screen is completely frozen forever, which is >very bad, to state the obvious.
Fixing all the individual causes of the problem hasn’t really worked out so well, and this is a bad enough situation that there should be a way out when it does happen. We discussed how to do this, and I’m happy >to report that we figured out a way forward:
- we need a new callback in KMS that tells compositors when a pageflip failed and will never arrive
- drivers need to support resetting the display-driver bits of the GPU to recover it
- if the driver entirely fails to recover in the absolute worst case, it should send a device wedged event, which tells the compositor it should try to reload the entire driver / device
To this day I still wonder why they manage to do a reliable GPU reset on Windows but not on Linux.
With every timeout there's a 90% chance that it takes the whole system with it on AMD.
Luckily I'm on Plasma and the timeouts have gotten really rare on a 7900 XTX. Most of the time my cause is exceeding the VRAM limit, which eventually causes a freeze, pretty much every time.
How do you exceed the 24 GB VRAM?
ollama, ComfyUI, vLLM, opensplat, and nerfstudio can exceed 24 GB VRAM fairly easily. Memory leaks in games are also sometimes an issue.
If this is the same bug I've been encountering, then the fix is to ssh in from another machine and restart gdm3. No restart necessary.