| Summary: | Regression: HDMI signal lost on EDID change | ||
|---|---|---|---|
| Product: | [Plasma] kwin | Reporter: | jakub |
| Component: | output configuration | Assignee: | KWin default assignee <kwin-bugs-null> |
| Status: | RESOLVED UPSTREAM | ||
| Severity: | normal | CC: | nate, xaver.hugl |
| Priority: | NOR | ||
| Version First Reported In: | 6.4.2 | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | 6.5.0 | |
| Sentry Crash Report: | |||
| Attachments: |
dmesg -w compressed with zstd
journalctl --merge -f --no-hostname drm_info while outputting valid signal drm_info while display sees no signal |
||
|
Description
jakub
2025-07-05 19:28:39 UTC
Does this problem still happen to you with latest Plasma and drivers? If so, we'll need more detailed information from the driver side. Please follow https://invent.kde.org/plasma/kwin/-/wikis/Debugging/Debugging-DRM-issues to get a drm debug log of the problem. Still happening on 6.4.5, kernel 6.17. Do you need me to run a debug build of KWin as well, or just enable DRM logs and save a snapshot covering this issue happening?
I get these "atomic modeset failed" errors for other reasons too, like switching between my HDMI outputs with a kscreen-doctor command.
My workaround helps most of the time by restarting everything, it's just a KWin script doing this:
print("Started plasmashell-fix watcher script")
let restarted = false;
const x = new QTimer()
const y = new QTimer()
x.timeout.connect(function() {
print("timeout")
callDBus(
"org.freedesktop.systemd1",
"/org/freedesktop/systemd1",
"org.freedesktop.systemd1.Manager",
"RestartUnit",
"plasma-plasmashell.service",
"replace",
reply => {
print(reply)
restarted = true;
y.start(5000);
}
);
})
x.singleShot = true
y.timeout.connect(function() {
print("restarted=false on a timer");
restarted = false;
});
y.singleShot = true;
workspace.windowRemoved.connect(function(client) {
print(`DEBUG: windowRemoved - resourceClass: ${client.resourceClass}, dock? ${JSON.stringify(client.dock)}`);
if (client.resourceClass === "plasmashell" && client.dock) {
print("plasmashell dock disappeared")
if (restarted) {
print("ignoring this since we are post-restart");
restarted = false;
} else {
x.start(3000);
}
}
})
Release build of KWin is fine, I just need to take a look at the drm logs to find out why it can't enable the screen I can't seem to reproduce anymore on 6.5.0, nvidia 580.95.05 and kernel 6.17.5. I will run with DRM debugging for a while, see if I can trigger it: sudo dmesg -w | zstd -fo drm-debug.log.zst Thus far, I've tried a bunch of EDID changes by toggling VRR, and changing between HDMI displays with kscreen-doctor - it all seems to be working great Good news! Created attachment 186256 [details]
dmesg -w compressed with zstd
OK I was able to reproduce.
-- This is where the log starts
I was on HDMI-A-2 output exclusively, then switched that display's settings to enable VRR, which changes EDID. The screen's gone black and the display started showing No Signal.
I then used Meta+P to switch to my HDMI-A-1 output exclusively, then back again to my HDMI-A-2 at which point I had the video signal and VRR enabled.
-- This is where the logs stop
Here's me disabling VRR on HDMI-A-2, the minimal repro I can build:
$ systemd-cat bscpylgtvcommand 192.168.4.52 set_other_settings '{"gameOptimization":"off"}'
Oct 28 15:54:52 .bscpylgtvcomma[344768]: {'returnValue': True}
Oct 28 15:54:53 kwin_wayland[2815]: Atomic modeset test failed! Invalid argument
Oct 28 15:54:53 kwin_wayland[2815]: Atomic modeset test failed! Invalid argument
Oct 28 15:54:53 kded6[3250]: xsettingsd: Reloading configuration
Oct 28 15:54:53 kded6[3250]: xsettingsd: Loaded 16 settings from /home/kuba/.config/xsettingsd/xsettingsd.conf
Oct 28 15:54:54 kded6[3250]: xsettingsd: Reloading configuration
Oct 28 15:54:54 kded6[3250]: xsettingsd: Loaded 16 settings from /home/kuba/.config/xsettingsd/xsettingsd.conf
Oct 28 15:54:54 ksecretd[2723]: There are no outputs - creating placeholder screen
Oct 28 15:54:54 kded6[2893]: There are no outputs - creating placeholder screen
Oct 28 15:54:54 kstart[2918]: There are no outputs - creating placeholder screen
Oct 28 15:54:54 polkit-kde-authentication-agent-1[2945]: There are no outputs - creating placeholder screen
Oct 28 15:54:54 kwalletmanager5[3811]: There are no outputs - creating placeholder screen
Oct 28 15:54:54 kwalletd6[3597]: There are no outputs - creating placeholder screen
Oct 28 15:54:54 krunner[163821]: There are no outputs - creating placeholder screen
Oct 28 15:54:54 xdg-desktop-portal-kde[3145]: There are no outputs - creating placeholder screen
Created attachment 186260 [details]
journalctl --merge -f --no-hostname
Here's me enabling VRR on HDMI-A-2 with `systemd-cat bscpylgtvcommand 192.168.4.52 set_other_settings '{"gameOptimization":"on"}'` and a few seconds of journalctl after that
Hmm, the debug log shows the display as working fine... maybe the "Atomic modeset test failed" warning is a bit of a red herring here and it finds a "working" config afterwards. Please attach the output of drm_info when the display isn't working, it should allow us to make sure. Created attachment 186264 [details]
drm_info while outputting valid signal
Is this useful?
$ drm_info > /tmp/drm_info-good
$ bscpylgtvcommand 192.168.4.52 set_other_settings '{"gameOptimization":"on"}' && sleep 4 && drm_info > /tmp/drm_info-bad
Created attachment 186265 [details]
drm_info while display sees no signal
Yeah. The kernel driver claims the display is enabled in both cases - as far as KWin is concerned, it's working correctly, so this will have to be fixed on the driver side. You can report this at https://github.com/NVIDIA/open-gpu-kernel-modules/issues if you're using the open kernel modules, and https://forums.developer.nvidia.com/c/gpu-graphics/linux if not. It would be good if you provide NVidia developers with the drm_info files as well. Thanks, I'll do that. And I'll test with open GPU modules as well, I hadn't thought of that before |