On Wed, May 27, 2020 at 11:49:55PM +0300, Imre Deak wrote: > On Wed, May 27, 2020 at 11:26:49PM +0300, Imre Deak wrote: > > On Wed, May 27, 2020 at 11:00:22PM +0300, Stanislav Lisovskiy wrote: > > > First of all *_needs_link_retraining function should return > > > false is link_train is set to true but not false. > > > > > > Also if we detect channel eq problem when checking mst status > > > we simply bail out, without setting link_train to false again, > > > which might end up in a situation that we don't do link retraining > > > when needed. > > > > > > There were some issues, when we had several problems with dp mst > > > and at the same time the log was floode by messages about > > > "channel eq not ok, need retraining" however the actual training > > > seems to be never done. > > > > > > Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@xxxxxxxxx> > > > --- > > > drivers/gpu/drm/i915/display/intel_dp.c | 3 ++- > > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c > > > index 1768731678a1..9288dc1f8914 100644 > > > --- a/drivers/gpu/drm/i915/display/intel_dp.c > > > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > > > @@ -5627,6 +5627,7 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp) > > > drm_dbg_kms(&i915->drm, > > > "channel EQ not ok, retraining\n"); > > > need_retrain = true; > > > + intel_dp->link_trained = false; > > > } > > > > > > drm_dbg_kms(&i915->drm, "got esi %3ph\n", esi); > > > @@ -5654,7 +5655,7 @@ intel_dp_needs_link_retrain(struct intel_dp *intel_dp) > > > { > > > u8 link_status[DP_LINK_STATUS_SIZE]; > > > > > > - if (!intel_dp->link_trained) > > > + if (intel_dp->link_trained) > > > > intel_dp->link_trained is set when we trained the link during a modeset, > > it doesn't mean that the link status is good, as you seem to interpret > > it. With this change I don't see how we would retrain the link when this > > is called from intel_dp_short_pulse(). Could you describe more the > > failing scenario? > > One reason we wouldn't retrain when needed is that the sink is not seen > as connected in intel_dp_retrain_link(). But mst is always connected. So maybe intel_dp_needs_link_retrain() does an early return because intel_dp_get_link_status() or intel_dp_link_params_valid() fails? > > > > > > return false; > > > > > > /* > > > -- > > > 2.24.1.485.gad05a3d8e5 > > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx