[PATCH 0/4] mm: Simplify device DAX vmemmap optimization plumbing

From: Muchun Song

Date: Fri Oct 30 2026 - 10:08:37 EST


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/20260513130542.35604-1-songmuchun@xxxxxxxxxxxxx/

Muchun Song (4):
powerpc/mm: make vmemmap_populate_compound_pages() static
powerpc/mm: drop powerpc vmemmap_can_optimize()
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 | 5 ++-
arch/powerpc/include/asm/book3s/64/radix.h | 12 -------
arch/powerpc/mm/book3s64/radix_pgtable.c | 23 ++++---------
arch/powerpc/mm/init_64.c | 1 +
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 +---------------------
mm/memory_hotplug.c | 16 ++++-----
mm/memremap.c | 4 +--
mm/sparse-vmemmap.c | 34 ++++++++++--------
mm/sparse.c | 6 ++--
15 files changed, 54 insertions(+), 120 deletions(-)


base-commit: 5e6c45aaaf93343c7f8a1cde9797080238af5c1b
--
2.54.0