[drm] *ERROR* mstb 0000000057b5b857 port 1: DPCD read on addr 0x4b0 for 1 bytes NAKed

Jocelyn Falempe jfalempe at redhat.com
Wed Feb 16 14:39:34 UTC 2022


Hi,

When using a Lenovo dock, I often get this error message on dmesg:

[drm] *ERROR* mstb 0000000057b5b857 port 1: DPCD read on addr 0x4b0 for 
1 bytes NAKed

It's caused by fwupd which tries to read from /dev/drm_dp_aux4

I opened an issue on fwupd:
https://github.com/fwupd/fwupd/issues/4284

But it turns out, it's probably an issue in the drm mst code instead.

When I connect my Dock (Lenovo Thinkpad Thunderbold 3 Gen 2), I get 3 
drm_dp_aux[] created:

/dev/drm_dp_aux[456]

Reading from this devices at any address will always get the NAKed error 
above, unless there is an actual DP monitor connected (HDMI monitor or 
nothing connected gives a NAK)

Each time I connect or disconnect a monitor on the dock, this 3 
/dev/drm_dp_aux[] are destroyed and recreated.

So I think the device /dev/drm_dp_aux[] should be created only if there 
is an actual monitor connected that can reply to it.
What's the purpose of providing userspace a device which can't be read 
or written ? (or maybe just fail the open() call, like Mario suggested 
on the fwupd issue, so the devices are still there with the same numbering)

On the other hand, we can also consider that it's expected to get NAck 
in drm_dp_send_dpcd_read() and replace drm_err() with drm_dbg()

what do you think ?

-- 

Jocelyn



More information about the dri-devel mailing list