前面的章节中有提到过,memblock分配器会将内存划分为动态管理的内存(保存在memblock的memory type的数组)和静态预留的内存(保存在memblock的reserved type的数组)。
linux_mainline-5.17.0/include/linux/memblock.h
struct memblock {
bool bottom_up;
phys_addr_t current_limit;
struct memblock_type memory;
struct memblock_type reserved;
};
预留内存通过memblock分配器来初始化的,我们来了解下预留内存是如何初始化的。
在ARM Linux中,各种设备的相关属性描述都采用DTS方式来呈现。DTS是"Device Tree Source"的简称,最早是由PowerPC等其他体系结构使用的FDT(Flattened Device Tree)转变过来的。
内核reserved type在完成fdt内存区域的地址映射之后(fixmap_remap_fdt),内核会对fdt进行扫描,以便完成reserved type数组的构建。预



