v3
2026-09-30
统一 HugeTLB 与 DAX vmemmap 填充 · v3
从大系列拆出,统一 HugeTLB 与 device DAX 的 vmemmap 填充路径,清理 DAX 专用逻辑。
原始补丁链接
子 Patch(6)
1/6
mm/sparse-vmemmap: drop VMEMMAP_POPULATE_DAX
删除 VMEMMAP_POPULATE_DAX:DAX 共享尾页复用可由 vmemmap_optimizable_pfn() 与 ptpfn 判断,slab 可用后对复用映射取页引用以平衡 vmemmap_free(),并去掉 helper 的 flags 参数。
2/6
mm/sparse-vmemmap: support device DAX in common vmemmap path
公共 vmemmap 路径改用 device_zone() 处理运行时 Device DAX 优化映射,早期启动仍用 pfn_to_zone(),使同一条路径兼容两者并弃用 DAX 传入的 backing PFN。
3/6
mm/sparse-vmemmap: drop Device DAX-specific population path
删除 Device DAX 专用 vmemmap_populate_compound_pages() 路径,section memmap 统一走 vmemmap_populate();powerpc 在 radix__vmemmap_populate() 中直接选择其 compound-page 实现。
4/6
mm/sparse-vmemmap: remove the unused ptpfn argument
vmemmap_pte_populate() 已不再使用 ptpfn 入参,删除该参数以简化调用链和代码。
5/6
mm/sparse-vmemmap: open-code vmemmap_populate_address()
将 vmemmap_populate_address() 内联到 vmemmap_populate_basepages(),因其唯一调用者只判断成功与否;删除冗余 range helper,失败直接返回 -ENOMEM。
6/6
mm/mm_init: add zone mismatch warning during page init
在 __init_single_page() 中检查 vmemmap 优化节的共享尾页,若 page_zone_id() 与本节 struct page 不一致则告警,防止 zone 初始化错配。