From: "Oscar Salvador (SUSE)" <osalvador@kernel.org>
To: ackerleytng@google.com
Cc: Muchun Song <muchun.song@linux.dev>,
Oscar Salvador <osalvador@suse.de>,
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, Zi Yan <ziy@nvidia.com>,
Matthew Brost <matthew.brost@intel.com>,
Rakie Kim <rakie.kim@sk.com>, Byungchul Park <byungchul@sk.com>,
Gregory Price <gourry@gourry.net>,
Ying Huang <ying.huang@linux.alibaba.com>,
Alistair Popple <apopple@nvidia.com>,
Dan Williams <djbw@kernel.org>, Jason Gunthorpe <jgg@ziepe.ca>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 6/6] mm: hugetlb: Refactor out hugetlb_alloc_folio()
Date: Tue, 19 May 2026 10:08:15 +0200 [thread overview]
Message-ID: <agwab8q-C2ZetFOJ@localhost.localdomain> (raw)
In-Reply-To: <20260518-hugetlb-open-up-v3-6-e14b302477f8@google.com>
On Mon, May 18, 2026 at 05:19:45PM -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.
>
> Provide and use alloc_flags to allow more allocation knobs in future
> without expanding the number of parameters in hugetlb_alloc_folio().
>
> No functional change intended.
>
> Signed-off-by: Ackerley Tng <ackerleytng@google.com>
I am traveling so I plan to do a more careful review in a few days but I
wanted to do some remark:
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
...
> +struct folio *hugetlb_alloc_folio(struct hstate *h, struct hugepage_subpool *spool,
> + gfp_t gfp, struct mempolicy_interpreted *mpoli,
> + u8 alloc_flags)
> +{
> + bool charge_hugetlb_cgroup_rsvd = alloc_flags &
> + HUGETLB_ALLOC_CHARG_CGROUP_RSVD;
> + bool use_global_reservation = alloc_flags &
> + HUGETLB_ALLOC_USE_GLOBAL_RESERVATIONS;
> + size_t nr_pages = pages_per_huge_page(h);
> + struct hugetlb_cgroup *h_cg = NULL;
> + int idx = hstate_index(h);
> + struct folio *folio;
> + int ret;
IIUC, hugetlb_alloc_folio() will be the gateway function everyone will use from now
on to allocate hugetlb pages, that goes for hugetlb itself and external users like guest_memfd.
The gfp flag should really be defined here, because otherwise you are creating openings for
external users to start passing their own crafted gfp flags and that feels wrong.
Sure we can guard that down the road but we should not really need it.
--
Oscar Salvador
SUSE Labs
next prev parent reply other threads:[~2026-05-19 8:08 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-19 0:19 [PATCH v3 0/6] Open HugeTLB allocation routine for more generic use Ackerley Tng via B4 Relay
2026-05-19 0:19 ` [PATCH v3 1/6] mm: hugetlb: Consolidate interpretation of gbl_chg within alloc_hugetlb_folio() Ackerley Tng via B4 Relay
2026-05-19 0:19 ` [PATCH v3 2/6] mm: hugetlb: Move mpol interpretation out of alloc_buddy_hugetlb_folio_with_mpol() Ackerley Tng via B4 Relay
2026-05-19 18:27 ` Ackerley Tng
2026-05-19 0:19 ` [PATCH v3 3/6] mm: hugetlb: Move mpol interpretation out of dequeue_hugetlb_folio_vma() Ackerley Tng via B4 Relay
2026-05-19 0:19 ` [PATCH v3 4/6] mm: hugetlb: Use error variable in alloc_hugetlb_folio Ackerley Tng via B4 Relay
2026-05-19 0:19 ` [PATCH v3 5/6] mm: hugetlb: Move mem_cgroup_charge_hugetlb() earlier in allocation Ackerley Tng via B4 Relay
2026-05-19 0:19 ` [PATCH v3 6/6] mm: hugetlb: Refactor out hugetlb_alloc_folio() Ackerley Tng via B4 Relay
2026-05-19 8:08 ` Oscar Salvador (SUSE) [this message]
2026-05-19 18:25 ` 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=agwab8q-C2ZetFOJ@localhost.localdomain \
--to=osalvador@kernel.org \
--cc=ackerleytng@google.com \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=byungchul@sk.com \
--cc=david@kernel.org \
--cc=djbw@kernel.org \
--cc=fvdl@google.com \
--cc=gourry@gourry.net \
--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=matthew.brost@intel.com \
--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=rakie.kim@sk.com \
--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 \
--cc=ying.huang@linux.alibaba.com \
--cc=ziy@nvidia.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox