€•­YŒ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”Œ&/translations/zh_CN/admin-guide/mm/kho”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/zh_TW/admin-guide/mm/kho”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/it_IT/admin-guide/mm/kho”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/ja_JP/admin-guide/mm/kho”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/ko_KR/admin-guide/mm/kho”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/pt_BR/admin-guide/mm/kho”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/sp_SP/admin-guide/mm/kho”Œ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: GPL-2.0-or-later”h]”hŒ)SPDX-License-Identifier: GPL-2.0-or-later”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ@/var/lib/git/docbuild/linux/Documentation/admin-guide/mm/kho.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒKexec Handover Usage”h]”hŒKexec Handover Usage”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒKexec HandOver (KHO) is a mechanism that allows Linux to preserve memory regions, which could contain serialized system states, across kexec.”h]”hŒKexec HandOver (KHO) is a mechanism that allows Linux to preserve memory regions, which could contain serialized system states, across kexec.”…””}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)”}”(hŒŽThis document expects that you are familiar with the base KHO :ref:`concepts `. If you have not read them yet, please do so now.”h]”(hŒ>This document expects that you are familiar with the base KHO ”…””}”(hhíh²hh³Nh´Nubh)”}”(hŒ:ref:`concepts `”h]”hŒinline”“”)”}”(hh÷h]”hŒconcepts”…””}”(hhûh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1hùhhõubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œadmin-guide/mm/kho”Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œ kho-concepts”uh1hh³hÇh´K hhíubhŒ2. If you have not read them yet, please do so now.”…””}”(hhíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhÊh²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒ Prerequisites”h]”hŒ Prerequisites”…””}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj$h²hh³hÇh´KubhÞ)”}”(hŒâKHO is available when the kernel is compiled with ``CONFIG_KEXEC_HANDOVER`` set to y. Every KHO producer may have its own config option that you need to enable if you would like to preserve their respective state across kexec.”h]”(hŒ2KHO is available when the kernel is compiled with ”…””}”(hj5h²hh³Nh´NubhŒliteral”“”)”}”(hŒ``CONFIG_KEXEC_HANDOVER``”h]”hŒCONFIG_KEXEC_HANDOVER”…””}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj5ubhŒ— set to y. Every KHO producer may have its own config option that you need to enable if you would like to preserve their respective state across kexec.”…””}”(hj5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj$h²hubhÞ)”}”(hXHTo use KHO, please boot the kernel with the ``kho=on`` command line parameter. You may use ``kho_scratch`` parameter to define size of the scratch regions. For example ``kho_scratch=16M,512M,256M`` will reserve a 16 MiB low memory scratch area, a 512 MiB global scratch region, and 256 MiB per NUMA node scratch regions on boot.”h]”(hŒ,To use KHO, please boot the kernel with the ”…””}”(hjWh²hh³Nh´Nubj>)”}”(hŒ ``kho=on``”h]”hŒkho=on”…””}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjWubhŒ% command line parameter. You may use ”…””}”(hjWh²hh³Nh´Nubj>)”}”(hŒ``kho_scratch``”h]”hŒ kho_scratch”…””}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjWubhŒ> parameter to define size of the scratch regions. For example ”…””}”(hjWh²hh³Nh´Nubj>)”}”(hŒ``kho_scratch=16M,512M,256M``”h]”hŒkho_scratch=16M,512M,256M”…””}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjWubhŒƒ will reserve a 16 MiB low memory scratch area, a 512 MiB global scratch region, and 256 MiB per NUMA node scratch regions on boot.”…””}”(hjWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj$h²hubeh}”(h]”Œ prerequisites”ah ]”h"]”Œ prerequisites”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒPerform a KHO kexec”h]”hŒPerform a KHO kexec”…””}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj£h²hh³hÇh´KubhÞ)”}”(hXTo perform a KHO kexec, load the target payload and kexec into it. It is important that you use the ``-s`` parameter to use the in-kernel kexec file loader, as user space kexec tooling currently has no support for KHO with the user space based file loader ::”h]”(hŒdTo perform a KHO kexec, load the target payload and kexec into it. It is important that you use the ”…””}”(hj´h²hh³Nh´Nubj>)”}”(hŒ``-s``”h]”hŒ-s”…””}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj´ubhŒ• parameter to use the in-kernel kexec file loader, as user space kexec tooling currently has no support for KHO with the user space based file loader”…””}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj£h²hubhŒ literal_block”“”)”}”(hŒB# kexec -l /path/to/bzImage --initrd /path/to/initrd -s # kexec -e”h]”hŒB# kexec -l /path/to/bzImage --initrd /path/to/initrd -s # kexec -e”…””}”hjÖsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÔh³hÇh´K$hj£h²hubhÞ)”}”(hŒLThe new kernel will boot up and contain some of the previous kernel's state.”h]”hŒNThe new kernel will boot up and contain some of the previous kernel’s state.”…””}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K'hj£h²hubhÞ)”}”(hŒ»For example, if you used ``reserve_mem`` command line parameter to create an early memory reservation, the new kernel will have that memory at the same physical address as the old kernel.”h]”(hŒFor example, if you used ”…””}”(hjòh²hh³Nh´Nubj>)”}”(hŒ``reserve_mem``”h]”hŒ reserve_mem”…””}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjòubhŒ“ command line parameter to create an early memory reservation, the new kernel will have that memory at the same physical address as the old kernel.”…””}”(hjòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K)hj£h²hubeh}”(h]”Œperform-a-kho-kexec”ah ]”h"]”Œperform a kho kexec”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒKexec Metadata”h]”hŒKexec Metadata”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K.ubhÞ)”}”(hŒÜKHO automatically tracks metadata about the kexec chain, passing information about the previous kernel to the next kernel. This feature helps diagnose bugs that only reproduce when kexecing from specific kernel versions.”h]”hŒÜKHO automatically tracks metadata about the kexec chain, passing information about the previous kernel to the next kernel. This feature helps diagnose bugs that only reproduce when kexecing from specific kernel versions.”…””}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K0hjh²hubhÞ)”}”(hŒ{On each KHO kexec, the kernel logs the previous kernel's version and the number of kexec reboots since the last cold boot::”h]”hŒ|On each KHO kexec, the kernel logs the previous kernel’s version and the number of kexec reboots since the last cold boot:”…””}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K4hjh²hubjÕ)”}”(hŒA[ 0.000000] KHO: exec from: 6.19.0-rc4-next-20260107 (count 1)”h]”hŒA[ 0.000000] KHO: exec from: 6.19.0-rc4-next-20260107 (count 1)”…””}”hjGsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÔh³hÇh´K7hjh²hubhÞ)”}”(hŒThe metadata includes:”h]”hŒThe metadata includes:”…””}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K9hjh²hubhŒdefinition_list”“”)”}”(hhh]”(hŒdefinition_list_item”“”)”}”(hŒk``previous_release`` The kernel version string (from ``uname -r``) of the kernel that initiated the kexec. ”h]”(hŒterm”“”)”}”(hŒ``previous_release``”h]”j>)”}”(hjrh]”hŒprevious_release”…””}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jnh³hÇh´K=hjjubhŒ definition”“”)”}”(hhh]”hÞ)”}”(hŒUThe kernel version string (from ``uname -r``) of the kernel that initiated the kexec.”h]”(hŒ The kernel version string (from ”…””}”(hjŒh²hh³Nh´Nubj>)”}”(hŒ ``uname -r``”h]”hŒuname -r”…””}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjŒubhŒ)) of the kernel that initiated the kexec.”…””}”(hjŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K)”}”(hj¾h]”hŒ kexec_count”…””}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jnh³hÇh´KChj¸ubjˆ)”}”(hhh]”hÞ)”}”(hŒÒThe number of kexec boots since the last cold boot. On cold boot, this counter starts at 0 and increments with each kexec. This helps identify issues that only manifest after multiple consecutive kexec reboots.”h]”hŒÒThe number of kexec boots since the last cold boot. On cold boot, this counter starts at 0 and increments with each kexec. This helps identify issues that only manifest after multiple consecutive kexec reboots.”…””}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K@hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KChjeh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jchjh²hh³hÇh´NubhÉ)”}”(hhh]”(hÎ)”}”(hŒ Use Cases”h]”hŒ Use Cases”…””}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjöh²hh³hÇh´KFubhÞ)”}”(hŒÇThis metadata is particularly useful for debugging kexec transition bugs, where a buggy kernel kexecs into a new kernel and the bug manifests only in the second kernel. Examples of such bugs include:”h]”hŒÇThis metadata is particularly useful for debugging kexec transition bugs, where a buggy kernel kexecs into a new kernel and the bug manifests only in the second kernel. Examples of such bugs include:”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KHhjöh²hubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒCMemory corruption from the previous kernel affecting the new kernel”h]”hÞ)”}”(hjh]”hŒCMemory corruption from the previous kernel affecting the new kernel”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KLhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj)”}”(hŒ4Incorrect hardware state left by the previous kernel”h]”hÞ)”}”(hj5h]”hŒ4Incorrect hardware state left by the previous kernel”…””}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KMhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj)”}”(hŒ?Firmware/ACPI state issues that only appear in kexec scenarios ”h]”hÞ)”}”(hŒ>Firmware/ACPI state issues that only appear in kexec scenarios”h]”hŒ>Firmware/ACPI state issues that only appear in kexec scenarios”…””}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KNhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jh³hÇh´KLhjöh²hubhÞ)”}”(hŒŸAt scale, correlating crashes to the previous kernel version enables faster root cause analysis when issues only occur in specific kernel transition scenarios.”h]”hŒŸAt scale, correlating crashes to the previous kernel version enables faster root cause analysis when issues only occur in specific kernel transition scenarios.”…””}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KPhjöh²hubeh}”(h]”Œ use-cases”ah ]”h"]”Œ use cases”ah$]”h&]”uh1hÈhjh²hh³hÇh´KFubeh}”(h]”Œkexec-metadata”ah ]”h"]”Œkexec metadata”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K.ubhÉ)”}”(hhh]”(hÎ)”}”(hŒdebugfs Interfaces”h]”hŒdebugfs Interfaces”…””}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjˆh²hh³hÇh´KUubhÞ)”}”(hŒrThese debugfs interfaces are available when the kernel is compiled with ``CONFIG_KEXEC_HANDOVER_DEBUGFS`` enabled.”h]”(hŒHThese debugfs interfaces are available when the kernel is compiled with ”…””}”(hj™h²hh³Nh´Nubj>)”}”(hŒ!``CONFIG_KEXEC_HANDOVER_DEBUGFS``”h]”hŒCONFIG_KEXEC_HANDOVER_DEBUGFS”…””}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj™ubhŒ enabled.”…””}”(hj™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KWhjˆh²hubhÞ)”}”(hŒ¢Currently KHO creates the following debugfs interfaces. Notice that these interfaces may change in the future. They will be moved to sysfs once KHO is stabilized.”h]”hŒ¢Currently KHO creates the following debugfs interfaces. Notice that these interfaces may change in the future. They will be moved to sysfs once KHO is stabilized.”…””}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KZhjˆh²hubjd)”}”(hhh]”(ji)”}”(hŒÔ``/sys/kernel/debug/kho/out/fdt`` The kernel exposes the flattened device tree blob that carries its current KHO state in this file. Kexec user space tooling can use this as input file for the KHO payload image. ”h]”(jo)”}”(hŒ!``/sys/kernel/debug/kho/out/fdt``”h]”j>)”}”(hjÐh]”hŒ/sys/kernel/debug/kho/out/fdt”…””}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jnh³hÇh´KahjÊubjˆ)”}”(hhh]”hÞ)”}”(hŒ±The kernel exposes the flattened device tree blob that carries its current KHO state in this file. Kexec user space tooling can use this as input file for the KHO payload image.”h]”hŒ±The kernel exposes the flattened device tree blob that carries its current KHO state in this file. Kexec user space tooling can use this as input file for the KHO payload image.”…””}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K_hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KahjÇubji)”}”(hX``/sys/kernel/debug/kho/out/scratch_len`` Lengths of KHO scratch regions, which are physically contiguous memory regions that will always stay available for future kexec allocations. Kexec user space tools can use this file to determine where it should place its payload images. ”h]”(jo)”}”(hŒ)``/sys/kernel/debug/kho/out/scratch_len``”h]”j>)”}”(hjh]”hŒ%/sys/kernel/debug/kho/out/scratch_len”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jnh³hÇh´Kghjubjˆ)”}”(hhh]”hÞ)”}”(hŒìLengths of KHO scratch regions, which are physically contiguous memory regions that will always stay available for future kexec allocations. Kexec user space tools can use this file to determine where it should place its payload images.”h]”hŒìLengths of KHO scratch regions, which are physically contiguous memory regions that will always stay available for future kexec allocations. Kexec user space tools can use this file to determine where it should place its payload images.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kdhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KghjÇh²hubji)”}”(hŒÕ``/sys/kernel/debug/kho/out/scratch_phys`` Physical locations of KHO scratch regions. Kexec user space tools can use this file in conjunction to scratch_phys to determine where it should place its payload images. ”h]”(jo)”}”(hŒ*``/sys/kernel/debug/kho/out/scratch_phys``”h]”j>)”}”(hj@h]”hŒ&/sys/kernel/debug/kho/out/scratch_phys”…””}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jnh³hÇh´Klhj:ubjˆ)”}”(hhh]”hÞ)”}”(hŒ©Physical locations of KHO scratch regions. Kexec user space tools can use this file in conjunction to scratch_phys to determine where it should place its payload images.”h]”hŒ©Physical locations of KHO scratch regions. Kexec user space tools can use this file in conjunction to scratch_phys to determine where it should place its payload images.”…””}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KjhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KlhjÇh²hubji)”}”(hŒ~``/sys/kernel/debug/kho/out/sub_fdts/`` KHO producers can register their own FDT or another binary blob under this directory. ”h]”(jo)”}”(hŒ'``/sys/kernel/debug/kho/out/sub_fdts/``”h]”j>)”}”(hjxh]”hŒ#/sys/kernel/debug/kho/out/sub_fdts/”…””}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jnh³hÇh´Kphjrubjˆ)”}”(hhh]”hÞ)”}”(hŒUKHO producers can register their own FDT or another binary blob under this directory.”h]”hŒUKHO producers can register their own FDT or another binary blob under this directory.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kohjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KphjÇh²hubji)”}”(hX-``/sys/kernel/debug/kho/in/fdt`` When the kernel was booted with Kexec HandOver (KHO), the state tree that carries metadata about the previous kernel's state is in this file in the format of flattened device tree. This file may disappear when all consumers of it finished to interpret their metadata. ”h]”(jo)”}”(hŒ ``/sys/kernel/debug/kho/in/fdt``”h]”j>)”}”(hj°h]”hŒ/sys/kernel/debug/kho/in/fdt”…””}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jnh³hÇh´Kwhjªubjˆ)”}”(hhh]”hÞ)”}”(hX When the kernel was booted with Kexec HandOver (KHO), the state tree that carries metadata about the previous kernel's state is in this file in the format of flattened device tree. This file may disappear when all consumers of it finished to interpret their metadata.”h]”hX When the kernel was booted with Kexec HandOver (KHO), the state tree that carries metadata about the previous kernel’s state is in this file in the format of flattened device tree. This file may disappear when all consumers of it finished to interpret their metadata.”…””}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KshjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KwhjÇh²hubji)”}”(hŒŒ``/sys/kernel/debug/kho/in/sub_fdts/`` Similar to ``kho/out/sub_fdts/``, but contains sub blobs of KHO producers passed from the old kernel.”h]”(jo)”}”(hŒ&``/sys/kernel/debug/kho/in/sub_fdts/``”h]”j>)”}”(hjèh]”hŒ"/sys/kernel/debug/kho/in/sub_fdts/”…””}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jnh³hÇh´Kzhjâubjˆ)”}”(hhh]”hÞ)”}”(hŒeSimilar to ``kho/out/sub_fdts/``, but contains sub blobs of KHO producers passed from the old kernel.”h]”(hŒ Similar to ”…””}”(hjh²hh³Nh´Nubj>)”}”(hŒ``kho/out/sub_fdts/``”h]”hŒkho/out/sub_fdts/”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjubhŒE, but contains sub blobs of KHO producers passed from the old kernel.”…””}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kzhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhh³hÇh´KzhjÇh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jchjˆh²hh³hÇh´Nubeh}”(h]”Œdebugfs-interfaces”ah ]”h"]”Œdebugfs interfaces”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KUubeh}”(h]”Œkexec-handover-usage”ah ]”h"]”Œkexec handover usage”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”jeŒ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 jjjj…j‚j}jzj7j4uŒ nametypes”}”(j?‰j ‰j‰j…‰j}‰j7‰uh}”(j<hÊjj$jj£j‚jjzjöj4jˆ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”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.