KHO FDT¶
KHO 使用扁平裝置樹 (FDT) 容器格式和 libfdt 庫來建立和解析核心之間傳遞的資料。 KHO FDT 中的屬性以本機格式儲存。 它包括描述所有保留記憶體區域的記憶體結構的物理地址,以及 KHO 使用者自己的 FDT 的物理地址。 解釋這些子 FDT 是 KHO 使用者的責任。
KHO 節點和屬性¶
屬性 preserved-memory-map¶
KHO 在根節點下儲存一個名為 preserved-memory-map 的特殊屬性。 此節點包含 KHO 在 kexec 期間保留記憶體區域的記憶體結構的物理地址。
屬性 compatible¶
compatible 屬性確定建立 KHO FDT 的核心與嘗試載入它的核心之間的相容性。 如果載入 KHO FDT 的核心與其不相容,則將繞過整個 KHO 過程。
屬性 fdt¶
通常,KHO 使用者將其狀態序列化到自己的 FDT 中,並指示 KHO 保留底層記憶體,以便在 kexec 之後,新核心可以從保留的 FDT 中恢復其狀態。
因此,KHO 使用者可以在 KHO 根樹中建立一個節點,並將其自身 FDT 的物理地址儲存在該節點的 fdt 屬性中。
示例¶
以下示例演示了 KHO FDT,它保留了使用 reserve_mem 核心命令列引數建立的兩個記憶體區域
/dts-v1/;
/ {
compatible = "kho-v1";
preserved-memory-map = <0x40be16 0x1000000>;
memblock {
fdt = <0x1517 0x1000000>;
};
};
其中 memblock 節點包含子系統 memblock 請求保留的 FDT。 FDT 包含以下序列化資料
/dts-v1/;
/ {
compatible = "memblock-v1";
n1 {
compatible = "reserve-mem-v1";
start = <0xc06b 0x4000000>;
size = <0x04 0x00>;
};
n2 {
compatible = "reserve-mem-v1";
start = <0xc067 0x4000000>;
size = <0x04 0x00>;
};
};