Linux Documentation
 help / color / mirror / Atom feed
* [PATCH 00/11] mm: Switch device DAX to section-based vmemmap optimization
@ 2026-08-31  7:53 Muchun Song
  2026-08-31  7:53 ` [PATCH 01/11] mm/sparse-vmemmap: introduce CONFIG_SPARSEMEM_VMEMMAP_OPTIMIZATION Muchun Song
                   ` (10 more replies)
  0 siblings, 11 replies; 17+ messages in thread
From: Muchun Song @ 2026-08-31  7:53 UTC (permalink / raw)
  To: Andrew Morton, David Hildenbrand, Oscar Salvador,
	Madhavan Srinivasan, Michael Ellerman, Jonathan Corbet
  Cc: linux-mm, linux-kernel, linuxppc-dev, linux-doc, Muchun Song,
	Lorenzo Stoakes, Mike Rapoport, Qi Zheng, Nicholas Piggin,
	Christophe Leroy, Randy Dunlap, Muchun Song

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: switching device DAX to the section-based
sparse-vmemmap optimization infrastructure introduced for HugeTLB.

After the HugeTLB conversion, optimized vmemmap state is described by
the memory section and the sparse-vmemmap population path can allocate or
reuse shared tail vmemmap pages based on that metadata. Device DAX still
uses the older DAX-specific population model, including a separate tail
vmemmap page reservation and architecture-specific logic to locate or
populate reusable tail pages.

This series makes device DAX use the same section-based model. Device DAX
sets the section order from pgmap->vmemmap_shift before vmemmap
population, uses the common per-zone shared tail vmemmap page, and drops
the extra reserved tail page. The powerpc radix path is updated to use
the same shared tail-page helper, so the generic and powerpc DAX paths
follow the same reservation model.

The first patches prepare the shared infrastructure by introducing a
generic CONFIG_SPARSEMEM_VMEMMAP_OPTIMIZATION symbol, factoring out
shared tail-page allocation, and keeping the special shared-tail struct
page initialization local to sparse-vmemmap.

The middle patches move device DAX onto that infrastructure by recording
the device DAX compound page order in the memory section, using that
section metadata to back generic device DAX mappings with the common
per-zone shared tail page, exposing the shared helpers so the powerpc
radix path can use the same model, and then dropping the extra DAX-only
tail page reservation, and the now-unused section accounting arguments
can be removed.

The final patch updates the documentation for the new DAX layout.

This is intended to be the third smaller step toward the broader HVO
generalization. The wider HVO consolidation between HugeTLB and device
DAX is left for follow-up series.

[1] https://lore.kernel.org/linux-mm/20260513130542.35604-1-songmuchun@bytedance.com/

Muchun Song (11):
  mm/sparse-vmemmap: introduce CONFIG_SPARSEMEM_VMEMMAP_OPTIMIZATION
  mm/sparse-vmemmap: factor out shared vmemmap tail page allocation
  mm/sparse-vmemmap: open-code init_compound_tail()
  mm/sparse-vmemmap: prepare DAX vmemmap population for section orders
  mm/sparse-vmemmap: set section order for device DAX
  mm/sparse-vmemmap: switch device DAX to shared tail vmemmap pages
  mm/sparse-vmemmap: move HVO helpers to a public header
  powerpc/mm: switch device DAX to shared tail vmemmap pages
  mm/sparse-vmemmap: drop the extra tail page from device DAX
    reservation
  mm/sparse-vmemmap: drop unused section_nr_vmemmap_pages() arguments
  Documentation/mm: update DAX vmemmap deduplication docs

 Documentation/arch/powerpc/vmemmap_dedup.rst  |  90 ++-------
 Documentation/mm/vmemmap_dedup.rst            |  32 +--
 MAINTAINERS                                   |   1 +
 arch/powerpc/mm/book3s64/radix_pgtable.c      | 124 +-----------
 arch/x86/entry/vdso/vdso32/fake_32bit_build.h |   2 +-
 drivers/dax/Kconfig                           |   1 +
 fs/Kconfig                                    |   1 +
 include/linux/mm.h                            |   6 +-
 include/linux/mmzone.h                        |  23 ++-
 include/linux/page-flags.h                    |   5 +-
 include/linux/vmemmap-optimization.h          |  88 +++++++++
 mm/Kconfig                                    |   3 +
 mm/hugetlb.c                                  |   2 +-
 mm/hugetlb_vmemmap.c                          |  30 +--
 mm/internal.h                                 |   9 -
 mm/memory_hotplug.c                           |   6 +-
 mm/mm_init.c                                  |  15 +-
 mm/sparse-vmemmap.c                           | 184 ++++++++----------
 mm/sparse.c                                   |   3 +-
 mm/sparse.h                                   |  78 +-------
 20 files changed, 244 insertions(+), 459 deletions(-)
 create mode 100644 include/linux/vmemmap-optimization.h


base-commit: da6c37ed8beb273e3308e42d4bca3ce11b4432fa
-- 
2.54.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2026-09-03  6:36 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-31  7:53 [PATCH 00/11] mm: Switch device DAX to section-based vmemmap optimization Muchun Song
2026-08-31  7:53 ` [PATCH 01/11] mm/sparse-vmemmap: introduce CONFIG_SPARSEMEM_VMEMMAP_OPTIMIZATION Muchun Song
2026-08-31  9:44   ` Qi Zheng
2026-08-31  9:49     ` Muchun Song
2026-08-31  7:53 ` [PATCH 02/11] mm/sparse-vmemmap: factor out shared vmemmap tail page allocation Muchun Song
2026-09-01  3:05   ` Qi Zheng
2026-08-31  7:53 ` [PATCH 03/11] mm/sparse-vmemmap: open-code init_compound_tail() Muchun Song
2026-09-01  3:18   ` Qi Zheng
2026-08-31  7:53 ` [PATCH 04/11] mm/sparse-vmemmap: prepare DAX vmemmap population for section orders Muchun Song
2026-09-03  6:36   ` Qi Zheng
2026-08-31  7:53 ` [PATCH 05/11] mm/sparse-vmemmap: set section order for device DAX Muchun Song
2026-08-31  7:53 ` [PATCH 06/11] mm/sparse-vmemmap: switch device DAX to shared tail vmemmap pages Muchun Song
2026-08-31  7:53 ` [PATCH 07/11] mm/sparse-vmemmap: move HVO helpers to a public header Muchun Song
2026-08-31  7:53 ` [PATCH 08/11] powerpc/mm: switch device DAX to shared tail vmemmap pages Muchun Song
2026-08-31  7:53 ` [PATCH 09/11] mm/sparse-vmemmap: drop the extra tail page from device DAX reservation Muchun Song
2026-08-31  7:53 ` [PATCH 10/11] mm/sparse-vmemmap: drop unused section_nr_vmemmap_pages() arguments Muchun Song
2026-08-31  7:53 ` [PATCH 11/11] Documentation/mm: update DAX vmemmap deduplication docs Muchun Song

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox