From: "Oscar Salvador (SUSE)" <osalvador@kernel.org>
To: Oscar Salvador <osalvador@suse.de>
Cc: ackerleytng@google.com, Muchun Song <muchun.song@linux.dev>,
David Hildenbrand <david@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
fvdl@google.com, jiaqiyan@google.com, joshua.hahnjy@gmail.com,
jthoughton@google.com, mhocko@kernel.org, michael.roth@amd.com,
pasha.tatashin@soleen.com, pbonzini@redhat.com,
peterx@redhat.com, pratyush@kernel.org,
rick.p.edgecombe@intel.com, rientjes@google.com,
roman.gushchin@linux.dev, seanjc@google.com,
shakeel.butt@linux.dev, shivankg@amd.com, vannapurve@google.com,
yan.y.zhao@intel.com, Dan Williams <djbw@kernel.org>,
Jason Gunthorpe <jgg@ziepe.ca>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 6/6] mm: hugetlb: Refactor out hugetlb_alloc_folio()
Date: Mon, 18 May 2026 06:49:21 +0200 [thread overview]
Message-ID: <agqaUcVp_hwH-VXr@localhost.localdomain> (raw)
In-Reply-To: <agMqSlFloJJ22kgB@localhost.localdomain>
On Tue, May 12, 2026 at 03:25:30PM +0200, Oscar Salvador wrote:
> On Wed, May 06, 2026 at 08:54:42AM -0700, Ackerley Tng via B4 Relay wrote:
> > From: Ackerley Tng <ackerleytng@google.com>
> >
> > Refactor out hugetlb_alloc_folio() from alloc_hugetlb_folio(), which
> > handles allocation of a folio and memory and HugeTLB charging to cgroups.
> >
> > This refactoring decouples the HugeTLB page allocation from VMAs,
> > specifically:
> >
> > 1. Reservations (as in resv_map) are stored in the vma
> > 2. mpol is stored at vma->vm_policy
> > 3. A vma must be used for allocation even if the pages are not meant to be
> > used by host process.
> >
> > Without this coupling, VMAs are no longer a requirement for
> > allocation. This opens up the allocation routine for usage without VMAs,
> > which will allow guest_memfd to use HugeTLB as a more generic allocator of
> > huge pages, since guest_memfd memory may not have any associated VMAs by
> > design. In addition, direct allocations from HugeTLB could possibly be
> > refactored to avoid the use of a pseudo-VMA.
> >
> > Also, this decouples HugeTLB page allocation from HugeTLBfs, where the
> > subpool is stored at the fs mount. This is also a requirement for
> > guest_memfd, where the plan is to have a subpool created per-fd and stored
> > on the inode.
> >
> > No functional change intended.
> >
> > Signed-off-by: Ackerley Tng <ackerleytng@google.com>
>
> I yet have to review more thoroughly, but I have a comment below:
So, I thought about this some more and here it is what I came up with
- Ideally this new hugetlb_alloc_folio() function should be as generic
as possible to try to fit other users in the future
- I would create a ctxt struct to pass all the parameters
- charge_hugetlb_cgroup_rsvd and use_global_reservation could be a flags
thing (action_flags?) within the ctxt struct. We might want to add
more flags in the future to tweak the allocator behaviour.
- Ideally gfp_t mask should be created in hugetlb_alloc_folio() and tweak it in
there before being passed down the road, which means do
gfp_t gfp = gfp_mask & ~(__GFP_DIRECT_RECLAIM | __GFP_NOFAIL)
in hugetlb_alloc_folio() instead of doing it in alloc_buddy_hugetlb_folio_with_mpol()
As of right now, we define it in four different places:
hugetlb_alloc_folio, alloc_hugetlb_folio, dequeue_hugetlb_folio_with_mpol, and
alloc_buddy_hugetlb_folio_with_mpol.
- I think we could strip _mpol from both alloc_buddy_hugetlb_folio_with_mpol and
dequeue_hugetlb_folio_with_mpol, and pass a boolean "node_preferred_many".
I am probably missing something but I cannot remember it right now.
--
Oscar Salvador
SUSE Labs
next prev parent reply other threads:[~2026-05-18 4:49 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-06 15:54 [PATCH v2 0/6] Open HugeTLB allocation routine for more generic use Ackerley Tng
2026-05-06 15:54 ` Ackerley Tng via B4 Relay
2026-05-06 15:54 ` [PATCH v2 1/6] mm: hugetlb: Consolidate interpretation of gbl_chg within alloc_hugetlb_folio() Ackerley Tng
2026-05-06 15:54 ` Ackerley Tng via B4 Relay
2026-05-12 9:00 ` Oscar Salvador
2026-05-06 15:54 ` [PATCH v2 2/6] mm: hugetlb: Move mpol interpretation out of alloc_buddy_hugetlb_folio_with_mpol() Ackerley Tng
2026-05-06 15:54 ` Ackerley Tng via B4 Relay
2026-05-12 12:51 ` Oscar Salvador
2026-05-06 15:54 ` [PATCH v2 3/6] mm: hugetlb: Move mpol interpretation out of dequeue_hugetlb_folio_vma() Ackerley Tng
2026-05-06 15:54 ` Ackerley Tng via B4 Relay
2026-05-12 12:56 ` Oscar Salvador
2026-05-06 15:54 ` [PATCH v2 4/6] mm: hugetlb: Use error variable in alloc_hugetlb_folio Ackerley Tng
2026-05-06 15:54 ` Ackerley Tng via B4 Relay
2026-05-06 15:54 ` [PATCH v2 5/6] mm: hugetlb: Move mem_cgroup_charge_hugetlb() earlier in allocation Ackerley Tng
2026-05-06 15:54 ` Ackerley Tng via B4 Relay
2026-05-06 15:54 ` [PATCH v2 6/6] mm: hugetlb: Refactor out hugetlb_alloc_folio() Ackerley Tng
2026-05-06 15:54 ` Ackerley Tng via B4 Relay
2026-05-12 13:25 ` Oscar Salvador
2026-05-18 4:49 ` Oscar Salvador (SUSE) [this message]
2026-05-18 21:04 ` Ackerley Tng
2026-05-12 13:17 ` [PATCH v2 0/6] Open HugeTLB allocation routine for more generic use Oscar Salvador
2026-05-18 20:16 ` Ackerley Tng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=agqaUcVp_hwH-VXr@localhost.localdomain \
--to=osalvador@kernel.org \
--cc=ackerleytng@google.com \
--cc=akpm@linux-foundation.org \
--cc=david@kernel.org \
--cc=djbw@kernel.org \
--cc=fvdl@google.com \
--cc=jgg@ziepe.ca \
--cc=jiaqiyan@google.com \
--cc=joshua.hahnjy@gmail.com \
--cc=jthoughton@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=michael.roth@amd.com \
--cc=muchun.song@linux.dev \
--cc=osalvador@suse.de \
--cc=pasha.tatashin@soleen.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=pratyush@kernel.org \
--cc=rick.p.edgecombe@intel.com \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
--cc=seanjc@google.com \
--cc=shakeel.butt@linux.dev \
--cc=shivankg@amd.com \
--cc=vannapurve@google.com \
--cc=yan.y.zhao@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.