Linux-mm Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 00/12] mm: Decouple folio-based vmemmap optimization from HugeTLB
@ 2026-11-04  2:34 Muchun Song
  2026-11-04  2:34 ` [PATCH v3 01/12] mm: hugetlb_vmemmap: remove HugeTLB-specific vmemmap optimization macros Muchun Song
                   ` (12 more replies)
  0 siblings, 13 replies; 29+ messages in thread
From: Muchun Song @ 2026-11-04  2:34 UTC (permalink / raw)
  To: Oscar Salvador, Andrew Morton, Mike Rapoport
  Cc: Qi Zheng, Lance Yang, James Houghton, David Hildenbrand,
	Muchun Song, linux-mm, linux-kernel, Muchun Song

Hi,

Section-based vmemmap optimization is implemented in sparse-vmemmap.c,
while folio-based optimization currently lives in hugetlb_vmemmap.c.
The latter is tightly coupled to HugeTLB-specific state even though the
underlying page-table remapping operates on one folio at a time.

To make these interfaces easier to maintain, the folio-based remapping
mechanics first need a boundary that is independent of HugeTLB-specific
state and raw address ranges. This will allow the mechanics to be moved
into a common vmemmap optimization layer alongside the section-based
interface.

This series establishes that boundary through three folio-oriented
operations, each with a distinct role:

  - vmemmap_optimize_folio() optimizes the vmemmap backing of a folio;
  - vmemmap_restore_folio() restores the vmemmap backing of a folio; and
  - vmemmap_pteify_folio() converts the vmemmap backing of a folio to
    PTE mappings.

Together, these operations encapsulate the address-range calculation and
remapping mechanics for a folio. HugeTLB wrappers retain policy decisions
such as eligibility, optimized state, batching and TLB flush handling.

Patches 1-8 generalize the underlying vmemmap remapping infrastructure by
removing HugeTLB-specific assumptions and simplifying remap control and
resource handling. Patches 9-12 then establish folio-oriented operations
for optimization, restoration and PTE conversion.

The implementation remains in hugetlb_vmemmap.c for now. A follow-up can
move the folio-based operations into the common vmemmap optimization layer
once the interface boundary is in place.

v3:
- Rebase onto mm/mm-new at 74d73ffcffe0
- Use two tabs for continued function parameters in modified declarations
  (suggested by Mike Rapoport)
- Rework vmemmap page allocation failure cleanup to free temporary pages
  directly while keeping accounting batched (suggested by Mike Rapoport)
- Collect Reviewed-by tags from Mike Rapoport

v2: https://lore.kernel.org/20261102032525.3597743-1-songmuchun@bytedance.com/
- Rebase onto mm/mm-new at d42dfde37af7
- Rename the unified TLB flag to VMEMMAP_DEFER_TLB_FLUSH and clarify that
  it defers only safely batchable flushes (suggested by Qi Zheng)
- Update the vmemmap page-list documentation to describe its input/output
  contract (suggested by Lance Yang and Qi Zheng)
- Use page_address() instead of page_to_virt() when copying a vmemmap
  replacement page
- Collect Reviewed-by tags from Lance Yang and Qi Zheng

v1: https://lore.kernel.org/20261020115306.813483-1-songmuchun@bytedance.com/

Muchun Song (12):
  mm: hugetlb_vmemmap: remove HugeTLB-specific vmemmap optimization
    macros
  mm: hugetlb_vmemmap: unify VMEMMAP_{SPLIT,REMAP}_NO_TLB_FLUSH
  mm: hugetlb_vmemmap: simplify vmemmap head page handling
  mm: hugetlb_vmemmap: generalize vmemmap page allocation
  mm: hugetlb_vmemmap: unify writable vmemmap page preparation
  mm: hugetlb_vmemmap: rename vmemmap_remap_pte() to
    vmemmap_optimize_pte()
  mm: hugetlb_vmemmap: simplify shared tail page handling
  mm: hugetlb_vmemmap: move alloc_vmemmap_page_list() next to its free
    helper
  mm: hugetlb_vmemmap: make vmemmap optimization folio-oriented
  mm: hugetlb_vmemmap: make vmemmap restoration folio-oriented
  mm: hugetlb_vmemmap: unify vmemmap range restoration
  mm: hugetlb_vmemmap: make vmemmap PTE conversion folio-oriented

 include/linux/vmemmap-optimization.h |  10 +-
 mm/hugetlb.c                         |   4 +-
 mm/hugetlb_vmemmap.c                 | 375 ++++++++++++---------------
 mm/hugetlb_vmemmap.h                 |  10 +-
 mm/mm_init.c                         |   6 +-
 mm/sparse-vmemmap.c                  |   7 +-
 6 files changed, 183 insertions(+), 229 deletions(-)


base-commit: 74d73ffcffe03804f97e9fb82301dadf75671282
-- 
2.54.0



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

end of thread, other threads:[~2026-11-04 13:42 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-04  2:34 [PATCH v3 00/12] mm: Decouple folio-based vmemmap optimization from HugeTLB Muchun Song
2026-11-04  2:34 ` [PATCH v3 01/12] mm: hugetlb_vmemmap: remove HugeTLB-specific vmemmap optimization macros Muchun Song
2026-11-04  9:15   ` Oscar Salvador (SUSE)
2026-11-04  2:35 ` [PATCH v3 02/12] mm: hugetlb_vmemmap: unify VMEMMAP_{SPLIT,REMAP}_NO_TLB_FLUSH Muchun Song
2026-11-04  9:22   ` Oscar Salvador (SUSE)
2026-11-04 11:06   ` Mike Rapoport
2026-11-04  2:35 ` [PATCH v3 03/12] mm: hugetlb_vmemmap: simplify vmemmap head page handling Muchun Song
2026-11-04  9:40   ` Oscar Salvador (SUSE)
2026-11-04  2:35 ` [PATCH v3 04/12] mm: hugetlb_vmemmap: generalize vmemmap page allocation Muchun Song
2026-11-04  9:58   ` Oscar Salvador (SUSE)
2026-11-04 11:14     ` Muchun Song
2026-11-04 11:06   ` Mike Rapoport
2026-11-04  2:35 ` [PATCH v3 05/12] mm: hugetlb_vmemmap: unify writable vmemmap page preparation Muchun Song
2026-11-04 10:02   ` Oscar Salvador (SUSE)
2026-11-04  2:35 ` [PATCH v3 06/12] mm: hugetlb_vmemmap: rename vmemmap_remap_pte() to vmemmap_optimize_pte() Muchun Song
2026-11-04 10:04   ` Oscar Salvador (SUSE)
2026-11-04  2:35 ` [PATCH v3 07/12] mm: hugetlb_vmemmap: simplify shared tail page handling Muchun Song
2026-11-04 10:31   ` Oscar Salvador (SUSE)
2026-11-04  2:35 ` [PATCH v3 08/12] mm: hugetlb_vmemmap: move alloc_vmemmap_page_list() next to its free helper Muchun Song
2026-11-04 10:36   ` Oscar Salvador (SUSE)
2026-11-04  2:35 ` [PATCH v3 09/12] mm: hugetlb_vmemmap: make vmemmap optimization folio-oriented Muchun Song
2026-11-04 12:39   ` Oscar Salvador (SUSE)
2026-11-04  2:35 ` [PATCH v3 10/12] mm: hugetlb_vmemmap: make vmemmap restoration folio-oriented Muchun Song
2026-11-04 13:12   ` Oscar Salvador (SUSE)
2026-11-04  2:35 ` [PATCH v3 11/12] mm: hugetlb_vmemmap: unify vmemmap range restoration Muchun Song
2026-11-04 13:42   ` Oscar Salvador (SUSE)
2026-11-04  2:35 ` [PATCH v3 12/12] mm: hugetlb_vmemmap: make vmemmap PTE conversion folio-oriented Muchun Song
2026-11-04  6:46 ` [PATCH v3 00/12] mm: Decouple folio-based vmemmap optimization from HugeTLB Andrew Morton
2026-11-04  6:55   ` Muchun Song

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