]> www.infradead.org Git - users/jedix/linux-maple.git/commit
drm/i915/dp_mst: Fix side-band message timeouts due to long PPS delays
authorImre Deak <imre.deak@intel.com>
Mon, 24 Mar 2025 18:01:45 +0000 (20:01 +0200)
committerImre Deak <imre.deak@intel.com>
Tue, 25 Mar 2025 12:07:37 +0000 (14:07 +0200)
commit55d657da8e50adab2847fbff965eeac72f429388
tree0a506d2ec9b5f63583bf212ca99c123ab0f24ce9
parent88f931ceb457903e72778e1bca06f3a37c584a7e
drm/i915/dp_mst: Fix side-band message timeouts due to long PPS delays

The Panel Power Sequencer lock held on an eDP port (a) blocks a DP AUX
transfer on another port (b), since the PPS lock is device global, thus
shared by all ports. The PPS lock can be held on port (a) for a longer
period due to the various PPS delays (panel/backlight on/off,
power-cycle delays). This in turn can cause an MST down-message request
on port (b) time out, if the above PPS delay defers the handling of the
reply to the request by more than 100ms: the MST branch device sending
the reply (signaling this via the DP_DOWN_REP_MSG_RDY flag in the
DP_DEVICE_SERVICE_IRQ_VECTOR DPCD register) may cancel the reply
(clearing DP_DOWN_REP_MSG_RDY and the reply message buffer) after 110
ms, if the reply is not processed by that time.

Avoid MST down-message timeouts described above, by locking the PPS
state for AUX transfers only if this is actually required: on eDP ports,
where the VDD power depends on the PPS state and on all DP and eDP ports
on VLV/CHV, where the PPS is a pipe instance and hence a modeset on any
port possibly affecting the PPS state.

v2: Don't move PPS locking/VDD enabling to a separate function. (Jani)

Cc: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://lore.kernel.org/r/20250324180145.142884-3-imre.deak@intel.com
drivers/gpu/drm/i915/display/intel_dp_aux.c