KEXEC HANDOVER ABI(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… Kexec Handover ABI(9) πŸ’…

okay so bestie, this is a Kernel API Manual page, and it's literally about Kexec Handover using the ABI defined below for passing preserved data from one kernel to the next. The ABI uses Flattened Device Tree (FDT) format. The first kernel creates an FDT which is then passed to the next kernel during a kexec handover. 🫢

This interface is a contract. no cap. Any modification to the FDT structure, node properties, compatible string, or the layout of the data structures referenced here constitutes a breaking change. Such changes require incrementing the version number in KHO_FDT_COMPATIBLE to prevent a new kernel from misinterpreting data from an older kernel. Changes are allowed provided the compatibility version is incremented. However, backward/forward compatibility is only guaranteed for kernels supporting the same ABI version. πŸ˜­πŸ’€

✨ FDT Structure Overview ✨

The FDT serves as a central registry for physical addresses of preserved data structures. The first kernel populates this FDT with references to memory regions and other metadata that need to persist across the kexec transition. The subsequent kernel then parses this FDT to locate and restore the preserved data. πŸ¦‹

           / {
               compatible = "kho-v3";

               preserved-memory-map = <0x...>;

               <subnode-name-1> {
                   preserved-data = <0x...>;
                   blob-size = <0x...>;
               };

               <subnode-name-2> {
                   preserved-data = <0x...>;
                   blob-size = <0x...>;
               };
                     ... ...
               <subnode-name-N> {
                   preserved-data = <0x...>;
                   blob-size = <0x...>;
               };
           };

πŸ‘‘ Root KHO Node (/)

  • compatible β€” "kho-v3". Identifies the overall KHO ABI version. πŸ’–
  • preserved-memory-map β€” u64. Physical memory address pointing to the root of the preserved memory map data structure. 🌸

πŸ¦‹ Subnodes (<subnode-name-N>)

Subnodes can also be added to the root node to describe other preserved data blobs. The <subnode-name-N> is provided by the subsystem that uses KHO for preserving its data. 🧚

  • preserved-data β€” u64. Physical address pointing to a subnode data blob that is also being preserved. ⭐
  • blob-size β€” u64. Size in bytes of the preserved data blob. This is needed because blobs may use arbitrary formats (not just FDT), so the size cannot be determined from the blob content alone. πŸ“

🌈 SEE ALSO 🌈

  • Kernel file ./include/linux/kho/abi/kexec_handover.h
  • Kexec Handover ABI for vmalloc Preservation(9)
  • KHO persistent memory tracker(9)

xoxo, your Unix bestie πŸ’– β€” source/version: ./include/linux/kho/abi; date: October 2026.

πŸ“¦ where this page comes from