RE: [PATCH v2 12/21] drm/i915/dp: Use check link state work in the detect handler

Yu, Gareth
2024-05-28T05:33:44Z

Hi Max,

Please provide the test results.

Hi Imre,

Meanwhile, my question here is the link status is not checked in MST mode according to the current flow. The changes below
for MST are same as https://patchwork.freedesktop.org/patch/591953/?series=132685&rev=6. Please check it.

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 0923a5adc14b..bf008a70304f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5927,6 +5927,13 @@ intel_dp_detect(struct drm_connector *connector,

intel_dp_print_rates(intel_dp);

+ /*
+ * Some external monitors do not signal loss of link synchronization
+ * with an IRQ_HPD, so force a link status check.
+ */
+ if (!intel_dp_is_edp(intel_dp))
+ intel_dp_check_link_state(intel_dp);
+
if (intel_dp->is_mst) {
/*
* If we are in MST mode then this connector
@@ -5937,13 +5944,6 @@ intel_dp_detect(struct drm_connector *connector,
goto out;
}

- /*
- * Some external monitors do not signal loss of link synchronization
- * with an IRQ_HPD, so force a link status check.
- */
- if (!intel_dp_is_edp(intel_dp))
- intel_dp_check_link_state(intel_dp);
-
/*
* Clearing NACK and defer counts to get their exact values
* while reading EDID which are required by Compliance tests

Thanks,
Gareth

> -----Original Message-----
> From: Deak, Imre <imre.deak@intel.com>
> Sent: Monday, May 27, 2024 7:30 PM
> To: Yu, Gareth <gareth.yu@intel.com>
> Cc: intel-gfx@lists.freedesktop.org; Ville Syrjälä <ville.syrjala@linux.intel.com>
> Subject: Re: [PATCH v2 12/21] drm/i915/dp: Use check link state work in the
> detect handler
>
> On Mon, May 27, 2024 at 01:14:32PM +0800, gareth.yu@intel.com wrote:
> Hi,
>
> > A bad link in MST is not retrained. Please also consider MST.
> > The issue ticket is https://gitlab.freedesktop.org/drm/i915/kernel/-
> /issues/10902.
> >
> > if (intel_dp->is_mst) {
> > /*
> > * If we are in MST mode then this connector
> > * won't appear connected or have anything
> > * with EDID on it
> > */
> > status = connector_status_disconnected;
> > goto out;
> > }
> >
> > /*
> > * Some external monitors do not signal loss of link synchronization
> > * with an IRQ_HPD, so force a link status check.
> > */
> > if (!intel_dp_is_edp(intel_dp)) {
> > ret = intel_dp_retrain_link(encoder, ctx);
> > if (ret)
> > return ret;
> > }
>
> this is not the proper place to retrain the link, the plan is to remove the above.
> Could you give a try to the patchset and follow up with a dmesg log on the
> ticket?
>
> Thanks,
> Imre