Commit c7d18b40 authored by Vinod Govindapillai's avatar Vinod Govindapillai Committed by Imre Deak

drm/i915/display: ignore link training failures in CI

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: default avatarVinod Govindapillai <vinod.govindapillai@intel.com>
Reviewed-by: default avatarImre Deak <imre.deak@intel.com>
Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230215083832.287519-3-vinod.govindapillai@intel.com
parent b0fbef65
...@@ -1429,7 +1429,11 @@ intel_dp_128b132b_link_train(struct intel_dp *intel_dp, ...@@ -1429,7 +1429,11 @@ intel_dp_128b132b_link_train(struct intel_dp *intel_dp,
void intel_dp_start_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) 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; bool passed;
/* /*
* TODO: Reiniting LTTPRs here won't be needed once proper connector * TODO: Reiniting LTTPRs here won't be needed once proper connector
* HW state readout is added. * HW state readout is added.
...@@ -1447,6 +1451,26 @@ void intel_dp_start_link_train(struct intel_dp *intel_dp, ...@@ -1447,6 +1451,26 @@ void intel_dp_start_link_train(struct intel_dp *intel_dp,
else else
passed = intel_dp_link_train_all_phys(intel_dp, crtc_state, lttpr_count); 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) if (!passed)
intel_dp_schedule_fallback_link_training(intel_dp, crtc_state); intel_dp_schedule_fallback_link_training(intel_dp, crtc_state);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment