€•ÄTŒ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Œ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”hòŒ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”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjhž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 ”…””}”(hj!hžhhŸNh NubhŒliteral”“”)”}”(hŒ``CONFIG_KEXEC_HANDOVER``”h]”hŒCONFIG_KEXEC_HANDOVER”…””}”(hj+hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj!ubhŒ— 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.”…””}”(hj!hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khjhž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 ”…””}”(hjChžhhŸNh Nubj*)”}”(hŒ ``kho=on``”h]”hŒkho=on”…””}”(hjKhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjCubhŒ% command line parameter. You may use ”…””}”(hjChžhhŸNh Nubj*)”}”(hŒ``kho_scratch``”h]”hŒ kho_scratch”…””}”(hj]hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjCubhŒ> parameter to define size of the scratch regions. For example ”…””}”(hjChžhhŸNh Nubj*)”}”(hŒ``kho_scratch=16M,512M,256M``”h]”hŒkho_scratch=16M,512M,256M”…””}”(hjohžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjCubhŒƒ 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.”…””}”(hjChžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khjhž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¹hjhžhhŸh³h KubhÊ)”}”(hŒ…First, before you perform a KHO kexec, you need to move the system into the :ref:`KHO finalization phase ` ::”h]”(hŒLFirst, before you perform a KHO kexec, you need to move the system into the ”…””}”(hj hžhhŸNh Nubh)”}”(hŒ6:ref:`KHO finalization phase `”h]”hæ)”}”(hjªh]”hŒKHO finalization phase”…””}”(hj¬hžhhŸNh Nubah}”(h]”h ]”(hñŒstd”Œstd-ref”eh"]”h$]”h&]”uh1håhj¨ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hþŒ refdomain”j¶Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒkho-finalization-phase”uh1hhŸh³h Khj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KhjhžhubhŒ literal_block”“”)”}”(hŒ-$ echo 1 > /sys/kernel/debug/kho/out/finalize”h]”hŒ-$ echo 1 > /sys/kernel/debug/kho/out/finalize”…””}”hjÐsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jÎhŸh³h K"hjhžhubhÊ)”}”(hŒÁAfter this command, the KHO FDT is available in ``/sys/kernel/debug/kho/out/fdt``. Other subsystems may also register their own preserved sub FDTs under ``/sys/kernel/debug/kho/out/sub_fdts/``.”h]”(hŒ0After this command, the KHO FDT is available in ”…””}”(hjÞhžhhŸNh Nubj*)”}”(hŒ!``/sys/kernel/debug/kho/out/fdt``”h]”hŒ/sys/kernel/debug/kho/out/fdt”…””}”(hjæhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjÞubhŒH. Other subsystems may also register their own preserved sub FDTs under ”…””}”(hjÞhžhhŸNh Nubj*)”}”(hŒ'``/sys/kernel/debug/kho/out/sub_fdts/``”h]”hŒ#/sys/kernel/debug/kho/out/sub_fdts/”…””}”(hjøhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjÞubhŒ.”…””}”(hjÞhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K$hjhžhubhÊ)”}”(hŒðNext, 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ŒRNext, load the target payload and kexec into it. It is important that you use the ”…””}”(hjhžhhŸNh Nubj*)”}”(hŒ``-s``”h]”hŒ-s”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjubhŒ• 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”…””}”(hjhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K)hjhžhubjÏ)”}”(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”…””}”hj0sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jÎhŸh³h K.hjhž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 K1hjhž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 ”…””}”(hjLhžhhŸNh Nubj*)”}”(hŒ``reserve_mem``”h]”hŒ reserve_mem”…””}”(hjThžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjLubhŒ“ 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.”…””}”(hjLhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K3hjhžhubeh}”(h]”Œperform-a-kho-kexec”ah ]”h"]”Œperform a kho kexec”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒAbort a KHO exec”h]”hŒAbort a KHO exec”…””}”(hjwhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjthžhhŸh³h K8ubhÊ)”}”(hŒIYou can move the system out of KHO finalization phase again by calling ::”h]”hŒFYou can move the system out of KHO finalization phase again by calling”…””}”(hj…hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K:hjthžhubjÏ)”}”(hŒ+$ echo 0 > /sys/kernel/debug/kho/out/active”h]”hŒ+$ echo 0 > /sys/kernel/debug/kho/out/active”…””}”hj“sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jÎhŸh³h Khjthžhubeh}”(h]”Œabort-a-kho-exec”ah ]”h"]”Œabort a kho exec”ah$]”h&]”uh1h´hh¶hžhhŸh³h K8ubhµ)”}”(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 KBubhÊ)”}”(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 KDhjÉhžhubhŒdefinition_list”“”)”}”(hhh]”(hŒdefinition_list_item”“”)”}”(hXL``/sys/kernel/debug/kho/out/finalize`` Kexec HandOver (KHO) allows Linux to transition the state of compatible drivers into the next kexec'ed kernel. To do so, device drivers will instruct KHO to preserve memory regions, which could contain serialized kernel state. While the state is serialized, they are unable to perform any modifications to state that was serialized, such as handed over memory allocations. When this file contains "1", the system is in the transition state. When contains "0", it is not. To switch between the two states, echo the respective number into this file. ”h]”(hŒterm”“”)”}”(hŒ&``/sys/kernel/debug/kho/out/finalize``”h]”j*)”}”(hj÷h]”hŒ"/sys/kernel/debug/kho/out/finalize”…””}”(hjùhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jóhŸh³h KShjïubhŒ definition”“”)”}”(hhh]”(hÊ)”}”(hXtKexec HandOver (KHO) allows Linux to transition the state of compatible drivers into the next kexec'ed kernel. To do so, device drivers will instruct KHO to preserve memory regions, which could contain serialized kernel state. While the state is serialized, they are unable to perform any modifications to state that was serialized, such as handed over memory allocations.”h]”hXvKexec HandOver (KHO) allows Linux to transition the state of compatible drivers into the next kexec’ed kernel. To do so, device drivers will instruct KHO to preserve memory regions, which could contain serialized kernel state. While the state is serialized, they are unable to perform any modifications to state that was serialized, such as handed over memory allocations.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KIhjubhÊ)”}”(hŒ®When this file contains "1", the system is in the transition state. When contains "0", it is not. To switch between the two states, echo the respective number into this file.”h]”hŒ¶When this file contains “1â€, the system is in the transition state. When contains “0â€, it is not. To switch between the two states, echo the respective number into this file.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KQhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíhŸh³h KShjêubjî)”}”(hŒö``/sys/kernel/debug/kho/out/fdt`` When KHO state tree is finalized, 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]”(jô)”}”(hŒ!``/sys/kernel/debug/kho/out/fdt``”h]”j*)”}”(hj?h]”hŒ/sys/kernel/debug/kho/out/fdt”…””}”(hjAhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jóhŸh³h KYhj9ubj )”}”(hhh]”hÊ)”}”(hŒÓWhen KHO state tree is finalized, 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ŒÓWhen KHO state tree is finalized, 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.”…””}”(hjWhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KVhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíhŸh³h KYhjêhžhubjî)”}”(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]”(jô)”}”(hŒ)``/sys/kernel/debug/kho/out/scratch_len``”h]”j*)”}”(hjwh]”hŒ%/sys/kernel/debug/kho/out/scratch_len”…””}”(hjyhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jóhŸh³h K_hjqubj )”}”(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.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K\hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíhŸh³h K_hjêhžhubjî)”}”(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]”(jô)”}”(hŒ*``/sys/kernel/debug/kho/out/scratch_phys``”h]”j*)”}”(hj¯h]”hŒ&/sys/kernel/debug/kho/out/scratch_phys”…””}”(hj±hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jóhŸh³h Kdhj©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.”…””}”(hjÇhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KbhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíhŸh³h Kdhjêhžhubjî)”}”(hŒ‡``/sys/kernel/debug/kho/out/sub_fdts/`` In the KHO finalization phase, KHO producers register their own FDT blob under this directory. ”h]”(jô)”}”(hŒ'``/sys/kernel/debug/kho/out/sub_fdts/``”h]”j*)”}”(hjçh]”hŒ#/sys/kernel/debug/kho/out/sub_fdts/”…””}”(hjéhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jóhŸh³h Khhjáubj )”}”(hhh]”hÊ)”}”(hŒ^In the KHO finalization phase, KHO producers register their own FDT blob under this directory.”h]”hŒ^In the KHO finalization phase, KHO producers register their own FDT blob under this directory.”…””}”(hjÿhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Kghjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíhŸh³h Khhjêhžhubjî)”}”(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]”(jô)”}”(hŒ ``/sys/kernel/debug/kho/in/fdt``”h]”j*)”}”(hjh]”hŒ/sys/kernel/debug/kho/in/fdt”…””}”(hj!hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jóhŸh³h Kohjubj )”}”(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.”…””}”(hj7hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Kkhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíhŸh³h Kohjêhžhubjî)”}”(hŒ``/sys/kernel/debug/kho/in/sub_fdts/`` Similar to ``kho/out/sub_fdts/``, but contains sub FDT blobs of KHO producers passed from the old kernel.”h]”(jô)”}”(hŒ&``/sys/kernel/debug/kho/in/sub_fdts/``”h]”j*)”}”(hjWh]”hŒ"/sys/kernel/debug/kho/in/sub_fdts/”…””}”(hjYhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jóhŸh³h KrhjQubj )”}”(hhh]”hÊ)”}”(hŒiSimilar to ``kho/out/sub_fdts/``, but contains sub FDT blobs of KHO producers passed from the old kernel.”h]”(hŒ Similar to ”…””}”(hjohžhhŸNh Nubj*)”}”(hŒ``kho/out/sub_fdts/``”h]”hŒkho/out/sub_fdts/”…””}”(hjwhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjoubhŒI, but contains sub FDT blobs of KHO producers passed from the old kernel.”…””}”(hjohžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Krhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíhŸh³h Krhjêhžhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jèhjÉhžhhŸh³h Nubeh}”(h]”Œdebugfs-interfaces”ah ]”h"]”Œdebugfs interfaces”ah$]”h&]”uh1h´hh¶hžhhŸh³h KBubeh}”(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”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‰jqjnjÆjÃj¦j£uŒ nametypes”}”(j®‰jŒ‰jq‰jƉj¦‰uh}”(j«h¶j‰jjnjjÃjtj£jÉ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.