3sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget6/translations/zh_CN/gpu/intel-display/dp-link-trainingmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/zh_TW/gpu/intel-display/dp-link-trainingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/it_IT/gpu/intel-display/dp-link-trainingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/ja_JP/gpu/intel-display/dp-link-trainingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/ko_KR/gpu/intel-display/dp-link-trainingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/pt_BR/gpu/intel-display/dp-link-trainingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/sp_SP/gpu/intel-display/dp-link-trainingmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(hSPDX-License-Identifier: MITh]hSPDX-License-Identifier: MIT}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhP/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training.rsthKubh)}(h#Copyright © 2026 Intel Corporationh]h#Copyright © 2026 Intel Corporation}hhsbah}(h]h ]h"]h$]h&]hhuh1hhhhhhhhKubhsection)}(hhh](htitle)}(hDisplayPort Link Trainingh]hDisplayPort Link Training}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hThis documents the Intel DisplayPort link training implementation and its internal interfaces, with a current focus on link recovery.h]hThis documents the Intel DisplayPort link training implementation and its internal interfaces, with a current focus on link recovery.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chK1hhhhubh)}(hFDocumentation of the full link training procedure is not yet included.h]hFDocumentation of the full link training procedure is not yet included.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chK4hhhhubh)}(hX{The Intel DP link recovery logic governs how the driver reacts to link training failures and to links that degrade asynchronously after a previously successful training. Recovery is first attempted via automatic retraining (``autoretrain``) and, when that is no longer possible, by selecting fallback link configurations and notifying userspace to recover the link via a modeset.h](hThe Intel DP link recovery logic governs how the driver reacts to link training failures and to links that degrade asynchronously after a previously successful training. Recovery is first attempted via automatic retraining (}(hj hhhNhNubhliteral)}(h``autoretrain``h]h autoretrain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh) and, when that is no longer possible, by selecting fallback link configurations and notifying userspace to recover the link via a modeset.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chK6hhhhubh)}(hhh](h)}(h,Recovery sequence and userspace notificationh]h,Recovery sequence and userspace notification}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hNhNubh)}(hXAfter the first link training failure following initialization or a previously successful training, recovery is first attempted by the driver via automatic retraining, without userspace involvement. During this phase, a given link configuration is attempted twice before being abandoned: after the initial link training failure, an automatic retraining modeset is performed with the same link parameters, constituting the second attempt.h]hXAfter the first link training failure following initialization or a previously successful training, recovery is first attempted by the driver via automatic retraining, without userspace involvement. During this phase, a given link configuration is attempted twice before being abandoned: after the initial link training failure, an automatic retraining modeset is performed with the same link parameters, constituting the second attempt.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chK@hj.ubh)}(hXOnce automatic retraining is no longer possible, recovery is delegated to userspace, which must select a new modeset configuration, as the kernel must not do so. From this point onwards, each link configuration may be attempted only once as userspace iterates through alternative configurations. A successful link training restores the automatic retraining model for subsequent failures.h]hXOnce automatic retraining is no longer possible, recovery is delegated to userspace, which must select a new modeset configuration, as the kernel must not do so. From this point onwards, each link configuration may be attempted only once as userspace iterates through alternative configurations. A successful link training restores the automatic retraining model for subsequent failures.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKHhj.ubh)}(hXIThe failure of the last automatic retraining attempt is reported to userspace, and from that point onward the driver notifies userspace of each subsequent failure. This allows userspace to both initiate recovery via modesets and observe the outcome of those recovery attempts, even when no further fallback configurations remain.h]hXIThe failure of the last automatic retraining attempt is reported to userspace, and from that point onward the driver notifies userspace of each subsequent failure. This allows userspace to both initiate recovery via modesets and observe the outcome of those recovery attempts, even when no further fallback configurations remain.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKOhj.ubh)}(hXLink training failures are always reported to userspace, even when they result from a kernel-internal modeset. Such modesets only re-apply the existing userspace-provided state and must not modify it. A failure triggered by such a modeset is therefore treated the same as a link degradation after a previously successful training, and recovery is handled by userspace in place of the kernel caller.h]hXLink training failures are always reported to userspace, even when they result from a kernel-internal modeset. Such modesets only re-apply the existing userspace-provided state and must not modify it. A failure triggered by such a modeset is therefore treated the same as a link degradation after a previously successful training, and recovery is handled by userspace in place of the kernel caller.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKUhj.ubeh}(h],recovery-sequence-and-userspace-notificationah ]h"],recovery sequence and userspace notificationah$]h&]uh1hhhhhhNhNubh)}(hhh](h)}(hContextsh]hContexts}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhNhNubh)}(hXThe following execution contexts (A/B/C) describe how the different recovery states are reached but are not themselves implementation states. The actual state machine is defined by :c:type:`enum intel_dp_link_training_recovery_state `.h](hThe following execution contexts (A/B/C) describe how the different recovery states are reached but are not themselves implementation states. The actual state machine is defined by }(hjhhhNhNubh)}(h\:c:type:`enum intel_dp_link_training_recovery_state `h]j)}(hjh]h*enum intel_dp_link_training_recovery_state}(hjhhhNhNubah}(h]h ](xrefcc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdoc"gpu/intel-display/dp-link-training refdomainjreftypetype refexplicitrefwarn reftarget%intel_dp_link_training_recovery_stateuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chK_hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK_hjubhenumerated_list)}(hhh]h list_item)}(hModeset context: h]h)}(hModeset context:h]hModeset context:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKdhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]enumtype upperalphaprefixhsuffix.uh1jhjubh block_quote)}(hXLTriggered by: - link training during a modeset, or - via the "i915_dp_force_link_training_failure" debugfs entry, forcing this path by emulating a link training failure. Transitions: - A1 Link training succeeds. A link check work to recover any degraded link is scheduled (and handled if needed in context B). State -> ``INTEL_DP_LINK_RECOVERY_IDLE``. - A2 First link training fails after initialization or a previously successful link training. An automatic retraining work is scheduled (and handled in context B) with the same link parameters with which the link training failed. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``. - A3 Link training fails again after A2 or A3. Through fallback selection, the driver attempts to restrict the allowed link configurations for subsequent modesets. This may be done either by lowering global limits (rate/lane caps), or by disabling only the currently failing configuration while leaving all other configurations allowed, even if they use higher rate or lane count. (The current implementation may still apply parameter capping as a coarse fallback selection mechanism. This is transitional and is expected to be replaced by a scheme that disables only the failing configuration, rather than removing configurations that have not been observed to fail and may still train successfully.) This case may repeat in a loop: ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` via repeated A3a -> A3a transitions until the configuration fallback space is exhausted, reaching the A3b terminal case. - A3a Fallback selection succeeds. Userspace is notified to retry the modeset. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``. - A3b Fallback selection fails. Userspace is notified of the failure and may continue recovery by retrying the modeset with the remaining allowed link configuration. State -> ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``. h]hdefinition_list)}(hhh](hdefinition_list_item)}(hTriggered by: - link training during a modeset, or - via the "i915_dp_force_link_training_failure" debugfs entry, forcing this path by emulating a link training failure. h](hterm)}(h Triggered by:h]h Triggered by:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKihjubh definition)}(hhh]h bullet_list)}(hhh](j)}(h"link training during a modeset, orh]h)}(hj#h]h"link training during a modeset, or}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKghj!ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(huvia the "i915_dp_force_link_training_failure" debugfs entry, forcing this path by emulating a link training failure. h]h)}(htvia the "i915_dp_force_link_training_failure" debugfs entry, forcing this path by emulating a link training failure.h]hxvia the “i915_dp_force_link_training_failure” debugfs entry, forcing this path by emulating a link training failure.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhhj9ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]bullet-uh1jhj2hKghjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKihjubj)}(hXSTransitions: - A1 Link training succeeds. A link check work to recover any degraded link is scheduled (and handled if needed in context B). State -> ``INTEL_DP_LINK_RECOVERY_IDLE``. - A2 First link training fails after initialization or a previously successful link training. An automatic retraining work is scheduled (and handled in context B) with the same link parameters with which the link training failed. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``. - A3 Link training fails again after A2 or A3. Through fallback selection, the driver attempts to restrict the allowed link configurations for subsequent modesets. This may be done either by lowering global limits (rate/lane caps), or by disabling only the currently failing configuration while leaving all other configurations allowed, even if they use higher rate or lane count. (The current implementation may still apply parameter capping as a coarse fallback selection mechanism. This is transitional and is expected to be replaced by a scheme that disables only the failing configuration, rather than removing configurations that have not been observed to fail and may still train successfully.) This case may repeat in a loop: ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` via repeated A3a -> A3a transitions until the configuration fallback space is exhausted, reaching the A3b terminal case. - A3a Fallback selection succeeds. Userspace is notified to retry the modeset. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``. - A3b Fallback selection fails. Userspace is notified of the failure and may continue recovery by retrying the modeset with the remaining allowed link configuration. State -> ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``. h](j)}(h Transitions:h]h Transitions:}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjfubj)}(hhh]j)}(hhh](j)}(hA1 Link training succeeds. A link check work to recover any degraded link is scheduled (and handled if needed in context B). State -> ``INTEL_DP_LINK_RECOVERY_IDLE``. h](h)}(hA1 Link training succeeds.h]hA1 Link training succeeds.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKlhjubh)}(haA link check work to recover any degraded link is scheduled (and handled if needed in context B).h]haA link check work to recover any degraded link is scheduled (and handled if needed in context B).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKnhjubh)}(h)State -> ``INTEL_DP_LINK_RECOVERY_IDLE``.h](h State -> }(hjhhhNhNubj)}(h``INTEL_DP_LINK_RECOVERY_IDLE``h]hINTEL_DP_LINK_RECOVERY_IDLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKqhjubeh}(h]h ]h"]h$]h&]uh1jhj|ubj)}(hXA2 First link training fails after initialization or a previously successful link training. An automatic retraining work is scheduled (and handled in context B) with the same link parameters with which the link training failed. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``. h](h)}(h[A2 First link training fails after initialization or a previously successful link training.h]h[A2 First link training fails after initialization or a previously successful link training.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKshjubh)}(hAn automatic retraining work is scheduled (and handled in context B) with the same link parameters with which the link training failed.h]hAn automatic retraining work is scheduled (and handled in context B) with the same link parameters with which the link training failed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKvhjubh)}(h8State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``.h](h State -> }(hjhhhNhNubj)}(h.``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``h]h*INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKzhjubeh}(h]h ]h"]h$]h&]uh1jhj|ubj)}(hX6A3 Link training fails again after A2 or A3. Through fallback selection, the driver attempts to restrict the allowed link configurations for subsequent modesets. This may be done either by lowering global limits (rate/lane caps), or by disabling only the currently failing configuration while leaving all other configurations allowed, even if they use higher rate or lane count. (The current implementation may still apply parameter capping as a coarse fallback selection mechanism. This is transitional and is expected to be replaced by a scheme that disables only the failing configuration, rather than removing configurations that have not been observed to fail and may still train successfully.) This case may repeat in a loop: ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` via repeated A3a -> A3a transitions until the configuration fallback space is exhausted, reaching the A3b terminal case. - A3a Fallback selection succeeds. Userspace is notified to retry the modeset. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``. - A3b Fallback selection fails. Userspace is notified of the failure and may continue recovery by retrying the modeset with the remaining allowed link configuration. State -> ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``. h](h)}(h,A3 Link training fails again after A2 or A3.h]h,A3 Link training fails again after A2 or A3.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chK|hjubh)}(hXMThrough fallback selection, the driver attempts to restrict the allowed link configurations for subsequent modesets. This may be done either by lowering global limits (rate/lane caps), or by disabling only the currently failing configuration while leaving all other configurations allowed, even if they use higher rate or lane count.h]hXMThrough fallback selection, the driver attempts to restrict the allowed link configurations for subsequent modesets. This may be done either by lowering global limits (rate/lane caps), or by disabling only the currently failing configuration while leaving all other configurations allowed, even if they use higher rate or lane count.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chK~hjubh)}(hX@(The current implementation may still apply parameter capping as a coarse fallback selection mechanism. This is transitional and is expected to be replaced by a scheme that disables only the failing configuration, rather than removing configurations that have not been observed to fail and may still train successfully.)h]hX@(The current implementation may still apply parameter capping as a coarse fallback selection mechanism. This is transitional and is expected to be replaced by a scheme that disables only the failing configuration, rather than removing configurations that have not been observed to fail and may still train successfully.)}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubj)}(hhh]j)}(hThis case may repeat in a loop: ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` h](j)}(hThis case may repeat in a loop:h]hThis case may repeat in a loop:}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjEubj)}(hhh]h)}(hb``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h](j)}(h/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h]h+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubh -> }(hj[hhhNhNubj)}(h/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h]h+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjXubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhjWhKhjBubah}(h]h ]h"]h$]h&]uh1jhjubh)}(hxvia repeated A3a -> A3a transitions until the configuration fallback space is exhausted, reaching the A3b terminal case.h]hxvia repeated A3a -> A3a transitions until the configuration fallback space is exhausted, reaching the A3b terminal case.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubj)}(hhh](j)}(hA3a Fallback selection succeeds. Userspace is notified to retry the modeset. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``. h](h)}(h A3a Fallback selection succeeds.h]h A3a Fallback selection succeeds.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(h+Userspace is notified to retry the modeset.h]h+Userspace is notified to retry the modeset.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(h9State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``.h](h State -> }(hjhhhNhNubj)}(h/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h]h+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hA3b Fallback selection fails. Userspace is notified of the failure and may continue recovery by retrying the modeset with the remaining allowed link configuration. State -> ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``. h](h)}(hA3b Fallback selection fails.h]hA3b Fallback selection fails.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(hUserspace is notified of the failure and may continue recovery by retrying the modeset with the remaining allowed link configuration.h]hUserspace is notified of the failure and may continue recovery by retrying the modeset with the remaining allowed link configuration.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(h0State -> ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``.h](h State -> }(hjhhhNhNubj)}(h&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``h]h"INTEL_DP_LINK_RECOVERY_NO_FALLBACK}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjxhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jXjYuh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]jXjYuh1jhjhKlhjyubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhjxhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKfhjubj)}(hhh]j)}(hAutomatic retraining context: h]h)}(hAutomatic retraining context:h]hAutomatic retraining context:}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjiubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]jjjhjjstartKuh1jhjubj)}(hX Triggered by: - after a successful link training in context A1 followed by asynchronous link degradation, or - after the first failed link training attempt in context A2, or - via the "i915_dp_force_link_retrain" debugfs entry, which may bypass normal gating and force this path. Transitions: - B1 ``Autoretrain`` modeset check and link training succeeds. The case is handled as in A1, scheduling a link check work to recover any degraded link. State -> ``INTEL_DP_LINK_RECOVERY_IDLE``. - B2 ``Autoretrain`` modeset check succeeds but link training fails. - B2a Previously the link degraded asynchronously (current state is ``INTEL_DP_LINK_RECOVERY_IDLE``). This corresponds to a first failure in a new failure sequence and is handled as in A2: an automatic retraining attempt is scheduled with the same link parameters. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``. - B2b Previously a link training failed (current state is ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``). In non-regular (debug-forced) scenarios this may also be reached from ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` or ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``, effectively behaving like a userspace-driven recovery attempt. The failure is handled as in A3, performing a fallback selection: State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` (via A3a). or State -> ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` (via A3b). - B3 ``Autoretrain`` modeset check fails (and hence the link training cannot be started). The modeset check may fail, for example, due to external conditions such as changed shared link bandwidth, which can make previously valid modeset parameters no longer acceptable. In this case, automatic retraining is disabled without selecting a fallback configuration. The driver hands recovery over to userspace without modifying the allowed configuration set, so a subsequent userspace modeset will retry with the current link configuration. Userspace is in a better position to select new modeset parameters (e.g. video mode or enabled outputs) that satisfy the updated constraints, as the driver is only allowed to retry the modeset with the existing userspace-provided modeset configuration. This policy preserves the normal retry model, where a given link configuration is attempted twice in the automatic retraining flow before being abandoned: after a first link training failure, an automatic retraining modeset is performed with the same link parameters, and if its atomic check passes, the link training itself may either succeed or fail, constituting the second attempt. In this case, however, the retry modeset's atomic check failed, so no second link training attempt with those parameters was performed, and selecting a fallback would cause that configuration to be tried only once rather than twice. The userspace-driven link recovery continues with subsequent userspace modesets handled in A3. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``. h]j)}(hhh](j)}(hXTriggered by: - after a successful link training in context A1 followed by asynchronous link degradation, or - after the first failed link training attempt in context A2, or - via the "i915_dp_force_link_retrain" debugfs entry, which may bypass normal gating and force this path. h](j)}(h Triggered by:h]h Triggered by:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubj)}(hhh]j)}(hhh](j)}(h\after a successful link training in context A1 followed by asynchronous link degradation, orh]h)}(h\after a successful link training in context A1 followed by asynchronous link degradation, orh]h\after a successful link training in context A1 followed by asynchronous link degradation, or}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h>after the first failed link training attempt in context A2, orh]h)}(hjh]h>after the first failed link training attempt in context A2, or}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhvia the "i915_dp_force_link_retrain" debugfs entry, which may bypass normal gating and force this path. h]h)}(hgvia the "i915_dp_force_link_retrain" debugfs entry, which may bypass normal gating and force this path.h]hkvia the “i915_dp_force_link_retrain” debugfs entry, which may bypass normal gating and force this path.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jXjYuh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hX Transitions: - B1 ``Autoretrain`` modeset check and link training succeeds. The case is handled as in A1, scheduling a link check work to recover any degraded link. State -> ``INTEL_DP_LINK_RECOVERY_IDLE``. - B2 ``Autoretrain`` modeset check succeeds but link training fails. - B2a Previously the link degraded asynchronously (current state is ``INTEL_DP_LINK_RECOVERY_IDLE``). This corresponds to a first failure in a new failure sequence and is handled as in A2: an automatic retraining attempt is scheduled with the same link parameters. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``. - B2b Previously a link training failed (current state is ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``). In non-regular (debug-forced) scenarios this may also be reached from ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` or ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``, effectively behaving like a userspace-driven recovery attempt. The failure is handled as in A3, performing a fallback selection: State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` (via A3a). or State -> ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` (via A3b). - B3 ``Autoretrain`` modeset check fails (and hence the link training cannot be started). The modeset check may fail, for example, due to external conditions such as changed shared link bandwidth, which can make previously valid modeset parameters no longer acceptable. In this case, automatic retraining is disabled without selecting a fallback configuration. The driver hands recovery over to userspace without modifying the allowed configuration set, so a subsequent userspace modeset will retry with the current link configuration. Userspace is in a better position to select new modeset parameters (e.g. video mode or enabled outputs) that satisfy the updated constraints, as the driver is only allowed to retry the modeset with the existing userspace-provided modeset configuration. This policy preserves the normal retry model, where a given link configuration is attempted twice in the automatic retraining flow before being abandoned: after a first link training failure, an automatic retraining modeset is performed with the same link parameters, and if its atomic check passes, the link training itself may either succeed or fail, constituting the second attempt. In this case, however, the retry modeset's atomic check failed, so no second link training attempt with those parameters was performed, and selecting a fallback would cause that configuration to be tried only once rather than twice. The userspace-driven link recovery continues with subsequent userspace modesets handled in A3. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``. h](j)}(h Transitions:h]h Transitions:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubj)}(hhh]j)}(hhh](j)}(hB1 ``Autoretrain`` modeset check and link training succeeds. The case is handled as in A1, scheduling a link check work to recover any degraded link. State -> ``INTEL_DP_LINK_RECOVERY_IDLE``. h](h)}(h ``INTEL_DP_LINK_RECOVERY_IDLE``.h](h State -> }(hjRhhhNhNubj)}(h``INTEL_DP_LINK_RECOVERY_IDLE``h]hINTEL_DP_LINK_RECOVERY_IDLE}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubh.}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hXB2 ``Autoretrain`` modeset check succeeds but link training fails. - B2a Previously the link degraded asynchronously (current state is ``INTEL_DP_LINK_RECOVERY_IDLE``). This corresponds to a first failure in a new failure sequence and is handled as in A2: an automatic retraining attempt is scheduled with the same link parameters. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``. - B2b Previously a link training failed (current state is ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``). In non-regular (debug-forced) scenarios this may also be reached from ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` or ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``, effectively behaving like a userspace-driven recovery attempt. The failure is handled as in A3, performing a fallback selection: State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` (via A3a). or State -> ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` (via A3b). h](h)}(hBB2 ``Autoretrain`` modeset check succeeds but link training fails.h](hB2 }(hj}hhhNhNubj)}(h``Autoretrain``h]h Autoretrain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubh0 modeset check succeeds but link training fails.}(hj}hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjyubj)}(hhh](j)}(hXBB2a Previously the link degraded asynchronously (current state is ``INTEL_DP_LINK_RECOVERY_IDLE``). This corresponds to a first failure in a new failure sequence and is handled as in A2: an automatic retraining attempt is scheduled with the same link parameters. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``. h](h)}(hcB2a Previously the link degraded asynchronously (current state is ``INTEL_DP_LINK_RECOVERY_IDLE``).h](hBB2a Previously the link degraded asynchronously (current state is }(hjhhhNhNubj)}(h``INTEL_DP_LINK_RECOVERY_IDLE``h]hINTEL_DP_LINK_RECOVERY_IDLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(hThis corresponds to a first failure in a new failure sequence and is handled as in A2: an automatic retraining attempt is scheduled with the same link parameters.h]hThis corresponds to a first failure in a new failure sequence and is handled as in A2: an automatic retraining attempt is scheduled with the same link parameters.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(h8State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``.h](h State -> }(hjhhhNhNubj)}(h.``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``h]h*INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hXB2b Previously a link training failed (current state is ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``). In non-regular (debug-forced) scenarios this may also be reached from ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` or ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``, effectively behaving like a userspace-driven recovery attempt. The failure is handled as in A3, performing a fallback selection: State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` (via A3a). or State -> ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` (via A3b). h](h)}(hhB2b Previously a link training failed (current state is ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``).h](h8B2b Previously a link training failed (current state is }(hjhhhNhNubj)}(h.``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``h]h*INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(hIn non-regular (debug-forced) scenarios this may also be reached from ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` or ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``, effectively behaving like a userspace-driven recovery attempt.h](hFIn non-regular (debug-forced) scenarios this may also be reached from }(hj!hhhNhNubj)}(h/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h]h+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubh or }(hj!hhhNhNubj)}(h&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``h]h"INTEL_DP_LINK_RECOVERY_NO_FALLBACK}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubh@, effectively behaving like a userspace-driven recovery attempt.}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(hAThe failure is handled as in A3, performing a fallback selection:h]hAThe failure is handled as in A3, performing a fallback selection:}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(hCState -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` (via A3a).h](h State -> }(hjchhhNhNubj)}(h/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h]h+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubh (via A3a).}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(horh]hor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(h:State -> ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` (via A3b).h](h State -> }(hjhhhNhNubj)}(h&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``h]h"INTEL_DP_LINK_RECOVERY_NO_FALLBACK}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh (via A3b).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jXjYuh1jhjhKhjyubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hXB3 ``Autoretrain`` modeset check fails (and hence the link training cannot be started). The modeset check may fail, for example, due to external conditions such as changed shared link bandwidth, which can make previously valid modeset parameters no longer acceptable. In this case, automatic retraining is disabled without selecting a fallback configuration. The driver hands recovery over to userspace without modifying the allowed configuration set, so a subsequent userspace modeset will retry with the current link configuration. Userspace is in a better position to select new modeset parameters (e.g. video mode or enabled outputs) that satisfy the updated constraints, as the driver is only allowed to retry the modeset with the existing userspace-provided modeset configuration. This policy preserves the normal retry model, where a given link configuration is attempted twice in the automatic retraining flow before being abandoned: after a first link training failure, an automatic retraining modeset is performed with the same link parameters, and if its atomic check passes, the link training itself may either succeed or fail, constituting the second attempt. In this case, however, the retry modeset's atomic check failed, so no second link training attempt with those parameters was performed, and selecting a fallback would cause that configuration to be tried only once rather than twice. The userspace-driven link recovery continues with subsequent userspace modesets handled in A3. State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``. h](h)}(hWB3 ``Autoretrain`` modeset check fails (and hence the link training cannot be started).h](hB3 }(hjhhhNhNubj)}(h``Autoretrain``h]h Autoretrain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhE modeset check fails (and hence the link training cannot be started).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(hThe modeset check may fail, for example, due to external conditions such as changed shared link bandwidth, which can make previously valid modeset parameters no longer acceptable.h]hThe modeset check may fail, for example, due to external conditions such as changed shared link bandwidth, which can make previously valid modeset parameters no longer acceptable.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(hXIn this case, automatic retraining is disabled without selecting a fallback configuration. The driver hands recovery over to userspace without modifying the allowed configuration set, so a subsequent userspace modeset will retry with the current link configuration. Userspace is in a better position to select new modeset parameters (e.g. video mode or enabled outputs) that satisfy the updated constraints, as the driver is only allowed to retry the modeset with the existing userspace-provided modeset configuration.h]hXIn this case, automatic retraining is disabled without selecting a fallback configuration. The driver hands recovery over to userspace without modifying the allowed configuration set, so a subsequent userspace modeset will retry with the current link configuration. Userspace is in a better position to select new modeset parameters (e.g. video mode or enabled outputs) that satisfy the updated constraints, as the driver is only allowed to retry the modeset with the existing userspace-provided modeset configuration.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(hXjThis policy preserves the normal retry model, where a given link configuration is attempted twice in the automatic retraining flow before being abandoned: after a first link training failure, an automatic retraining modeset is performed with the same link parameters, and if its atomic check passes, the link training itself may either succeed or fail, constituting the second attempt. In this case, however, the retry modeset's atomic check failed, so no second link training attempt with those parameters was performed, and selecting a fallback would cause that configuration to be tried only once rather than twice.h]hXlThis policy preserves the normal retry model, where a given link configuration is attempted twice in the automatic retraining flow before being abandoned: after a first link training failure, an automatic retraining modeset is performed with the same link parameters, and if its atomic check passes, the link training itself may either succeed or fail, constituting the second attempt. In this case, however, the retry modeset’s atomic check failed, so no second link training attempt with those parameters was performed, and selecting a fallback would cause that configuration to be tried only once rather than twice.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(h^The userspace-driven link recovery continues with subsequent userspace modesets handled in A3.h]h^The userspace-driven link recovery continues with subsequent userspace modesets handled in A3.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubh)}(h9State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``.h](h State -> }(hj'hhhNhNubj)}(h/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h]h+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubh.}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jXjYuh1jhjBhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubj)}(hhh]j)}(hState reset context: h]h)}(hState reset context:h]hState reset context:}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjoubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]jjjhjjjKuh1jhjubj)}(hXTriggered by: - sink capability changes, or - sink disconnect/reconnect, or - system suspend/resume or power transitions where HPD handling may have been suppressed, or - successful link training. Transitions: - The recovery state is reset from any of the recovery states State -> ``INTEL_DP_LINK_RECOVERY_IDLE``. After reset, the driver may re-check link status and schedule retraining if the link is found to remain degraded. h]j)}(hhh](j)}(hTriggered by: - sink capability changes, or - sink disconnect/reconnect, or - system suspend/resume or power transitions where HPD handling may have been suppressed, or - successful link training. h](j)}(h Triggered by:h]h Triggered by:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubj)}(hhh]j)}(hhh](j)}(hsink capability changes, orh]h)}(hjh]hsink capability changes, or}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hsink disconnect/reconnect, orh]h)}(hjh]hsink disconnect/reconnect, or}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hZsystem suspend/resume or power transitions where HPD handling may have been suppressed, orh]h)}(hZsystem suspend/resume or power transitions where HPD handling may have been suppressed, orh]hZsystem suspend/resume or power transitions where HPD handling may have been suppressed, or}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hsuccessful link training. h]h)}(hsuccessful link training.h]hsuccessful link training.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jXjYuh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hTransitions: - The recovery state is reset from any of the recovery states State -> ``INTEL_DP_LINK_RECOVERY_IDLE``. After reset, the driver may re-check link status and schedule retraining if the link is found to remain degraded. h](j)}(h Transitions:h]h Transitions:}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhj!ubj)}(hhh]j)}(hhh]j)}(hThe recovery state is reset from any of the recovery states State -> ``INTEL_DP_LINK_RECOVERY_IDLE``. After reset, the driver may re-check link status and schedule retraining if the link is found to remain degraded. h](h)}(h;The recovery state is reset from any of the recovery statesh]h;The recovery state is reset from any of the recovery states}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhj:ubh)}(h)State -> ``INTEL_DP_LINK_RECOVERY_IDLE``.h](h State -> }(hjMhhhNhNubj)}(h``INTEL_DP_LINK_RECOVERY_IDLE``h]hINTEL_DP_LINK_RECOVERY_IDLE}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubh.}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhj:ubh)}(hqAfter reset, the driver may re-check link status and schedule retraining if the link is found to remain degraded.h]hqAfter reset, the driver may re-check link status and schedule retraining if the link is found to remain degraded.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhj:ubeh}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]jXjYuh1jhjLhKhj4ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj3hKhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKhjubeh}(h]contextsah ]h"]contextsah$]h&]uh1hhhhhhNhNubh)}(hhh](h)}(hState transition summaryh]hState transition summary}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhNhNubj)}(hhh](j)}(hX^From ``INTEL_DP_LINK_RECOVERY_IDLE`` - To ``INTEL_DP_LINK_RECOVERY_IDLE`` - | In context: B1 | Action: no action - To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING`` - | In contexts: A2, B2a | Action: queue ``autoretrain`` work - To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` - | In context: B3 | Action: notify userspace h](h)}(h$From ``INTEL_DP_LINK_RECOVERY_IDLE``h](hFrom }(hjhhhNhNubj)}(h``INTEL_DP_LINK_RECOVERY_IDLE``h]hINTEL_DP_LINK_RECOVERY_IDLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chMhjubj)}(hhh](j)}(hMTo ``INTEL_DP_LINK_RECOVERY_IDLE`` - | In context: B1 | Action: no action h](h)}(h"To ``INTEL_DP_LINK_RECOVERY_IDLE``h](hTo }(hjhhhNhNubj)}(h``INTEL_DP_LINK_RECOVERY_IDLE``h]hINTEL_DP_LINK_RECOVERY_IDLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chMhjubj)}(hhh]j)}(h%| In context: B1 | Action: no action h]h line_block)}(hhh](hh)}(hIn context: B1h]hIn context: B1}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hindentKhj h/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKubj )}(hAction: no actionh]hAction: no action}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj hj hKubeh}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]jXjYuh1jhj hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hsTo ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING`` - | In contexts: A2, B2a | Action: queue ``autoretrain`` work h](h)}(h1To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``h](hTo }(hjJ hhhNhNubj)}(h.``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``h]h*INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING}(hjR hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chM hjF ubj)}(hhh]j)}(h<| In contexts: A2, B2a | Action: queue ``autoretrain`` work h]j )}(hhh](j )}(hIn contexts: A2, B2ah]hIn contexts: A2, B2a}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khjn h/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKubj )}(h"Action: queue ``autoretrain`` workh](hAction: queue }(hj hhhNhNubj)}(h``autoretrain``h]h autoretrain}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh work}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hj Khjn hj hKubeh}(h]h ]h"]h$]h&]uh1j hjj ubah}(h]h ]h"]h$]h&]uh1jhjg ubah}(h]h ]h"]h$]h&]jXjYuh1jhj hM hjF ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hdTo ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` - | In context: B3 | Action: notify userspace h](h)}(h2To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h](hTo }(hj hhhNhNubj)}(h/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h]h+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chMhj ubj)}(hhh]j)}(h,| In context: B3 | Action: notify userspace h]j )}(hhh](j )}(hIn context: B3h]hIn context: B3}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj h/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKubj )}(hAction: notify userspaceh]hAction: notify userspace}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj hj hKubeh}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]jXjYuh1jhj hMhj ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jXjYuh1jhj hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hXdFrom ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING`` - To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` - | In contexts: A3a, B2b | Action: select fallback configurations, notify userspace - | In context: B3 | Action: notify userspace - To ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` - | In contexts: A3b, B2b | Action: notify userspace h](h)}(h3From ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``h](hFrom }(hj( hhhNhNubj)}(h.``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``h]h*INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING}(hj0 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj( ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chMhj$ ubj)}(hhh](j)}(hTo ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` - | In contexts: A3a, B2b | Action: select fallback configurations, notify userspace - | In context: B3 | Action: notify userspace Jh](h)}(h2To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h](hTo }(hjL hhhNhNubj)}(h/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h]h+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED}(hjT hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chMhjH ubj)}(hhh](j)}(hS| In contexts: A3a, B2b | Action: select fallback configurations, notify userspace h]j )}(hhh](j )}(hIn contexts: A3a, B2bh]hIn contexts: A3a, B2b}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khjp h/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKubj )}(h8Action: select fallback configurations, notify userspaceh]h8Action: select fallback configurations, notify userspace}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khjp hj hKubeh}(h]h ]h"]h$]h&]uh1j hjl ubah}(h]h ]h"]h$]h&]uh1jhji ubj)}(h,| In context: B3 | Action: notify userspace h]j )}(hhh](j )}(hIn context: B3h]hIn context: B3}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj hj hKubj )}(hAction: notify userspaceh]hAction: notify userspace}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj hj hKubeh}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhji ubeh}(h]h ]h"]h$]h&]jXjYuh1jhj hMhjH ubeh}(h]h ]h"]h$]h&]uh1jhjE ubj)}(hbTo ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` - | In contexts: A3b, B2b | Action: notify userspace h](h)}(h)To ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``h](hTo }(hj hhhNhNubj)}(h&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``h]h"INTEL_DP_LINK_RECOVERY_NO_FALLBACK}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chMhj ubj)}(hhh]j)}(h3| In contexts: A3b, B2b | Action: notify userspace h]j )}(hhh](j )}(hIn contexts: A3b, B2bh]hIn contexts: A3b, B2b}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj h/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKubj )}(hAction: notify userspaceh]hAction: notify userspace}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj hj hKubeh}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]jXjYuh1jhj hMhj ubeh}(h]h ]h"]h$]h&]uh1jhjE ubeh}(h]h ]h"]h$]h&]jXjYuh1jhjh hMhj$ ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hX0From ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` - To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` - | In contexts: A3a, B2b | Action: select fallback configurations, notify userspace - To ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` - | In contexts: A3b, B2b | Action: notify userspace h](h)}(h4From ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h](hFrom }(hjG hhhNhNubj)}(h/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h]h+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED}(hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chM"hjC ubj)}(hhh](j)}(hTo ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` - | In contexts: A3a, B2b | Action: select fallback configurations, notify userspace h](h)}(h2To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h](hTo }(hjk hhhNhNubj)}(h/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``h]h+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chM$hjg ubj)}(hhh]j)}(hS| In contexts: A3a, B2b | Action: select fallback configurations, notify userspace h]j )}(hhh](j )}(hIn contexts: A3a, B2bh]hIn contexts: A3a, B2b}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj h/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKubj )}(h8Action: select fallback configurations, notify userspaceh]h8Action: select fallback configurations, notify userspace}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj hj hKubeh}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]jXjYuh1jhj hM&hjg ubeh}(h]h ]h"]h$]h&]uh1jhjd ubj)}(hbTo ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` - | In contexts: A3b, B2b | Action: notify userspace h](h)}(h)To ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``h](hTo }(hj hhhNhNubj)}(h&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``h]h"INTEL_DP_LINK_RECOVERY_NO_FALLBACK}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chM)hj ubj)}(hhh]j)}(h3| In contexts: A3b, B2b | Action: notify userspace h]j )}(hhh](j )}(hIn contexts: A3b, B2bh]hIn contexts: A3b, B2b}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj h/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKubj )}(hAction: notify userspaceh]hAction: notify userspace}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj hj hKubeh}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]jXjYuh1jhj hM+hj ubeh}(h]h ]h"]h$]h&]uh1jhjd ubeh}(h]h ]h"]h$]h&]jXjYuh1jhj hM$hjC ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hFrom ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` - To ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` - | In contexts: A3b | Action: notify userspace h](h)}(h+From ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``h](hFrom }(hj7 hhhNhNubj)}(h&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``h]h"INTEL_DP_LINK_RECOVERY_NO_FALLBACK}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7 ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chM.hj3 ubj)}(hhh]j)}(h]To ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` - | In contexts: A3b | Action: notify userspace h](h)}(h)To ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``h](hTo }(hj[ hhhNhNubj)}(h&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``h]h"INTEL_DP_LINK_RECOVERY_NO_FALLBACK}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chM0hjW ubj)}(hhh]j)}(h.| In contexts: A3b | Action: notify userspace h]j )}(hhh](j )}(hIn contexts: A3bh]hIn contexts: A3b}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj h/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKubj )}(hAction: notify userspaceh]hAction: notify userspace}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj hj hKubeh}(h]h ]h"]h$]h&]uh1j hj{ ubah}(h]h ]h"]h$]h&]uh1jhjx ubah}(h]h ]h"]h$]h&]jXjYuh1jhj hM2hjW ubeh}(h]h ]h"]h$]h&]uh1jhjT ubah}(h]h ]h"]h$]h&]jXjYuh1jhjw hM0hj3 ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hcFrom any state - To ``INTEL_DP_LINK_RECOVERY_IDLE`` - | In contexts: C | Action: no action h](h)}(hFrom any stateh]hFrom any state}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chM5hj ubj)}(hhh]j)}(hMTo ``INTEL_DP_LINK_RECOVERY_IDLE`` - | In contexts: C | Action: no action h](h)}(h"To ``INTEL_DP_LINK_RECOVERY_IDLE``h](hTo }(hj hhhNhNubj)}(h``INTEL_DP_LINK_RECOVERY_IDLE``h]hINTEL_DP_LINK_RECOVERY_IDLE}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chM7hj ubj)}(hhh]j)}(h%| In contexts: C | Action: no action h]j )}(hhh](j )}(hIn contexts: Ch]hIn contexts: C}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj h/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chKubj )}(hAction: no actionh]hAction: no action}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hj Khj hj hKubeh}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]jXjYuh1jhj hM9hj ubeh}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]jXjYuh1jhj hM7hj ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jXjYuh1jhjhMhjubeh}(h]state-transition-summaryah ]h"]state transition summaryah$]h&]uh1hhhhhhNhNubh)}(hhh](h)}(hRecovery flowsh]hRecovery flows}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjS hNhNubh)}(h!Userspace modeset link recovery::h]h Userspace modeset link recovery:}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chM?hjS ubh literal_block)}(hXI [IDLE] | | userspace modeset link training fails | (autoretrain link recovery work scheduled) v [AUTORETRAIN_PENDING]-- autoretrain link recovery succeeds -> [IDLE] | | autoretrain link recovery modeset check or link training fails | +--o--+ modeset check fails | | link training fails (userspace notified) | | | o-------- no fallback (userspace notified) ---> [NO_FALLBACK] | | +-------------+ | | fallback selected (userspace notified) | | | | | v v v | [AUTORETRAIN_DISABLED]--- userspace link recovery succeeds ----> [IDLE] | | | | userspace link recovery fails | | +-------------------o------------- no fallback (userspace notified) ----> [NO_FALLBACK] fallback selected (userspace notified)h]hXI [IDLE] | | userspace modeset link training fails | (autoretrain link recovery work scheduled) v [AUTORETRAIN_PENDING]-- autoretrain link recovery succeeds -> [IDLE] | | autoretrain link recovery modeset check or link training fails | +--o--+ modeset check fails | | link training fails (userspace notified) | | | o-------- no fallback (userspace notified) ---> [NO_FALLBACK] | | +-------------+ | | fallback selected (userspace notified) | | | | | v v v | [AUTORETRAIN_DISABLED]--- userspace link recovery succeeds ----> [IDLE] | | | | userspace link recovery fails | | +-------------------o------------- no fallback (userspace notified) ----> [NO_FALLBACK] fallback selected (userspace notified)}hju sbah}(h]h ]h"]h$]h&]hhuh1js h/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chMAhjS ubh)}(h(Asynchronous link degradation recovery::h]h'Asynchronous link degradation recovery:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chMZhjS ubjt )}(hXf [IDLE] | | link degrades | (autoretrain link recovery performed) | o--- autoretrain link recovery succeeds ---> [IDLE] | | autoretrain link recovery modeset check or link training fails | +--o--+ modeset check fails | | link training fails (userspace notified) | | (autoretrain work scheduled) v v [AUTORETRAIN_DISABLED*] [AUTORETRAIN_PENDING*]h]hXf [IDLE] | | link degrades | (autoretrain link recovery performed) | o--- autoretrain link recovery succeeds ---> [IDLE] | | autoretrain link recovery modeset check or link training fails | +--o--+ modeset check fails | | link training fails (userspace notified) | | (autoretrain work scheduled) v v [AUTORETRAIN_DISABLED*] [AUTORETRAIN_PENDING*]}hj sbah}(h]h ]h"]h$]h&]hhuh1js h/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chM\hjS ubh)}(h``*`` marks states where the sequence continues from the corresponding state in the Userspace modeset link recovery flow above.h](j)}(h``*``h]h*}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubhz marks states where the sequence continues from the corresponding state in the Userspace modeset link recovery flow above.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.chMkhjS ubeh}(h]recovery-flowsah ]h"]recovery flowsah$]h&]uh1hhhhhhNhNubeh}(h]displayport-link-trainingah ]h"]displayport link trainingah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j j jj}jjjP jM j j u nametypes}(j jjjP j uh}(j hj}j.jjjM jj jS u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages](hsystem_message)}(hhh]h)}(h:Enumerated list start value not ordinal-1: "B" (ordinal 2)h]h>Enumerated list start value not ordinal-1: “B” (ordinal 2)}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVubah}(h]h ]h"]h$]h&]levelKtypeINFOsource/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.clineMnuh1jThjubjU)}(hhh]h)}(h:Enumerated list start value not ordinal-1: "C" (ordinal 3)h]h>Enumerated list start value not ordinal-1: “C” (ordinal 3)}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjsubah}(h]h ]h"]h$]h&]levelKtypejosourcejqlineMnuh1jThjubetransform_messages] transformerN include_log] decorationNhhub.