* [PATCH 1/2] drm/mst: Fix sporadic second display not detected after warm boot/G3
@ 2026-10-01 21:57 FNU VISHWANATHA
2026-10-01 21:57 ` [PATCH 2/2] drm/i915/mst: Force link address reprobe after MST resume FNU VISHWANATHA
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: FNU VISHWANATHA @ 2026-10-01 21:57 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx, FNU VISHWANATHA
The intermittent detection failure of the second display over MST HUB is caused
by a race condition in MST port status detection during warm boot/G3 resume.
When a port transitions from input to output state during topology reprobe, the
driver was not forcing a re-probe of the link address. This caused ports that
were temporarily incorrectly marked as input ports to never create connectors.
Force a link address reprobe when a port transitions from input (1) to output
(0) state, giving the MST hub another chance to properly report the port status.
Signed-off-by: FNU VISHWANATHA <fnu.vishwanatha@intel.com>
---
drivers/gpu/drm/display/drm_dp_mst_topology.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c
index be749dcad3b5..cc340e4235cc 100644
--- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
@@ -2377,7 +2377,11 @@ drm_dp_mst_handle_link_address_port(struct drm_dp_mst_branch *mstb,
changed = true;
created = true;
} else if (port->input && !port_msg->input_port) {
+ /* Port transitioned from input to output (e.g., during warm boot/G3 resume)
+ * We need to force link address reprobe to get proper port info
+ */
changed = true;
+ mstb->link_address_sent = false;
} else if (port->connector) {
/* We're updating a port that's exposed to userspace, so do it
* under lock
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 2/2] drm/i915/mst: Force link address reprobe after MST resume
2026-10-01 21:57 [PATCH 1/2] drm/mst: Fix sporadic second display not detected after warm boot/G3 FNU VISHWANATHA
@ 2026-10-01 21:57 ` FNU VISHWANATHA
2026-10-02 9:23 ` Jani Nikula
2026-10-01 22:37 ` ✗ Fi.CI.BUILD: failure for series starting with [1/2] drm/mst: Fix sporadic second display not detected after warm boot/G3 Patchwork
2026-10-02 9:21 ` [PATCH 1/2] " Jani Nikula
2 siblings, 1 reply; 6+ messages in thread
From: FNU VISHWANATHA @ 2026-10-01 21:57 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx, FNU VISHWANATHA
After resume from warm boot/G3, immediately force a topology link address
reprobe to ensure all MST ports are properly detected. This works around a
race condition where some MST hubs incorrectly report port status bits before
their internal state is fully initialized.
By forcing the reprobe immediately after resume, combined with the fix in
drm_dp_mst_handle_link_address_port() that detects input->output port
transitions, we ensure that all displays are reliably detected even if the
hub initially reports incorrect port status.
Signed-off-by: FNU VISHWANATHA <fnu.vishwanatha@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 3a67990411b3..fceda523efa3 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -7088,6 +7088,7 @@ void intel_dp_mst_resume(struct intel_display *display)
for_each_intel_encoder(display->drm, encoder) {
struct intel_dp *intel_dp;
+ struct drm_dp_mst_branch *mstb;
int ret;
if (encoder->type != INTEL_OUTPUT_DDI)
@@ -7102,6 +7103,23 @@ void intel_dp_mst_resume(struct intel_display *display)
if (ret) {
intel_dp->is_mst = false;
drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst.mgr, false);
+ continue;
+ }
+
+ /* After resume, force a link address reprobe to ensure all ports
+ * are properly detected. This works around a race condition where
+ * some MST hubs incorrectly report port status bits during warm boot/G3.
+ * Ref: Sporadic second display not detected after warm boot/G3
+ */
+ if (intel_dp->is_mst) {
+ mutex_lock(&intel_dp->mst.mgr.lock);
+ mstb = intel_dp->mst.mgr.mst_primary;
+ if (mstb) {
+ drm_dp_mst_topology_get_mstb(mstb);
+ mstb->link_address_sent = false;
+ drm_dp_mst_topology_put_mstb(mstb);
+ }
+ mutex_unlock(&intel_dp->mst.mgr.lock);
}
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH 2/2] drm/i915/mst: Force link address reprobe after MST resume
2026-10-01 21:57 ` [PATCH 2/2] drm/i915/mst: Force link address reprobe after MST resume FNU VISHWANATHA
@ 2026-10-02 9:23 ` Jani Nikula
2026-10-02 9:28 ` Jani Nikula
0 siblings, 1 reply; 6+ messages in thread
From: Jani Nikula @ 2026-10-02 9:23 UTC (permalink / raw)
To: FNU VISHWANATHA, dri-devel; +Cc: intel-gfx, FNU VISHWANATHA
On Thu, 01 Oct 2026, FNU VISHWANATHA <fnu.vishwanatha@intel.com> wrote:
> After resume from warm boot/G3, immediately force a topology link address
> reprobe to ensure all MST ports are properly detected. This works around a
> race condition where some MST hubs incorrectly report port status bits before
> their internal state is fully initialized.
>
> By forcing the reprobe immediately after resume, combined with the fix in
> drm_dp_mst_handle_link_address_port() that detects input->output port
> transitions, we ensure that all displays are reliably detected even if the
> hub initially reports incorrect port status.
>
> Signed-off-by: FNU VISHWANATHA <fnu.vishwanatha@intel.com>
Is there a bug report about this with logs?
> ---
> drivers/gpu/drm/i915/display/intel_dp.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 3a67990411b3..fceda523efa3 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -7088,6 +7088,7 @@ void intel_dp_mst_resume(struct intel_display *display)
>
> for_each_intel_encoder(display->drm, encoder) {
> struct intel_dp *intel_dp;
> + struct drm_dp_mst_branch *mstb;
> int ret;
>
> if (encoder->type != INTEL_OUTPUT_DDI)
> @@ -7102,6 +7103,23 @@ void intel_dp_mst_resume(struct intel_display *display)
> if (ret) {
> intel_dp->is_mst = false;
> drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst.mgr, false);
> + continue;
> + }
> +
> + /* After resume, force a link address reprobe to ensure all ports
> + * are properly detected. This works around a race condition where
> + * some MST hubs incorrectly report port status bits during warm boot/G3.
> + * Ref: Sporadic second display not detected after warm boot/G3
> + */
> + if (intel_dp->is_mst) {
> + mutex_lock(&intel_dp->mst.mgr.lock);
> + mstb = intel_dp->mst.mgr.mst_primary;
> + if (mstb) {
> + drm_dp_mst_topology_get_mstb(mstb);
> + mstb->link_address_sent = false;
> + drm_dp_mst_topology_put_mstb(mstb);
> + }
> + mutex_unlock(&intel_dp->mst.mgr.lock);
> }
> }
> }
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH 2/2] drm/i915/mst: Force link address reprobe after MST resume
2026-10-02 9:23 ` Jani Nikula
@ 2026-10-02 9:28 ` Jani Nikula
0 siblings, 0 replies; 6+ messages in thread
From: Jani Nikula @ 2026-10-02 9:28 UTC (permalink / raw)
To: FNU VISHWANATHA, dri-devel; +Cc: intel-gfx, FNU VISHWANATHA
On Fri, 02 Oct 2026, Jani Nikula <jani.nikula@linux.intel.com> wrote:
> On Thu, 01 Oct 2026, FNU VISHWANATHA <fnu.vishwanatha@intel.com> wrote:
>> After resume from warm boot/G3, immediately force a topology link address
>> reprobe to ensure all MST ports are properly detected. This works around a
>> race condition where some MST hubs incorrectly report port status bits before
>> their internal state is fully initialized.
>>
>> By forcing the reprobe immediately after resume, combined with the fix in
>> drm_dp_mst_handle_link_address_port() that detects input->output port
>> transitions, we ensure that all displays are reliably detected even if the
>> hub initially reports incorrect port status.
>>
>> Signed-off-by: FNU VISHWANATHA <fnu.vishwanatha@intel.com>
>
> Is there a bug report about this with logs?
>
>> ---
>> drivers/gpu/drm/i915/display/intel_dp.c | 18 ++++++++++++++++++
>> 1 file changed, 18 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
>> index 3a67990411b3..fceda523efa3 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -7088,6 +7088,7 @@ void intel_dp_mst_resume(struct intel_display *display)
>>
>> for_each_intel_encoder(display->drm, encoder) {
>> struct intel_dp *intel_dp;
>> + struct drm_dp_mst_branch *mstb;
>> int ret;
>>
>> if (encoder->type != INTEL_OUTPUT_DDI)
>> @@ -7102,6 +7103,23 @@ void intel_dp_mst_resume(struct intel_display *display)
>> if (ret) {
>> intel_dp->is_mst = false;
>> drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst.mgr, false);
>> + continue;
>> + }
>> +
>> + /* After resume, force a link address reprobe to ensure all ports
>> + * are properly detected. This works around a race condition where
>> + * some MST hubs incorrectly report port status bits during warm boot/G3.
>> + * Ref: Sporadic second display not detected after warm boot/G3
>> + */
>> + if (intel_dp->is_mst) {
>> + mutex_lock(&intel_dp->mst.mgr.lock);
>> + mstb = intel_dp->mst.mgr.mst_primary;
>> + if (mstb) {
>> + drm_dp_mst_topology_get_mstb(mstb);
>> + mstb->link_address_sent = false;
>> + drm_dp_mst_topology_put_mstb(mstb);
>> + }
>> + mutex_unlock(&intel_dp->mst.mgr.lock);
This is topology manager internal stuff we have no business messing with
in drivers. So much so that drm_dp_mst_topology_get_mstb() and
drm_dp_mst_topology_put_mstb() are *static* functions in
drm_dp_mst_topology.c.
How did you build and run this?
>> }
>> }
>> }
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 6+ messages in thread
* ✗ Fi.CI.BUILD: failure for series starting with [1/2] drm/mst: Fix sporadic second display not detected after warm boot/G3
2026-10-01 21:57 [PATCH 1/2] drm/mst: Fix sporadic second display not detected after warm boot/G3 FNU VISHWANATHA
2026-10-01 21:57 ` [PATCH 2/2] drm/i915/mst: Force link address reprobe after MST resume FNU VISHWANATHA
@ 2026-10-01 22:37 ` Patchwork
2026-10-02 9:21 ` [PATCH 1/2] " Jani Nikula
2 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2026-10-01 22:37 UTC (permalink / raw)
To: FNU VISHWANATHA; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/2] drm/mst: Fix sporadic second display not detected after warm boot/G3
URL : https://patchwork.freedesktop.org/series/175383/
State : failure
== Summary ==
Error: patch https://patchwork.freedesktop.org/api/1.0/series/175383/revisions/1/mbox/ not applied
Applying: drm/mst: Fix sporadic second display not detected after warm boot/G3
error: patch failed: drivers/gpu/drm/display/drm_dp_mst_topology.c:2377
error: drivers/gpu/drm/display/drm_dp_mst_topology.c: patch does not apply
error: Did you hand edit your patch?
It does not apply to blobs recorded in its index.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Using index info to reconstruct a base tree...
M drivers/gpu/drm/display/drm_dp_mst_topology.c
Patch failed at 0001 drm/mst: Fix sporadic second display not detected after warm boot/G3
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Build failed, no error log produced
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] drm/mst: Fix sporadic second display not detected after warm boot/G3
2026-10-01 21:57 [PATCH 1/2] drm/mst: Fix sporadic second display not detected after warm boot/G3 FNU VISHWANATHA
2026-10-01 21:57 ` [PATCH 2/2] drm/i915/mst: Force link address reprobe after MST resume FNU VISHWANATHA
2026-10-01 22:37 ` ✗ Fi.CI.BUILD: failure for series starting with [1/2] drm/mst: Fix sporadic second display not detected after warm boot/G3 Patchwork
@ 2026-10-02 9:21 ` Jani Nikula
2 siblings, 0 replies; 6+ messages in thread
From: Jani Nikula @ 2026-10-02 9:21 UTC (permalink / raw)
To: FNU VISHWANATHA, dri-devel; +Cc: intel-gfx, FNU VISHWANATHA
On Thu, 01 Oct 2026, FNU VISHWANATHA <fnu.vishwanatha@intel.com> wrote:
> The intermittent detection failure of the second display over MST HUB is caused
> by a race condition in MST port status detection during warm boot/G3 resume.
>
> When a port transitions from input to output state during topology reprobe, the
> driver was not forcing a re-probe of the link address. This caused ports that
> were temporarily incorrectly marked as input ports to never create connectors.
>
> Force a link address reprobe when a port transitions from input (1) to output
> (0) state, giving the MST hub another chance to properly report the port status.
>
> Signed-off-by: FNU VISHWANATHA <fnu.vishwanatha@intel.com>
Is there a bug report about this with logs?
> ---
> drivers/gpu/drm/display/drm_dp_mst_topology.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c
> index be749dcad3b5..cc340e4235cc 100644
> --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
> +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
> @@ -2377,7 +2377,11 @@ drm_dp_mst_handle_link_address_port(struct drm_dp_mst_branch *mstb,
> changed = true;
> created = true;
> } else if (port->input && !port_msg->input_port) {
> + /* Port transitioned from input to output (e.g., during warm boot/G3 resume)
> + * We need to force link address reprobe to get proper port info
> + */
> changed = true;
> + mstb->link_address_sent = false;
> } else if (port->connector) {
> /* We're updating a port that's exposed to userspace, so do it
> * under lock
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-10-02 9:28 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-01 21:57 [PATCH 1/2] drm/mst: Fix sporadic second display not detected after warm boot/G3 FNU VISHWANATHA
2026-10-01 21:57 ` [PATCH 2/2] drm/i915/mst: Force link address reprobe after MST resume FNU VISHWANATHA
2026-10-02 9:23 ` Jani Nikula
2026-10-02 9:28 ` Jani Nikula
2026-10-01 22:37 ` ✗ Fi.CI.BUILD: failure for series starting with [1/2] drm/mst: Fix sporadic second display not detected after warm boot/G3 Patchwork
2026-10-02 9:21 ` [PATCH 1/2] " Jani Nikula
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox