** Tags removed: verification-needed-noble-linux-oem-6.17
** Tags added: verification-done-noble-linux-oem-6.17
--
You received this bug notification because you are subscribed to linux
in Ubuntu.
Matching subscriptions: Bgg, Bmail, Nb
https://bugs.launchpad.net/bugs/2143879
Title:
drm/i915/lnl+/tc: Fix false disconnect of active DP-alt TC port during
long HPD pulse
Status in HWE Next:
New
Status in linux package in Ubuntu:
In Progress
Status in linux-oem-6.17 package in Ubuntu:
Invalid
Status in linux source package in Noble:
Invalid
Status in linux-oem-6.17 source package in Noble:
Fix Committed
Status in linux source package in Resolute:
In Progress
Status in linux-oem-6.17 source package in Resolute:
Invalid
Bug description:
[Impact]
On HP systems (CID: 202512-38233) with Intel Lunar Lake GPU and HP Type-C to HDMI dongle
(03f0:8a4a), switching to mirror mode via hotkey fails. The system cannot switch mirror
mode on X11 when using a Type-C to HDMI external monitor.
The root cause is that on XELPDP+ platforms (Lunar Lake and later), the LTTPR dongle
fires a long HPD pulse after link training. The tc_phy_hpd_live_status() function reads
PICAINTERRUPT_ISR to determine DP-alt live status, but the XELPDP_DP_ALT_HOTPLUG_MASK
bit deasserts during a long HPD pulse. Since intel_tc_port_handles_hpd_glitches() returns
true for TC dp-alt ports, the 4ms glitch-filter retry loop is bypassed, giving no
protection against this transient deassertion. The hotplug handler then marks DP-1 as
disconnected, and the compositor disables eDP-1.
Error log:
xe 0000:00:02.0: [drm:intel_dp_hpd_pulse [xe]] got hpd irq on [ENCODER:270:DDI TC1/PHY TC1] - long
xe 0000:00:02.0: [drm:drm_dp_dpcd_access [drm_display_helper]] AUX USBC1/DDI TC1/PHY TC1: Too many retries, giving up. First error: -6
xe 0000:00:02.0: [drm:intel_hotplug_detect_connector [xe]] [CONNECTOR:271:DP-1] status updated from connected to disconnected (epoch counter 178->179)
[drm:intel_dp_hpd_pulse] got hpd irq on [ENCODER:270:DDI TC1/PHY TC1] - long
[drm:intel_tc_port_update_mode] Port D/TC#1: TC port mode reset (disconnected -> tbt-alt)
[drm:intel_dp_hpd_pulse] got hpd irq on [ENCODER:270:DDI TC1/PHY TC1] - long
[drm:intel_hotplug_detect_connector] [CONNECTOR:271:DP-1] status updated from connected to disconnected
Affected hardware: HP systems (CID: 202512-38233) with Intel Lunar Lake GPU
Failure rate: High (reproducible with HP Type-C to HDMI dongle 03f0:8a4a on X11)
[Fix]
When the port has an active link (link_refcount > 0), trust the PHY ownership register
(XELPDP_PORT_BUF_CTL1 & XELPDP_TC_PHY_OWNERSHIP) over the transient HPD live status
in intel_tc_port_connected(). The ownership register is stable and does not toggle
during HPD pulses. The TC cold power domain is guaranteed to be held when
link_refcount > 0, as __intel_tc_port_lock() already asserts and verifies this via
tc_phy_is_owned() before reaching intel_tc_port_connected().
The patch is currently under review on the Intel DRM mailing list (not yet merged to
mainline).
Patch:
https://lore.kernel.org/lkml/20260305075857.40077-1-acelan.kao@canonical.com/T/#u
[Test Plan]
1. Connect HP Type-C to HDMI dongle (03f0:8a4a) to the system.
2. Ensure the external monitor is displaying output (extended mode).
3. Press the hotkey to switch to mirror mode.
Without the patch: The external monitor fails to switch to mirror mode. The kernel log
shows DP-1 connector status updated from connected to disconnected, and the internal
display may also blank.
With the patch: Mirror mode switches successfully. The kernel log shows the TC port
correctly stays in or returns to dp-alt mode:
[drm:intel_tc_port_update_mode] Port D/TC#1: TC port mode reset (dp-alt -> disconnected)
[drm:intel_tc_port_update_mode] Port D/TC#1: TC port mode reset (disconnected -> dp-alt)
[Where problems could occur]
It may affect the i915/xe display driver's Type-C port management on Lunar Lake and
later platforms.
If the condition `tc_phy_is_owned()` returns a stale or incorrect ownership state while
link_refcount > 0, the driver could incorrectly report a port as connected when the
physical link has actually been removed. This would manifest as a phantom connected
display that cannot be detected as disconnected until the next full port reset, potentially
causing display configuration errors or a hung compositor.
Additionally, the early-return path bypasses the existing tc_phy_hpd_live_status() mask
check. If there is an edge case where link_refcount > 0 but the port mode transitions
away from TC_PORT_DP_ALT between the refcount check and the ownership check, the port
status could be misreported.
The patch is submitted upstream for review but not yet merged.
[Other Info]
The patch is submitted to the Intel DRM mailing list for review but not yet merged to
mainline.
This issue only reproduces with the HP Type-C to HDMI dongle (03f0:8a4a) on X11. Wayland
and other dongle types (Type-C to DP/VGA, built-in HDMI/Thunderbolt) are not affected.
To manage notifications about this bug go to:
https://bugs.launchpad.net/hwe-next/+bug/2143879/+subscriptions
Комментариев нет:
Отправить комментарий