pub fn load_x86_mptable<F>(
importer: &mut impl ImageLoad<X86Register>,
kernel_image: &mut F,
initrd: Option<InitrdConfig<'_>>,
cmdline: &CString,
mem_layout: &MemoryLayout,
config: &MpTableConfig<'_>,
reserved_memory_ranges: &[MemoryRange],
) -> Result<LoadInfo, Error>Expand description
Loads an uncompressed x86-64 ELF kernel, and an optional initrd, for Linux direct boot that describes the processors and interrupt routing with Intel MP 1.4 tables instead of ACPI, and that has no SMBIOS or other firmware tables. Returns where the kernel and initrd were loaded.
It also imports the boot data at fixed addresses: the MP tables, GDT, and
zero page in 0x0..0x3000, the page tables that identity-map the low
4 GiB in 0x4000..0xa000, and the NUL-terminated command line, of up to
64 KiB, in 0x20000..0x30000. RAM must back these ranges and the ISA
hole, 0xa0000..0x100000, and no RAM may lie in the MMIO gap from 3 GiB to
4 GiB.
The kernel and initrd must lie in RAM below 4 GiB, outside the boot data,
the ISA hole, reserved_memory_ranges, and each other. The reserved
ranges must be sorted, disjoint, page-aligned, non-empty ranges of RAM
outside the boot data and the ISA hole. The e820 map reports them and the
ISA hole as reserved.