Amdgpu doesn't like DP + HDMI displays with wastly different refresh rates

Not quite sure I can even get any decent help with this one, but just wanted to share my experience, so when someone else fumbles the same way, they might find this…

Background. Was using KDE Plasma with wayland and 4 monitors (all 60Hz displays) for a year now (before used Xfce with X11 for years, and there everything was also fine) and everything was fine.

Bought new monitor yesterday. Fancy 4K 240Hz and replaced my previous 1440p monitor with the new one. Tried to set new monitor refresh rate to 240Hz > KDE shows 240 after apply, in reality nothing changed and it remained 60Hz (proof was monitor HUD which shows the actual refresh rate, which remained 60Hz; and when closed and reopened KDE “Configure display settings…” it also has went back to 60Hz on this display. Tried several times, same result. Suspected cable (which came with monitor and was rated DP 2.1 80Gbps), which should have been fine, but oh well… tried setting the monitor refresh to 120Hz. Everything froze. CTRL-ALT-F1…F12 didn’t work. Couple of monitors went black. Got the machine to reboot with REISUB. Apparently

kernel/amdgpu freaked out
aug   11 00:04:18 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:04:23 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:04:27 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:04:32 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:04:36 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:04:37 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:04:41 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:04:46 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:04:51 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:04:51 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:04:51 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:04:55 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:00 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:01 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [CRTC:87:crtc-2] flip_done timed out
aug   11 00:05:05 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:09 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:11 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [CRTC:91:crtc-3] flip_done timed out
aug   11 00:05:14 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:19 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:21 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:23 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:25 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:26 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:26 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:26 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:26 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:28 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:33 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:36 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:36 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:36 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:37 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:37 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:37 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:37 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:38 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:38 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:38 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:38 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:38 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:39 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:39 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:41 Zen kwin_wayland[1759]: kwin_wayland_drm: Atomic modeset commit failed! Permission denied
aug   11 00:05:42 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:44 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:05:47 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:52 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:05:56 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:06:01 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:06:06 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:06:10 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:06:15 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:06:20 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:06:24 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:06:26 Zen kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
aug   11 00:06:29 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
aug   11 00:06:34 Zen kernel: amdgpu 0000:2f:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000012 SMN_C2PMSG_82:0x00000005
-- Boot eb519cdd082541faab326a46dee86e79 --

After reboot (grub menu was ok) computer froze again even before allowing me to log in - no SDDM even and login window. (Thought briefly all the bad thoughts about broken new monitor and frying GPU and other options. Luckily none of it was true.) Another REISUB, but this time pulled the new monitor cable out. Success, was able to log back in. Reinserted the cable and monitor came also back and showed picture, however back to 60Hz. So I thought, maybe the GPU can’t handle this many monitors with those resolutions and refresh rates or something… well. Just for the test disconnected the 3 other monitors and put the new display to 240Hz => success, first time actually 240Hz (shown by monitor HUD and reopening KDE display settings shows still 240Hz).
Started putting cables back in one by one. Added DP-2 (1920x1080p @ 60Hz), everything was fine, DP-1 still at 240Hz. Added DP-3 (1920x1200p @ 60Hz), everything was fine and DP-1 still at 240Hz. Added finally HDMI-1 (1920x1080p @ 60Hz) and … no, HDMI-1 didn’t even come online and remained black and got the error:
aug 11 00:34:43 Zen kernel: [drm:dcn20_wait_for_blank_complete [amdgpu]] *ERROR* DC: failed to blank crtc!
but truthfully better this, than another REISUB situation :rofl:

So apparently I can’t use DP-1 display 4K @ 240Hz display + HDMI display @ 60 Hz at the same time in wayland KDE or amdgpu freaks out :rofl: Kinda unexpected, but oh well.

Thats it. Using just 3 DP monitors now and everything seems to be fine.

Ah yes, support question – if someone can help to figure out how to re-enable HDMI-1 display also without sacrificing any setting on DP displays, it would be helpful, but right now it feels like amdgpu limitation or something.

I seem to recall this is only an issue when using Wayland; and kwin; disparate refresh rates won’t work, while the same refresh rate on each monitor does

I imagine it’s only a question of time before that’s no longer an issue.

Try using X11; if this presumption is correct, then differing refresh rates should again work as expected (but, only in X11).

Cheers.


Related:

2 Likes

Omg. Celebrated too early or managed to eff something completely up while experimenting. :frowning:

Anyway current situation is much worse. Apparently I can’t even reboot or log out without crashing amdgpu, while all 3 DP monitors are attached at the same time, while it reaches SDDM.

For getting the system into desktop, I need to either:
a) unplug 4K monitor (either DP cable or power cable off)
b) unplug other 2 monitors.
Otherwise instead of SDDM screen with login fields and selections the displays remain black and system kinda freezes (except power button or REISUB).

So when I have logged in from SDDM with limited attached monitors and reached plasma desktop, then can re-attach all the monitor cables.

on top of that, if I want to get the main display to work at 240Hz, then I need to reboot the computer only with connected 4K monitor, set the refresh rate to 240 (if it wasn’t), and only then can re-attach the other DP monitors. :confused:

So right now the biggest blocker and inconvenience is SDDM. Any way to fix this?

As far as I know, I can’t even start SDDM in “wayland mode” (or “x11 mode” for that matter). It just is in X11 mode and it’s unchangeable. And it does not work there in X11 mode at all (with all monitors connected), but crashes my system.
EDIT: apparently I can. Going to try this next.

Going past SDDM, there is HDR. As far as I know X11 doesn’t support HDR at all.

I also use multiple monitors, all different brands, sizes and some with different refresh rates, some DP some HDMI and I have a similar, but most likely different, issue. My system freezes but REISUB and even pressing or holding the power button won’t work, I have to switch off the PSU entirely and wait a few seconds.

My problem is probably something different but I’ve learned a few things lately while troubleshooting.

One thought, which I’m not sure about and might give a worse outcome so beware, is getting everything to where things are working as expected, then in Settings > Appearance and Style; Colors & Themes > Login Screen (SDDM), at the top, there should be a button to “Apply Plasma Settings…” to the login screen.

I’m curious which GPU you are using, I don’t see it listed in your post. Is it the Vega 64 stated in your profile?

At first I thought maybe the HDMI backwards compatability was acting up but then I saw in Wikipedia:

" Some systems may not be able to use HDMI 2.1 because the HDMI Forum is preventing its use in open source implementations (such as Linux open source drivers). Users of those systems may need to use DisplayPort instead to access high resolutions and speeds." - HDMI Forum to AMD: No, you can’t make an open source HDMI 2.1 driver | Ars Technica

So that may be the problem. That might be my problem too. The article quoted is from February 2024 so it might be the HDMI standard people, doing things that suck.

Tried that. Sadly didn’t help a bit.
EDIT: because by default SDDM itself runs in X11 mode and this thing only works when you run both, your Plasma session and SDDM also, in Wayland mode.

Nope. That has been upgraded year ago to 7900XTX.

yeeeah, but no. :smiley: I mean I don’t have right now even HDMI cable connected to GPU for making this mess less complicated. Also the HDMI monitor, which is DELL P2314H, is like 10-11 years old, does not know anything about HDMI 2.1 :smiley:
However the current problem is with new monitor (Gigabyte Aorus FO32U2P) over DP 2.1, which I naively hoped, that “will just work” in linux (compared to HDMI 2.1 which I knew for fact didn’t work, because I also occasionally read phoronix and other linux news). It does kind of work on it’s own, but playing together with older DP and HDMI monitors apparently not so well.

Also today to my sorrow I accidentally clicked a button next to the main button on my brand new Aorus, which apparently tries to (force) resolution change from the side of the monitor (cycling through 4k, 1440p and 1080p), which in current linux environment means hardware button to freeze/crash the system :rofl:

Fixed the SDDM issue, by making SDDM run in Wayland mode

Summary

by creating the file:

/etc/sddm.conf.d/10-wayland.conf

[General]
DisplayServer=wayland
GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell

[Wayland]
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1

This is still all 3 DP displays @ 60Hz and no HDMI cable connected. BUT CAN NOW REBOOT WITHOUT PULLING CABLES! Baby steps. But something :smile_cat:
Can even plug HDMI monitor back in. But works as long as all 4 displays are running @ 60Hz.