On Wed, Feb 15, 2023 at 10:38:32AM +0200, Vinod Govindapillai wrote: > If the ignore long HPD flag is set, ignore the link training > failures as well. Because of spurious HPDs, some unexpected link > training failures are happening while executing IGT test cases. > Ignore the link training failures for the time being if the long > HPDs are also ignored in the environments like CI. > > Signed-off-by: Vinod Govindapillai <vinod.govindapillai@xxxxxxxxx> Looks ok to me, on the patchset: Reviewed-by: Imre Deak <imre.deak@xxxxxxxxx> > --- > .../drm/i915/display/intel_dp_link_training.c | 24 +++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c > index 3d3efcf02011..f90c627ab553 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c > @@ -1433,7 +1433,11 @@ intel_dp_128b132b_link_train(struct intel_dp *intel_dp, > void intel_dp_start_link_train(struct intel_dp *intel_dp, > const struct intel_crtc_state *crtc_state) > { > + struct drm_i915_private *i915 = dp_to_i915(intel_dp); > + struct intel_connector *connector = intel_dp->attached_connector; > + struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; > bool passed; > + > /* > * TODO: Reiniting LTTPRs here won't be needed once proper connector > * HW state readout is added. > @@ -1451,6 +1455,26 @@ void intel_dp_start_link_train(struct intel_dp *intel_dp, > else > passed = intel_dp_link_train_all_phys(intel_dp, crtc_state, lttpr_count); > > + /* > + * Ignore the link failure in CI > + * > + * In fixed enviroments like CI, sometimes unexpected long HPDs are > + * generated by the displays. If ignore_long_hpd flag is set, such long > + * HPDs are ignored. And probably as a consequence of these ignored > + * long HPDs, subsequent link trainings are failed resulting into CI > + * execution failures. > + * > + * For test cases which rely on the link training or processing of HPDs > + * ignore_long_hpd flag can unset from the testcase. > + */ > + if (!passed && i915->display.hotplug.ignore_long_hpd) { > + drm_dbg_kms(&i915->drm, > + "[CONNECTOR:%d:%s][ENCODER:%d:%s] Ignore the link failure\n", > + connector->base.base.id, connector->base.name, > + encoder->base.base.id, encoder->base.name); > + return; > + } > + > if (!passed) > intel_dp_schedule_fallback_link_training(intel_dp, crtc_state); > } > -- > 2.34.1 >