diff --git a/api/src/config.rs b/api/src/config.rs index 5de0db3e..c0f574bd 100644 --- a/api/src/config.rs +++ b/api/src/config.rs @@ -386,10 +386,16 @@ pub struct Mappings { pub boot_info: Mapping, /// Specifies the mapping of the frame buffer memory region. pub framebuffer: Mapping, - /// The bootloader supports to map the whole physical memory into the virtual address + /// The bootloader supports mapping the whole physical memory into the virtual address /// space at some offset. This is useful for accessing and modifying the page tables set /// up by the bootloader. /// + /// This mapping will go from physical address `0x0` to whichever is larger: + /// - The end of the last region in the BIOS/UEFI memory map + /// - The address `0x1_0000_0000` (such that at least 4 GiB of physical memory are always mapped). + /// This is to ensure that useful MMIO regions (local APIC, I/O APIC, PCI bars) are + /// accessible to the kernel even if less physical memory than that is on the system. + /// /// Defaults to `None`, i.e. no mapping of the physical memory. pub physical_memory: Option, /// As an alternative to mapping the whole physical memory (see [`Self::physical_memory`]),