Linux-mm Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/6] Open HugeTLB allocation routine for more generic use
@ 2026-07-02 16:21 Ackerley Tng via B4 Relay
  2026-07-02 16:21 ` [PATCH v4 1/6] mm: hugetlb: Consolidate interpretation of gbl_chg within alloc_hugetlb_folio() Ackerley Tng via B4 Relay
                   ` (7 more replies)
  0 siblings, 8 replies; 11+ messages in thread
From: Ackerley Tng via B4 Relay @ 2026-07-02 16:21 UTC (permalink / raw)
  To: Muchun Song, Oscar Salvador, David Hildenbrand, Andrew Morton,
	fvdl, jiaqiyan, joshua.hahnjy, jthoughton, mhocko, michael.roth,
	pasha.tatashin, pbonzini, peterx, pratyush, rick.p.edgecombe,
	rientjes, roman.gushchin, seanjc, shakeel.butt, shivankg,
	vannapurve, yan.y.zhao, Zi Yan, Matthew Brost, Rakie Kim,
	Byungchul Park, Gregory Price, Ying Huang, Alistair Popple,
	Dan Williams, Jason Gunthorpe
  Cc: linux-mm, linux-kernel, Ackerley Tng

Hi,

The motivation for this patch series is guest_memfd, which would like
to use HugeTLB as a generic source of huge pages but not adopt
HugeTLB's reservation at mmap() time.

By refactoring alloc_hugetlb_folio() and some dependent functions,
there is now an option to allocate HugeTLB folios without providing a
VMA. Specifically, HugeTLB allocation used to be dependent on the VMA
to

1. Look up reservations in the resv_map
2. Get mpol, stored at vma->vm_policy

This refactoring provides hugetlb_alloc_folio(), which focuses on just
the allocation itself, and associated memory and HugeTLB charging
(cgroups). alloc_hugetlb_folio() still handles reservations in the
resv_map and subpools.

Regarding naming, I'm definitely open to alternative names :) I chose
hugetlb_alloc_folio() because I'm seeing this function as a general
allocation function that is provided by the HugeTLB subsystem (hence
the hugetlb_ prefix). I'm intending for alloc_hugetlb_folio() to be
later refactored as a static function for use just by HugeTLB, and
HugeTLBfs should probably use hugetlb_alloc_folio() directly.

To see how hugetlb_alloc_folio() is used by guest_memfd, the most
recent patch series that uses this more generic HugeTLB allocation
routine is at [1], and a newer revision of that patch series is at
[2].

Independently of guest_memfd, I believe this change is useful in
simplifying alloc_hugetlb_folio(). alloc_hugetlb_folio() was so
coupled to a VMA that even HugeTLBfs allocates HugeTLB folios using a
pseudo-VMA.

Testing:

+ libhugetlbfs tests pass
+ ./tools/testing/selftests/mm/ksft_hugetlb.sh passes

Andrew, thanks for nudging me to send a v4!

Oscar, you mentioned that you wanted to do a closer review on v3, hope you
find time to review v4 soon!

Changes in this revision:

+ Define gfp within hugetlb_alloc_folio() instead of having it as a
  parameter so users aren't able to override gfp arbitrarily as Oscar
  requested.
+ Addressed some of Sashiko's comments [4]. Some of the issues I didn't address
  were pre-existing issues. Since v3 of this series Sashiko was updated to
  actually send mails. I'd let Sashiko point them out again and then we should
  discuss those!

[1] https://lore.kernel.org/all/cover.1747264138.git.ackerleytng@google.com/T/
[2] https://github.com/googleprodkernel/linux-cc/tree/wip-gmem-conversions-hugetlb-restructuring-12-08-25
[3] https://lore.kernel.org/all/agqaUcVp_hwH-VXr@localhost.localdomain/
[4] https://sashiko.dev/#/patchset/20260518-hugetlb-open-up-v3-0-e14b302477f8@google.com

RFC v1: https://lore.kernel.org/all/bb35a69a-5be9-45f5-a557-1902487a1bc2@linux.dev/
v2: https://lore.kernel.org/r/20260506-hugetlb-open-up-v2-0-826a0c5f28fc@google.com
v3: https://lore.kernel.org/r/20260518-hugetlb-open-up-v3-0-e14b302477f8@google.com

---
Ackerley Tng (6):
      mm: hugetlb: Consolidate interpretation of gbl_chg within alloc_hugetlb_folio()
      mm: hugetlb: Move mpol interpretation out of alloc_buddy_hugetlb_folio_with_mpol()
      mm: hugetlb: Move mpol interpretation out of dequeue_hugetlb_folio_vma()
      mm: hugetlb: Use error variable in alloc_hugetlb_folio
      mm: hugetlb: Move mem_cgroup_charge_hugetlb() earlier in allocation
      mm: hugetlb: Refactor out hugetlb_alloc_folio()

 include/linux/hugetlb.h        |  18 +++
 include/uapi/linux/mempolicy.h |   2 +-
 mm/hugetlb.c                   | 269 ++++++++++++++++++++++++-----------------
 3 files changed, 175 insertions(+), 114 deletions(-)
---
base-commit: 4a50a141f05a8d1737661b19ee22ff8455b94409
change-id: 20260504-hugetlb-open-up-eaba80571b09

Best regards,
--
Ackerley Tng <ackerleytng@google.com>




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

end of thread, other threads:[~2026-07-03  2:05 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-02 16:21 [PATCH v4 0/6] Open HugeTLB allocation routine for more generic use Ackerley Tng via B4 Relay
2026-07-02 16:21 ` [PATCH v4 1/6] mm: hugetlb: Consolidate interpretation of gbl_chg within alloc_hugetlb_folio() Ackerley Tng via B4 Relay
2026-07-02 16:21 ` [PATCH v4 2/6] mm: hugetlb: Move mpol interpretation out of alloc_buddy_hugetlb_folio_with_mpol() Ackerley Tng via B4 Relay
2026-07-02 16:21 ` [PATCH v4 3/6] mm: hugetlb: Move mpol interpretation out of dequeue_hugetlb_folio_vma() Ackerley Tng via B4 Relay
2026-07-02 16:21 ` [PATCH v4 4/6] mm: hugetlb: Use error variable in alloc_hugetlb_folio Ackerley Tng via B4 Relay
2026-07-02 16:21 ` [PATCH v4 5/6] mm: hugetlb: Move mem_cgroup_charge_hugetlb() earlier in allocation Ackerley Tng via B4 Relay
2026-07-02 22:03   ` Andrew Morton
2026-07-02 16:21 ` [PATCH v4 6/6] mm: hugetlb: Refactor out hugetlb_alloc_folio() Ackerley Tng via B4 Relay
2026-07-02 16:51 ` [PATCH v4 0/6] Open HugeTLB allocation routine for more generic use Zi Yan
2026-07-03  2:04   ` Qi Zheng
2026-07-02 22:12 ` Andrew Morton

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