After a regular modeset link training failure, the driver attempts to recover the link via an autoretrain using the same link parameters as the modeset.
If the autoretrain fails as well, the set of allowed link configurations is reduced via a fallback mechanism. For further link training, the modeset parameters will likely need to change. This lowers the required link bandwidth and allows selecting a link configuration from the fallback-reduced set. Only userspace can perform such a modeset change. Therefore, the driver notifies userspace to take over link recovery. Userspace is expected to continue with the recovery attempt via a modeset with updated parameters. The driver must not interfere with these modesets. link_training->seq_train_failures is set to MAX_SEQ_TRAIN_FAILURES after the autoretrain fails. If a fallback selection also fails after this, as no link configurations remain, retrain_disabled is set as well. retrain_disabled is therefore somewhat misnamed: it indicates that no fallback is available, not that autoretraining is disabled. This will be addressed in a follow-up change by renaming the flag. For now, prevent further autoretrain attempts based on the correct condition: seq_train_failures == MAX_SEQ_TRAIN_FAILURES. This also prepares for replacing the counter with an enum in a follow-up change. Signed-off-by: Imre Deak <[email protected]> --- drivers/gpu/drm/i915/display/intel_dp_link_training.c | 2 +- 1 file changed, 1 insertion(+), 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 154caecacecb2..e766f7c323f72 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c @@ -2002,7 +2002,7 @@ intel_dp_needs_link_retrain(struct intel_dp *intel_dp) intel_dp->lane_count)) return false; - if (link_training->retrain_disabled) + if (link_training->seq_train_failures >= MAX_SEQ_TRAIN_FAILURES) return false; if (link_training->seq_train_failures) -- 2.49.1
