On 6/25/26 3:15 PM, Ivan Lipski wrote:
> I don't think I've encountered a situation when a monitor with DP can
> wake a system up from DPMS, so that's interesting. What distro and
> desktop environment are you using? I'd like to reproduce this issue
> and help with it.
openSUSE Tumbleweed, KDE Plasma 6.7 on Wayland (KWin). GPU is an RX 9070
XT (RDNA4), monitor is an MSI MPG 274U over DisplayPort SST.
What happens: when the output goes DPMS-off and the monitor drops into
deep sleep, it briefly de-asserts and re-asserts HPD. amdgpu forwards
that as a hotplug, KWin re-probes and re-enables the output, and the
panel comes right back on, so it never actually stays asleep while
connected.
I suspect the monitor's input auto-scan plays a part, but disabling
auto-scan on the monitor did not stop the HPD toggle, so it looks like
panel-side behavior on entering deep sleep rather than something the
user can turn off.
To watch it, enable drm logging:
echo 0x16 > /sys/module/drm/parameters/debug
then force DPMS-off on the DP output (kscreen-doctor --dpms off, or just
let it idle). On the stock driver you get a link_set_dpms_off quickly
followed by a spurious detect and a link_set_dpms_on. With the debounce
set, the toggle is coalesced and it stays off.
I am happy to send the monitor's EDID and a full drm.debug trace
off-list if that helps. Its EDID identifies as manufacturer MSI, product
code 0x3CF0, i.e. drm_edid_encode_panel_id('M', 'S', 'I', 0x3CF0) for
the apply_edid_quirks() switch.
> I think generalizing the hpd_debounce_delay for both DP and HDMI would
> be better.
If you're open to it, I will fold it into a single hpd_debounce_delay_ms
that applies to both HDMI and DP SST (eDP and MST still excluded), and
rename the internal hdmi_* field, work, and prev_sink to generic hpd_*
while I am there.
One question on the existing knob: hdmi_hpd_debounce_delay_ms already
shipped. Would you rather I keep it as a back-compat alias of the
generic one, or just replace it since it is only a couple of cycles old?
I will go with whichever you prefer.
> Maybe we can also enable hpd_debounce_delay by default for monitors,
> that are known to have this issue, using apply_edid_quirks
I like that. It could make it work out of the box instead of needing a
module param. I can add an apply_edid_quirks() case for the MSI MPG 274U
(panel id above) that sets a sane default, and keep the module param as
a global override. 1500 ms is what reliably works in the testing I've
done, but I can tune that down if you want a smaller default.
Thanks for the quick and helpful review.
--
Nick Haghiri