€•3Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ6/translations/zh_CN/gpu/intel-display/dp-link-training”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ6/translations/zh_TW/gpu/intel-display/dp-link-training”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ6/translations/it_IT/gpu/intel-display/dp-link-training”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ6/translations/ja_JP/gpu/intel-display/dp-link-training”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ6/translations/ko_KR/gpu/intel-display/dp-link-training”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ6/translations/pt_BR/gpu/intel-display/dp-link-training”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ6/translations/sp_SP/gpu/intel-display/dp-link-training”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒSPDX-License-Identifier: MIT”h]”hŒSPDX-License-Identifier: MIT”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training.rst”h´Kubh¶)�”}”(hŒ#Copyright © 2026 Intel Corporation”h]”hŒ#Copyright © 2026 Intel Corporation”…”�”}”hhÈsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÇh´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒDisplayPort Link Training”h]”hŒDisplayPort Link Training”…”�”}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒ…This documents the Intel DisplayPort link training implementation and its internal interfaces, with a current focus on link recovery.”h]”hŒ…This documents the Intel DisplayPort link training implementation and its internal interfaces, with a current focus on link recovery.”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K1hhØh²hubhì)�”}”(hŒFDocumentation of the full link training procedure is not yet included.”h]”hŒFDocumentation of the full link training procedure is not yet included.”…”�”}”(hhüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K4hhØh²hubhì)�”}”(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]”(hŒà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 (”…”�”}”(hj h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``autoretrain``”h]”hŒ autoretrain”…”�”}”(hjh²hh³Nh´Nubah}”(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 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K6hhØh²hubh×)�”}”(hhh]”(hÜ)�”}”(hŒ,Recovery sequence and userspace notification”h]”hŒ,Recovery sequence and userspace notification”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj.h³Nh´Nubhì)�”}”(hXµAfter 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]”hXµAfter 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?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K@hj.ubhì)�”}”(hXƒOnce 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]”hXƒOnce 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.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KHhj.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]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KOhj.ubhì)�”}”(hXŽLink 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]”hXŽLink 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.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KUhj.ubeh}”(h]”Œ,recovery-sequence-and-userspace-notification”ah ]”h"]”Œ,recovery sequence and userspace notification”ah$]”h&]”uh1hÖhhØh²hh³Nh´Nubh×)�”}”(hhh]”(hÜ)�”}”(hŒContexts”h]”hŒContexts”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjƒh³Nh´Nubhì)�”}”(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]”(hŒµThe 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 ”…”�”}”(hj”h²hh³Nh´Nubh)�”}”(hŒ\:c:type:`enum intel_dp_link_training_recovery_state `”h]”j)�”}”(hjžh]”hŒ*enum intel_dp_link_training_recovery_state”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œc”Œc-type”eh"]”h$]”h&]”uh1jhjœubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ"gpu/intel-display/dp-link-training”Œ refdomain”j«Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ reftarget”Œ%intel_dp_link_training_recovery_state”uh1hh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K_hj”ubhŒ.”…”�”}”(hj”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¿h´K_hjƒubhŒenumerated_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hŒModeset context: ”h]”hì)�”}”(hŒModeset context:”h]”hŒModeset context:”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KdhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÌubah}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œ upperalpha”Œprefix”hŒsuffix”Œ.”uh1jÊhjƒubhŒ 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]”hŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ¬Triggered 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]”(hŒterm”“”)�”}”(hŒ Triggered by:”h]”hŒ Triggered by:”…”�”}”(hjh²hh³Nh´Nubah}”(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.c”h´KihjubhŒ definition”“”)�”}”(hhh]”hŒ bullet_list”“”)�”}”(hhh]”(jÐ)�”}”(hŒ"link training during a modeset, or”h]”hì)�”}”(hj#h]”hŒ"link training during a modeset, or”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kghj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubjÐ)�”}”(hŒuvia the "i915_dp_force_link_training_failure" debugfs entry, forcing this path by emulating a link training failure. ”h]”hì)�”}”(hŒtvia the "i915_dp_force_link_training_failure" debugfs entry, forcing this path by emulating a link training failure.”h]”hŒxvia the “i915_dp_force_link_training_failureâ€� debugfs entry, forcing this path by emulating a link training failure.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Khhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jh³j2h´Kghjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´Kihjýubj)�”}”(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:”…”�”}”(hjjh²hh³Nh´Nubah}”(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.c”h´Kžhjfubj)�”}”(hhh]”j)�”}”(hhh]”(jÐ)�”}”(hŒ©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``. ”h]”(hì)�”}”(hŒA1 Link training succeeds.”h]”hŒA1 Link training succeeds.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Klhjubhì)�”}”(hŒaA link check work to recover any degraded link is scheduled (and handled if needed in context B).”h]”hŒaA link check work to recover any degraded link is scheduled (and handled if needed in context B).”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Knhjubhì)�”}”(hŒ)State -> ``INTEL_DP_LINK_RECOVERY_IDLE``.”h]”(hŒ State -> ”…”�”}”(hj¡h²hh³Nh´Nubj)�”}”(hŒ``INTEL_DP_LINK_RECOVERY_IDLE``”h]”hŒINTEL_DP_LINK_RECOVERY_IDLE”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡ubhŒ.”…”�”}”(hj¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kqhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj|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.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KshjÈubhì)�”}”(hŒ‡An automatic retraining work is scheduled (and handled in context B) with the same link parameters with which the link training failed.”h]”hŒ‡An automatic retraining work is scheduled (and handled in context B) with the same link parameters with which the link training failed.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KvhjÈubhì)�”}”(hŒ8State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``.”h]”(hŒ State -> ”…”�”}”(hjêh²hh³Nh´Nubj)�”}”(hŒ.``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``”h]”hŒ*INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêubhŒ.”…”�”}”(hjêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KzhjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj|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.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K|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$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K~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.)”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K…hjubjü)�”}”(hhh]”j)�”}”(hŒƒThis case may repeat in a loop: ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` ”h]”(j)�”}”(hŒThis case may repeat in a loop:”h]”hŒThis case may repeat in a loop:”…”�”}”(hjIh²hh³Nh´Nubah}”(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.c”h´K�hjEubj)�”}”(hhh]”hì)�”}”(hŒb``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_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[ubhŒ -> ”…”�”}”(hj[h²hh³Nh´Nubj)�”}”(hŒ/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”hŒ+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KŒhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jWh´K�hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jûhjubhì)�”}”(hŒxvia repeated A3a -> A3a transitions until the configuration fallback space is exhausted, reaching the A3b terminal case.”h]”hŒxvia repeated A3a -> A3a transitions until the configuration fallback space is exhausted, reaching the A3b terminal case.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K�hjubj)�”}”(hhh]”(jÐ)�”}”(hŒ‰A3a 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.”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K’hjªubhì)�”}”(hŒ+Userspace is notified to retry the modeset.”h]”hŒ+Userspace is notified to retry the modeset.”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K”hjªubhì)�”}”(hŒ9State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``.”h]”(hŒ State -> ”…”�”}”(hjÌh²hh³Nh´Nubj)�”}”(hŒ/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”hŒ+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌubhŒ.”…”�”}”(hjÌh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K–hjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj§ubjÐ)�”}”(hŒ×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ŒA3b Fallback selection fails.”h]”hŒA3b Fallback selection fails.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K˜hjóubhì)�”}”(hŒ…Userspace is notified of the failure and may continue recovery by retrying the modeset with the remaining allowed link configuration.”h]”hŒ…Userspace is notified of the failure and may continue recovery by retrying the modeset with the remaining allowed link configuration.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kšhjóubhì)�”}”(hŒ0State -> ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``.”h]”(hŒ State -> ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``”h]”hŒ"INTEL_DP_LINK_RECOVERY_NO_FALLBACK”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jxh´Kžhjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj§ubeh}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j¼h´K’hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj|ubeh}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j‘h´Klhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jxh´Kžhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jûhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jõh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KfhjƒubjË)�”}”(hhh]”jÐ)�”}”(hŒAutomatic retraining context: ”h]”hì)�”}”(hŒAutomatic retraining context:”h]”hŒAutomatic retraining context:”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjfubah}”(h]”h ]”h"]”h$]”h&]”jðjñjòhjójôŒstart”Kuh1jÊhjƒubjö)�”}”(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:”…”�”}”(hj”h²hh³Nh´Nubah}”(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.c”h´K§hj�ubj)�”}”(hhh]”j)�”}”(hhh]”(jÐ)�”}”(hŒ\after a successful link training in context A1 followed by asynchronous link degradation, or”h]”hì)�”}”(hŒ\after a successful link training in context A1 followed by asynchronous link degradation, or”h]”hŒ\after a successful link training in context A1 followed by asynchronous link degradation, or”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K£hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¦ubjÐ)�”}”(hŒ>after the first failed link training attempt in context A2, or”h]”hì)�”}”(hjÄh]”hŒ>after the first failed link training attempt in context A2, or”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K¥hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¦ubjÐ)�”}”(hŒhvia the "i915_dp_force_link_retrain" debugfs entry, which may bypass normal gating and force this path. ”h]”hì)�”}”(hŒgvia the "i915_dp_force_link_retrain" debugfs entry, which may bypass normal gating and force this path.”h]”hŒkvia the “i915_dp_force_link_retrainâ€� debugfs entry, which may bypass normal gating and force this path.”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K¦hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j»h´K£hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¢h´K§hj�ubj)�”}”(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 h²hh³Nh´Nubah}”(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.c”h´Kìhjubj)�”}”(hhh]”j)�”}”(hhh]”(jÐ)�”}”(hŒÂ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``. ”h]”(hì)�”}”(hŒ ``INTEL_DP_LINK_RECOVERY_IDLE``.”h]”(hŒ State -> ”…”�”}”(hjRh²hh³Nh´Nubj)�”}”(hŒ``INTEL_DP_LINK_RECOVERY_IDLE``”h]”hŒINTEL_DP_LINK_RECOVERY_IDLE”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRubhŒ.”…”�”}”(hjRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K¯hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubjÐ)�”}”(hX»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). ”h]”(hì)�”}”(hŒBB2 ``Autoretrain`` modeset check succeeds but link training fails.”h]”(hŒB2 ”…”�”}”(hj}h²hh³Nh´Nubj)�”}”(hŒ``Autoretrain``”h]”hŒ Autoretrain”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}ubhŒ0 modeset check succeeds but link training fails.”…”�”}”(hj}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K±hjyubj)�”}”(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ì)�”}”(hŒcB2a Previously the link degraded asynchronously (current state is ``INTEL_DP_LINK_RECOVERY_IDLE``).”h]”(hŒBB2a Previously the link degraded asynchronously (current state is ”…”�”}”(hj¥h²hh³Nh´Nubj)�”}”(hŒ``INTEL_DP_LINK_RECOVERY_IDLE``”h]”hŒINTEL_DP_LINK_RECOVERY_IDLE”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥ubhŒ).”…”�”}”(hj¥h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K³hj¡ubhì)�”}”(hŒ¢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.”h]”hŒ¢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.”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K¶hj¡ubhì)�”}”(hŒ8State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``.”h]”(hŒ State -> ”…”�”}”(hjÕh²hh³Nh´Nubj)�”}”(hŒ.``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``”h]”hŒ*INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕubhŒ.”…”�”}”(hjÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kºhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjžubjÐ)�”}”(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ì)�”}”(hŒhB2b Previously a link training failed (current state is ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``).”h]”(hŒ8B2b Previously a link training failed (current state is ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ.``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``”h]”hŒ*INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ).”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K¼hjüubhì)�”}”(hŒß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.”h]”(hŒFIn non-regular (debug-forced) scenarios this may also be reached from ”…”�”}”(hj!h²hh³Nh´Nubj)�”}”(hŒ/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”hŒ+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubhŒ or ”…”�”}”(hj!h²hh³Nh´Nubj)�”}”(hŒ&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``”h]”hŒ"INTEL_DP_LINK_RECOVERY_NO_FALLBACK”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubhŒ@, effectively behaving like a userspace-driven recovery attempt.”…”�”}”(hj!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K¿hjüubhì)�”}”(hŒAThe failure is handled as in A3, performing a fallback selection:”h]”hŒAThe failure is handled as in A3, performing a fallback selection:”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KÅhjüubhì)�”}”(hŒCState -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` (via A3a).”h]”(hŒ State -> ”…”�”}”(hjch²hh³Nh´Nubj)�”}”(hŒ/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”hŒ+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcubhŒ (via A3a).”…”�”}”(hjch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KÇhjüubhì)�”}”(hŒor”h]”hŒor”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KÉhjüubhì)�”}”(hŒ:State -> ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` (via A3b).”h]”(hŒ State -> ”…”�”}”(hj“h²hh³Nh´Nubj)�”}”(hŒ&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``”h]”hŒ"INTEL_DP_LINK_RECOVERY_NO_FALLBACK”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“ubhŒ (via A3b).”…”�”}”(hj“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KËhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjžubeh}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³jÅh´K³hjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubjÐ)�”}”(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ì)�”}”(hŒWB3 ``Autoretrain`` modeset check fails (and hence the link training cannot be started).”h]”(hŒB3 ”…”�”}”(hjÊh²hh³Nh´Nubj)�”}”(hŒ``Autoretrain``”h]”hŒ Autoretrain”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊubhŒE modeset check fails (and hence the link training cannot be started).”…”�”}”(hjÊh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KÍhjÆubhì)�”}”(hŒ³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.”h]”hŒ³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.”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KÐhjÆubhì)�”}”(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.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KÔhjÆubhì)�”}”(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 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KÞhjÆubhì)�”}”(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.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KéhjÆubhì)�”}”(hŒ9State -> ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``.”h]”(hŒ State -> ”…”�”}”(hj'h²hh³Nh´Nubj)�”}”(hŒ/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”hŒ+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubhŒ.”…”�”}”(hj'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´KìhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubeh}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³jBh´Kªhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´Kìhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jûhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jõh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´K¢hjƒubjË)�”}”(hhh]”jÐ)�”}”(hŒState reset context: ”h]”hì)�”}”(hŒState reset context:”h]”hŒState reset context:”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kîhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjlubah}”(h]”h ]”h"]”h$]”h&]”jðjñjòhjójôjˆKuh1jÊhjƒubjö)�”}”(hXÉTriggered 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)�”}”(hŒÇTriggered 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:”…”�”}”(hj™h²hh³Nh´Nubah}”(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.c”h´Kõhj•ubj)�”}”(hhh]”j)�”}”(hhh]”(jÐ)�”}”(hŒsink capability changes, or”h]”hì)�”}”(hj°h]”hŒsink capability changes, or”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kñhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj«ubjÐ)�”}”(hŒsink disconnect/reconnect, or”h]”hì)�”}”(hjÈh]”hŒsink disconnect/reconnect, or”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KòhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj«ubjÐ)�”}”(hŒZsystem suspend/resume or power transitions where HPD handling may have been suppressed, or”h]”hì)�”}”(hŒZsystem suspend/resume or power transitions where HPD handling may have been suppressed, or”h]”hŒZsystem suspend/resume or power transitions where HPD handling may have been suppressed, or”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´KóhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj«ubjÐ)�”}”(hŒsuccessful link training. ”h]”hì)�”}”(hŒsuccessful link training.”h]”hŒsuccessful link training.”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j§h´Kõhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj«ubeh}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j¿h´Kñhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j§h´Kõhj’ubj)�”}”(hŒï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)�”}”(hŒ Transitions:”h]”hŒ Transitions:”…”�”}”(hj%h²hh³Nh´Nubah}”(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.c”h´Kýhj!ubj)�”}”(hhh]”j)�”}”(hhh]”jÐ)�”}”(hŒÚ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]”(hì)�”}”(hŒ;The recovery state is reset from any of the recovery states”h]”hŒ;The recovery state is reset from any of the recovery states”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Køhj:ubhì)�”}”(hŒ)State -> ``INTEL_DP_LINK_RECOVERY_IDLE``.”h]”(hŒ State -> ”…”�”}”(hjMh²hh³Nh´Nubj)�”}”(hŒ``INTEL_DP_LINK_RECOVERY_IDLE``”h]”hŒINTEL_DP_LINK_RECOVERY_IDLE”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjMubhŒ.”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kúhj:ubhì)�”}”(hŒqAfter reset, the driver may re-check link status and schedule retraining if the link is found to remain degraded.”h]”hŒqAfter reset, the driver may re-check link status and schedule retraining if the link is found to remain degraded.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kühj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj7ubah}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³jLh´Køhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j3h´Kýhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jûhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jõh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kðhjƒubeh}”(h]”Œcontexts”ah ]”h"]”Œcontexts”ah$]”h&]”uh1hÖhhØh²hh³Nh´Nubh×)�”}”(hhh]”(hÜ)�”}”(hŒState transition summary”h]”hŒState transition summary”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjªh³Nh´Nubj)�”}”(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]”(hŒFrom ”…”�”}”(hjÂh²hh³Nh´Nubj)�”}”(hŒ``INTEL_DP_LINK_RECOVERY_IDLE``”h]”hŒINTEL_DP_LINK_RECOVERY_IDLE”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Mhj¾ubj)�”}”(hhh]”(jÐ)�”}”(hŒMTo ``INTEL_DP_LINK_RECOVERY_IDLE`` - | In context: B1 | Action: no action ”h]”(hì)�”}”(hŒ"To ``INTEL_DP_LINK_RECOVERY_IDLE``”h]”(hŒTo ”…”�”}”(hjæh²hh³Nh´Nubj)�”}”(hŒ``INTEL_DP_LINK_RECOVERY_IDLE``”h]”hŒINTEL_DP_LINK_RECOVERY_IDLE”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Mhjâubj)�”}”(hhh]”jÐ)�”}”(hŒ%| In context: B1 | Action: no action ”h]”hŒ line_block”“”)�”}”(hhh]”(hh´“”)�”}”(hŒIn context: B1”h]”hŒIn context: B1”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´Œindent”Khj h³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kubj )�”}”(hŒAction: no action”h]”hŒAction: no action”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khj h³j h´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ubah}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j h´Mhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjßubjÐ)�”}”(hŒsTo ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING`` - | In contexts: A2, B2a | Action: queue ``autoretrain`` work ”h]”(hì)�”}”(hŒ1To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``”h]”(hŒTo ”…”�”}”(hjJ h²hh³Nh´Nubj)�”}”(hŒ.``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``”h]”hŒ*INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´M hjF ubj)�”}”(hhh]”jÐ)�”}”(hŒ<| In contexts: A2, B2a | Action: queue ``autoretrain`` work ”h]”j )�”}”(hhh]”(j )�”}”(hŒIn contexts: A2, B2a”h]”hŒIn contexts: A2, B2a”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khjn h³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kubj )�”}”(hŒ"Action: queue ``autoretrain`` work”h]”(hŒAction: queue ”…”�”}”(hj€ h²hh³Nh´Nubj)�”}”(hŒ``autoretrain``”h]”hŒ autoretrain”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ ubhŒ work”…”�”}”(hj€ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khjn h³j h´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjg ubah}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j h´M hjF ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjßubjÐ)�”}”(hŒdTo ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` - | In context: B3 | Action: notify userspace ”h]”(hì)�”}”(hŒ2To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”(hŒTo ”…”�”}”(hj¼ h²hh³Nh´Nubj)�”}”(hŒ/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”hŒ+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Mhj¸ ubj)�”}”(hhh]”jÐ)�”}”(hŒ,| In context: B3 | Action: notify userspace ”h]”j )�”}”(hhh]”(j )�”}”(hŒIn context: B3”h]”hŒIn context: B3”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khjà h³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kubj )�”}”(hŒAction: notify userspace”h]”hŒAction: notify userspace”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khjà h³jñ h´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÙ ubah}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³jñ h´Mhj¸ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjßubeh}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j h´Mhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj»ubjÐ)�”}”(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ì)�”}”(hŒ3From ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``”h]”(hŒFrom ”…”�”}”(hj( h²hh³Nh´Nubj)�”}”(hŒ.``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING``”h]”hŒ*INTEL_DP_LINK_RECOVERY_AUTORETRAIN_PENDING”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj( ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Mhj$ ubj)�”}”(hhh]”(jÐ)�”}”(hŒ¼To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` - | In contexts: A3a, B2b | Action: select fallback configurations, notify userspace - | In context: B3 | Action: notify userspace ”•¿Jh]”(hì)�”}”(hŒ2To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”(hŒTo ”…”�”}”(hjL h²hh³Nh´Nubj)�”}”(hŒ/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”hŒ+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´MhjH ubj)�”}”(hhh]”(jÐ)�”}”(hŒS| In contexts: A3a, B2b | Action: select fallback configurations, notify userspace ”h]”j )�”}”(hhh]”(j )�”}”(hŒIn contexts: A3a, B2b”h]”hŒIn contexts: A3a, B2b”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khjp h³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kubj )�”}”(hŒ8Action: select fallback configurations, notify userspace”h]”hŒ8Action: select fallback configurations, notify userspace”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khjp h³j� h´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjl ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhji ubjÐ)�”}”(hŒ,| In context: B3 | Action: notify userspace ”h]”j )�”}”(hhh]”(j )�”}”(hŒIn context: B3”h]”hŒIn context: B3”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khj  h³j� h´Kubj )�”}”(hŒAction: notify userspace”h]”hŒAction: notify userspace”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khj  h³j� h´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjœ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhji ubeh}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j� h´MhjH ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjE ubjÐ)�”}”(hŒbTo ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` - | In contexts: A3b, B2b | Action: notify userspace ”h]”(hì)�”}”(hŒ)To ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``”h]”(hŒTo ”…”�”}”(hjÛ h²hh³Nh´Nubj)�”}”(hŒ&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``”h]”hŒ"INTEL_DP_LINK_RECOVERY_NO_FALLBACK”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Mhj× ubj)�”}”(hhh]”jÐ)�”}”(hŒ3| In contexts: A3b, B2b | Action: notify userspace ”h]”j )�”}”(hhh]”(j )�”}”(hŒIn contexts: A3b, B2b”h]”hŒIn contexts: A3b, B2b”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khjÿ h³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kubj )�”}”(hŒAction: notify userspace”h]”hŒAction: notify userspace”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khjÿ h³j h´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjû ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjø ubah}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j h´Mhj× ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjE ubeh}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³jh h´Mhj$ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj»ubjÐ)�”}”(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ì)�”}”(hŒ4From ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”(hŒFrom ”…”�”}”(hjG h²hh³Nh´Nubj)�”}”(hŒ/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”hŒ+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´M"hjC ubj)�”}”(hhh]”(jÐ)�”}”(hŒ‹To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED`` - | In contexts: A3a, B2b | Action: select fallback configurations, notify userspace ”h]”(hì)�”}”(hŒ2To ``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”(hŒTo ”…”�”}”(hjk h²hh³Nh´Nubj)�”}”(hŒ/``INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED``”h]”hŒ+INTEL_DP_LINK_RECOVERY_AUTORETRAIN_DISABLED”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjk ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´M$hjg ubj)�”}”(hhh]”jÐ)�”}”(hŒS| In contexts: A3a, B2b | Action: select fallback configurations, notify userspace ”h]”j )�”}”(hhh]”(j )�”}”(hŒIn contexts: A3a, B2b”h]”hŒIn contexts: A3a, B2b”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khj� h³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kubj )�”}”(hŒ8Action: select fallback configurations, notify userspace”h]”hŒ8Action: select fallback configurations, notify userspace”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khj� h³j  h´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjˆ ubah}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j  h´M&hjg ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjd ubjÐ)�”}”(hŒbTo ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK`` - | In contexts: A3b, B2b | Action: notify userspace ”h]”(hì)�”}”(hŒ)To ``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``”h]”(hŒTo ”…”�”}”(hjË h²hh³Nh´Nubj)�”}”(hŒ&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``”h]”hŒ"INTEL_DP_LINK_RECOVERY_NO_FALLBACK”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjË ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´M)hjÇ ubj)�”}”(hhh]”jÐ)�”}”(hŒ3| In contexts: A3b, B2b | Action: notify userspace ”h]”j )�”}”(hhh]”(j )�”}”(hŒIn contexts: A3b, B2b”h]”hŒIn contexts: A3b, B2b”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khjï h³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kubj )�”}”(hŒAction: notify userspace”h]”hŒAction: notify userspace”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khjï h³j h´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjë ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjè ubah}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j h´M+hjÇ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjd ubeh}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j‡ h´M$hjC ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj»ubjÐ)�”}”(hŒ�From ``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]”(hŒFrom ”…”�”}”(hj7 h²hh³Nh´Nubj)�”}”(hŒ&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``”h]”hŒ"INTEL_DP_LINK_RECOVERY_NO_FALLBACK”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´M.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]”(hŒTo ”…”�”}”(hj[ h²hh³Nh´Nubj)�”}”(hŒ&``INTEL_DP_LINK_RECOVERY_NO_FALLBACK``”h]”hŒ"INTEL_DP_LINK_RECOVERY_NO_FALLBACK”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´M0hjW ubj)�”}”(hhh]”jÐ)�”}”(hŒ.| In contexts: A3b | Action: notify userspace ”h]”j )�”}”(hhh]”(j )�”}”(hŒIn contexts: A3b”h]”hŒIn contexts: A3b”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khj h³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kubj )�”}”(hŒAction: notify userspace”h]”hŒAction: notify userspace”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khj h³j� h´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj{ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjx ubah}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j� h´M2hjW ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjT ubah}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³jw h´M0hj3 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj»ubjÐ)�”}”(hŒcFrom any state - To ``INTEL_DP_LINK_RECOVERY_IDLE`` - | In contexts: C | Action: no action ”h]”(hì)�”}”(hŒFrom any state”h]”hŒFrom any state”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´M5hjà ubj)�”}”(hhh]”jÐ)�”}”(hŒMTo ``INTEL_DP_LINK_RECOVERY_IDLE`` - | In contexts: C | Action: no action ”h]”(hì)�”}”(hŒ"To ``INTEL_DP_LINK_RECOVERY_IDLE``”h]”(hŒTo ”…”�”}”(hjÝ h²hh³Nh´Nubj)�”}”(hŒ``INTEL_DP_LINK_RECOVERY_IDLE``”h]”hŒINTEL_DP_LINK_RECOVERY_IDLE”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´M7hjÙ ubj)�”}”(hhh]”jÐ)�”}”(hŒ%| In contexts: C | Action: no action ”h]”j )�”}”(hhh]”(j )�”}”(hŒIn contexts: C”h]”hŒIn contexts: C”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khj h³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´Kubj )�”}”(hŒAction: no action”h]”hŒAction: no action”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j Khj h³j h´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjý ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjú ubah}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³j h´M9hjÙ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÖ ubah}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³jù h´M7hjà ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj»ubeh}”(h]”h ]”h"]”h$]”h&]”jXjYuh1jh³jÞh´Mhjªubeh}”(h]”Œstate-transition-summary”ah ]”h"]”Œstate transition summary”ah$]”h&]”uh1hÖhhØh²hh³Nh´Nubh×)�”}”(hhh]”(hÜ)�”}”(hŒRecovery flows”h]”hŒRecovery flows”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjS h³Nh´Nubhì)�”}”(hŒ!Userspace modeset link recovery::”h]”hŒ Userspace modeset link recovery:”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´M?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&]”hÅhÆuh1js h³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´MAhjS ubhì)�”}”(hŒ(Asynchronous link degradation recovery::”h]”hŒ'Asynchronous link degradation recovery:”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´MZhjS 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&]”hÅhÆuh1js h³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´M\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¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢ ubhŒz marks states where the sequence continues from the corresponding state in the Userspace modeset link recovery flow above.”…”�”}”(hj¢ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”h´MkhjS ubeh}”(h]”Œrecovery-flows”ah ]”h"]”Œrecovery flows”ah$]”h&]”uh1hÖhhØh²hh³Nh´Nubeh}”(h]”Œdisplayport-link-training”ah ]”h"]”Œdisplayport link training”ah$]”h&]”uh1hÖhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÛNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jò Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jÌ jÉ j€j}j§j¤jP jM jÄ jÁ uŒ nametypes”}”(jÌ ‰j€‰j§‰jP ‰jÄ ‰uh}”(jÉ hØj}j.j¤jƒjM jªjÁ jS uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”(hŒsystem_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)”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjVubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”Œ‡/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/dp-link-training:7: ./drivers/gpu/drm/i915/display/intel_dp_link_training.c”Œline”Mnuh1jThjƒubjU)�”}”(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)”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjsubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”joŒsource”jqŒline”Mnuh1jThjƒubeŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.