DMCUB, PSR and steam deck

hallo! no help needed… just wannna share my noob misadventurez. :scream_cat:

connected an old ass 5:4 monitor from the noughties to a steam deck’s dock station via DVI-d to HDMI. was presented with a surprise:

amdgpu 0000:04:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data

(this, but x1000 times every 4 seconds!?)

among other similar errors during stage 1, stage 2 and even in the login manager (i use tuigreet btw). well, looks certainly ominous! but! DMCUB stands for the display microcontroller unit B, whatever that means, often shortened to just DMUB, because laziness.

long story short, NOT ALL monitors support PSR, which stands for panel self refresh. those who are fortunate can configure this in their BIOS (as in, disable this feature), but those who are not (or have a steam deck and wanna connect their favourite CRT…!), have to…

  boot.kernelParams = [ "amdgpu.dcdebugmask=0x10" ];

(or temporarily in GRUB, if everything’s on fire)

…which stands for display core, 0x10 of which disables the PSR (DC_DISABLE_PSR) and PSR-SU (aka PSR 2.0). and that was that, you’re sorted!!! your secondary (or perhaps already primary?) monitor will no longer bother you with your input (get it? cos it updates its buffer only when YOU do something?). a shame! and bold of them (the manufacturers? or firmware maintainers?) to assume that all monitors support PSR.

^ many relevant stuff is in there ^

but also check:

https://docs.kernel.org/gpu/amdgpu/display/dc-debug.html

https://www.kernel.org/doc/html/latest/gpu/amdgpu/driver-core.html

BUT! what about linux-firmware?

to be honest, i didnt touch it. im too lazy, see? i would rather wait for an update, but at the same tiem i am very impatient, so… perhaps if my (not mine) too-good-to-be-true quick little fix DID NOT work for you, then maybe have a look at some of the version pinning (downgrading) mentioned in the thread, and overlays, also? ha, its very easy on nixOS, btw! :smirk_cat:

yeah, this is not a nixos-specific issue, as you can see. but it is fairly new…? been out for about a year or so, yeah.

just throwing relevant threads here and there. sorry.

i could be entirely wrong but… yeah. still not sure if its linux-firmware or my monitor’s lack of PSR. or both. yknow, its amdgpu DRM, after all.

oh and btw, i DO use jovian-nixos flake for my steam deck shenanigans. perhaps it caught a flu this time. oh well.

anyway, sorry, that is all. thank you! :crazy_face:

DO correct me if im wrong anywhere!

bit of news.

um, no, the dcdebugmask didnt do anything for me…

:sob:

sry folks, shouldve mentioned this earlier, so yeah. not the end of the world or anything, but pretty annoying, haha…

BUT! something interesting is going on: THIS IS COMPLETELY RANDOM!!! this is a certified ™ FLOATING BUG! it just comes and goes. i have no idea how to debug this.

to reproduce, get a steam deck and an old 4:3 or 5:4 monitor. observe both internal and external monitor have 1 frame every 3-4 seconds.

to “FIX” this, do a full shutdown. try again and again until it is gone. that’s pretty much it. now, SOMETIMES it may be persistent, in that case one should shutdown, check cables, turn off and/or unplug the monitor and connect it again.

i was considering blocking/ignoring/disabling the EXTERNAL monitor completely in TTY… which i have no idea how to do cos it has its own config… but anyway that’d be silly, when i get DMCUB errors literally AFTER amdgpu module is initialised on stage 1. which… doesnt really tell me anything. that’s just the order of things, right? who knows. it’s probably jovian-nixos anyway…

that’s all i have…

EDIT: keeps happening if i shutdown, not reboot…?

its hard to believe, but turning off PP_GFXOFF_MASK that i had with another issue helped? neat!

EDIT: huh. well!

sometimes, when a monitor doesnt turn on (sees no signal) even though it is fully connected, restarting MAY NOT HELP. in such cases i simply unplug and plug the HDMI cable from the dock station (steam deck). however, it spits at me:

kernel: [drm:retrieve_link_cap [amdgpu]] *ERROR* retrieve_link_cap: Read DPRX feature list failed.
kernel: [drm:retrieve_link_cap [amdgpu]] *ERROR* retrieve_link_cap: Read DPRX feature list_1 failed. Addr:0x2214
kernel: amdgpu 0000:04:00.0: [drm] *ERROR* retrieve_link_cap:1936: core_link_read_dpcd (DP_FEC_CAPABILITY) failed
kernel: amdgpu 0000:04:00.0: [drm] *ERROR* No EDID read.
kernel: amdgpu 0000:04:00.0: [drm] *ERROR* dpcd_set_link_settings:1117: core_link_write_dpcd (DP_DOWNSPREAD_CTRL) failed
kernel: amdgpu 0000:04:00.0: [drm] *ERROR* dpcd_set_link_settings:1122: core_link_write_dpcd (DP_LANE_COUNT_SET) failed
kernel: amdgpu 0000:04:00.0: [drm] *ERROR* dpcd_set_link_settings:1150: core_link_write_dpcd (DP_LINK_BW_SET) failed
kernel: amdgpu 0000:04:00.0: [drm] *ERROR* dpcd_set_link_settings:1117: core_link_write_dpcd (DP_DOWNSPREAD_CTRL) failed
kernel: amdgpu 0000:04:00.0: [drm] *ERROR* dpcd_set_link_settings:1122: core_link_write_dpcd (DP_LANE_COUNT_SET) failed
kernel: amdgpu 0000:04:00.0: [drm] *ERROR* dpcd_set_link_settings:1150: core_link_write_dpcd (DP_LINK_BW_SET) failed
kernel: amdgpu 0000:04:00.0: [drm] *ERROR* dpcd_set_link_settings:1117: core_link_write_dpcd (DP_DOWNSPREAD_CTRL) failed

all within 1 second. BUT! it seems to not matter as the monitor is now fully functional :tada: