From 48e67aadd5f970f20d71c07048f0463d9c0fbf41 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sat, 17 Apr 2021 11:16:04 +0300 Subject: Update to 5.11.15 --- ...etting-in-case-of-unexpected-AUX-timeouts.patch | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 0005-drm-i915-Fix-modesetting-in-case-of-unexpected-AUX-timeouts.patch (limited to '0005-drm-i915-Fix-modesetting-in-case-of-unexpected-AUX-timeouts.patch') diff --git a/0005-drm-i915-Fix-modesetting-in-case-of-unexpected-AUX-timeouts.patch b/0005-drm-i915-Fix-modesetting-in-case-of-unexpected-AUX-timeouts.patch new file mode 100644 index 0000000..8e1cc1d --- /dev/null +++ b/0005-drm-i915-Fix-modesetting-in-case-of-unexpected-AUX-timeouts.patch @@ -0,0 +1,52 @@ +From 702d986d2a3b347a2d732a3fbfc9838dc70a2be7 Mon Sep 17 00:00:00 2001 +From: Imre Deak +Date: Tue, 13 Apr 2021 02:24:12 +0300 +Subject: drm/i915: Fix modesetting in case of unexpected AUX timeouts +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In case AUX failures happen unexpectedly during a modeset, the driver +should still complete the modeset. In particular the driver should +perform the link training sequence steps even in case of an AUX failure, +as this sequence also includes port initialization steps. Not doing that +can leave the port/pipe in a broken state and lead for instance to a +flip done timeout. + +Fix this by continuing with link training (in a no-LTTPR mode) if the +DPRX DPCD readout failed for some reason at the beginning of link +training. After a successful connector detection we already have the +DPCD read out and cached, so the failed repeated read for it should not +cause a problem. Note that a partial AUX read could in theory partly +overwrite the cached DPCD (and return error) but this overwrite should +not happen if the returned values are corrupted (due to a timeout or +some other IO error). + +Kudos to Ville to root cause the problem. + +Fixes: 7dffbdedb96a ("drm/i915: Disable LTTPR support when the DPCD rev < 1.4") +References: https://gitlab.freedesktop.org/drm/intel/-/issues/3308 +Cc: stable@vger.kernel.org # 5.11 +Cc: Ville Syrjälä +Signed-off-by: Imre Deak +--- + drivers/gpu/drm/i915/display/intel_dp_link_training.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +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 e6532ea5757b..6f2cb9d55e1b 100644 +--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c ++++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c +@@ -843,7 +843,8 @@ void intel_dp_start_link_train(struct intel_dp *intel_dp, + int lttpr_count = intel_dp_init_lttpr_and_dprx_caps(intel_dp); + + if (lttpr_count < 0) +- return; ++ /* Still continue with enabling the port and link training. */ ++ lttpr_count = 0; + + if (!intel_dp_link_train_all_phys(intel_dp, crtc_state, lttpr_count)) + intel_dp_schedule_fallback_link_training(intel_dp, crtc_state); +-- +cgit v1.2.3-1-gf6bb5 + -- cgit v1.2.1