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

Reply via email to