Hi, This series is split out from the earlier, larger series "mm: Generalize HVO for HugeTLB and device DAX" [1]. While the parent series generalizes vmemmap optimization across HugeTLB and device DAX, this subset addresses a single, self-contained step: simplifying the device DAX vmemmap optimization plumbing.
After device DAX was converted to section-based vmemmap optimization, whether a mapping can be optimized is carried in mem_section, and the architecture-specific population path can handle any remaining fallback. The code still retains the DAX-specific vmemmap_can_optimize() helper, a PowerPC override, and @pgmap arguments threaded through lower-level vmemmap population and memory-removal interfaces. These duplicate the section-order policy and keep otherwise generic paths coupled to dev_pagemap. This series removes that obsolete plumbing by consolidating the optimization policy around memory-section metadata and simplifying the generic and architecture-specific population paths. This also eliminates dependencies that are no longer needed once the optimization state is carried by the memory section. This leaves the section compound order as the single source of truth for vmemmap optimization and decouples the generic sparse-vmemmap and memory-hotplug paths from device DAX. This is another smaller step toward the broader HVO generalization. [1] https://lore.kernel.org/[email protected]/ v3: - Rebase onto mm-new at 684242af7090. - Move section_vmemmap_optimization_disable() out of line to fix the LoongArch header-order build failure (reported by Sashiko and the kernel test robot). - Keep section_vmemmap_optimizable() in mm/sparse.h and leave the vmemmap_optimizable_order() relocation in patch 4. - Tighten the disable helper checks to require one aligned memory section. - Collect Reviewed-by from Lance Yang. v2: https://lore.kernel.org/[email protected]/ - Rebase onto mm-new at dba8aba0a9a0 - Add section_vmemmap_optimization_disable() and use it for PowerPC, LoongArch, and altmap fallbacks. - Add a LoongArch patch that keeps device DAX vmemmap optimization disabled while leaving HugeTLB HVO unchanged. - Ignore section compound orders that cannot be optimized. - Add direct vmemmap-optimization.h includes for architecture users. v1: https://lore.kernel.org/[email protected]/ Muchun Song (5): powerpc/mm: make vmemmap_populate_compound_pages() static powerpc/mm: drop powerpc vmemmap_can_optimize() loongarch/mm: disable device DAX vmemmap optimization mm/sparse-vmemmap: drop vmemmap_can_optimize() mm/sparse-vmemmap: drop @pgmap from vmemmap population APIs arch/arm64/mm/mmu.c | 5 +-- arch/loongarch/mm/init.c | 7 ++-- arch/powerpc/include/asm/book3s/64/radix.h | 12 ------ arch/powerpc/mm/book3s64/radix_pgtable.c | 23 ++++------- arch/powerpc/mm/init_64.c | 2 + arch/powerpc/mm/mem.c | 5 +-- arch/riscv/mm/init.c | 5 +-- arch/s390/mm/init.c | 5 +-- arch/x86/mm/init_64.c | 5 +-- include/linux/memory_hotplug.h | 8 ++-- include/linux/mm.h | 40 +------------------ include/linux/vmemmap-optimization.h | 31 +++++++++------ mm/memory_hotplug.c | 16 ++++---- mm/memremap.c | 4 +- mm/sparse-vmemmap.c | 46 +++++++++++++++------- mm/sparse.c | 6 +-- 16 files changed, 89 insertions(+), 131 deletions(-) base-commit: 684242af7090928ada5e48fd40a0f3a539b3fd5b -- 2.54.0
