v2
2026-08-18
修复保留内存初始化几个问题 · v2
修复 of reserved_mem 中早期保留失败跳过、静态区域重叠拒绝等若干初始化问题。
原始补丁链接
子 Patch(5)
1/5
of: reserved_mem: skip init for regions whose early reservation failed
修复保留内存早期预留失败仍被计数和初始化:__reserved_mem_reserve_reg()传递early_init_dt_reserve_memory错误并记录失败节点,late扫描跳过这些节点。
2/5
of: reserved_mem: reject static regions overlapping no-map memory
拒绝静态reserved-mem区域与已有no-map内存重叠:no-map区域在memblock.memory而非reserved中导致原检查漏判,可能把同一物理内存交给多个驱动。
3/5
of: reserved_mem: reject statically placed regions overlapping existing reservations
拒绝静态保留区与已有reservation重叠:memblock_reserve允许重叠,初始化失败时memblock_phys_free会把重叠内存归还buddy造成破坏。
4/5
of: reserved_mem: release dynamically allocated no-map region on init failure
修复动态no-map保留区初始化失败未释放:不能只调memblock_clear_nomap,还需对动态分配区域执行memblock_phys_free归还memblock.reserved。
5/5
of: reserved_mem: retain static no-map memory on init failure
保留静态no-map区域在初始化失败时的MEMBLOCK_NOMAP标志;静态区在paging_init后初始化,清除NOMAP会让未映射内存进入buddy,仅动态区可清。