From: Gregory Price <gourry@gourry.net>
To: Ackerley Tng <ackerleytng@google.com>
Cc: Alistair Popple <apopple@nvidia.com>,
Andrew Morton <akpm@linux-foundation.org>,
Byungchul Park <byungchul@sk.com>,
David Hildenbrand <david@kernel.org>,
Joshua Hahn <joshua.hahnjy@gmail.com>,
Matthew Brost <matthew.brost@intel.com>,
Muchun Song <muchun.song@linux.dev>,
Oscar Salvador <osalvador@suse.de>, Rakie Kim <rakie.kim@sk.com>,
Ying Huang <ying.huang@linux.alibaba.com>,
Zi Yan <ziy@nvidia.com>,
erdemaktas@google.com, fvdl@google.com, jiaqiyan@google.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, Jason Gunthorpe <jgg@ziepe.ca>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH v5 2/3] mm: hugetlb: Move mpol interpretation out of alloc_buddy_hugetlb_folio_with_mpol()
Date: Mon, 3 Aug 2026 10:55:52 -0400 [thread overview]
Message-ID: <anCqmhFw_D29uiuo@gourry-fedora-PF4VCD3F> (raw)
In-Reply-To: <20260803-hugetlb-mpol-interpretation-v5-2-af2b7089f8a9@google.com>
On Mon, Aug 03, 2026 at 06:37:59AM -0700, Ackerley Tng wrote:
> Move memory policy interpretation out of
> alloc_buddy_hugetlb_folio_with_mpol() and into alloc_hugetlb_folio() to
> separate reading and interpretation of memory policy from actual
> allocation.
>
> This will later allow memory policy to be interpreted outside of the
> process of allocating a hugetlb folio entirely. This opens doors for other
> callers of the HugeTLB folio allocation function, such as guest_memfd,
> where memory may not always be mapped and hence may not have an associated
> vma.
>
> Introduce struct mempolicy_interpreted to hold all the components of an
> interpreted memory policy.
>
> Rename alloc_buddy_hugetlb_folio_with_mpol() to alloc_buddy_hugetlb_folio()
> since the function no longer interprets memory policy.
>
> No functional change intended.
>
> Reviewed-by: James Houghton <jthoughton@google.com>
> Acked-by: Oscar Salvador <osalvador@suse.de>
> Signed-off-by: Ackerley Tng <ackerleytng@google.com>
> ---
> include/uapi/linux/mempolicy.h | 2 +-
> mm/hugetlb.c | 54 ++++++++++++++++++++++++++++--------------
> 2 files changed, 37 insertions(+), 19 deletions(-)
>
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -1317,6 +1317,12 @@ static unsigned long available_huge_pages(struct hstate *h)
> return h->free_huge_pages - h->resv_huge_pages;
> }
>
> +struct mempolicy_interpreted {
> + int nid;
> + nodemask_t *nodemask;
^^ const please (mempolicy owns it, it should never change)
> + enum mempolicy_mode mode;
> +};
> +
Is this intended to be an ephemeral struct that will eventually be
removed? Because it feels like mempolicy.c should just be handling this
directly instead of needing this cached structure.
> static struct folio *dequeue_hugetlb_folio_vma(struct hstate *h,
> struct vm_area_struct *vma,
> unsigned long address)
> @@ -2138,32 +2144,28 @@ static struct folio *alloc_migrate_hugetlb_folio(struct hstate *h, gfp_t gfp_mas
> return folio;
> }
>
... snip ...
> @@ -2926,8 +2928,24 @@ struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
> folio = dequeue_hugetlb_folio_vma(h, vma, addr);
>
> if (!folio) {
> + struct mempolicy_interpreted mpoli;
> + struct mempolicy *mpol;
> + nodemask_t *nodemask;
> + int nid;
> +
> spin_unlock_irq(&hugetlb_lock);
> - folio = alloc_buddy_hugetlb_folio_with_mpol(h, vma, addr);
> + nid = huge_node(vma, addr, gfp, &mpol, &nodemask);
> + mpoli = (struct mempolicy_interpreted){
> + .nid = nid,
> +#ifdef CONFIG_NUMA
> + .mode = mpol ? mpol->mode : MPOL_DEFAULT,
> +#else
> + .mode = MPOL_DEFAULT,
> +#endif
This is not great, and tells me this interaction should probably
be sunk into mempolicy instead of pulling ifdef/else into hugetlb.
> + .nodemask = nodemask,
> + };
> + folio = alloc_buddy_hugetlb_folio(h, gfp, &mpoli);
> + mpol_cond_put(mpol);
> if (!folio)
> goto out_uncharge_cgroup;
> spin_lock_irq(&hugetlb_lock);
next prev parent reply other threads:[~2026-08-03 14:55 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-03 13:37 [PATCH v5 0/3] Consolidate memory policy interpretation in alloc_hugetlb_folio() Ackerley Tng via B4 Relay
2026-08-03 13:37 ` Ackerley Tng
2026-08-03 13:37 ` [PATCH v5 1/3] mm: hugetlb: Consolidate interpretation of gbl_chg within alloc_hugetlb_folio() Ackerley Tng via B4 Relay
2026-08-03 13:37 ` Ackerley Tng
2026-08-03 14:49 ` Gregory Price
2026-08-03 13:37 ` [PATCH v5 2/3] mm: hugetlb: Move mpol interpretation out of alloc_buddy_hugetlb_folio_with_mpol() Ackerley Tng via B4 Relay
2026-08-03 13:37 ` Ackerley Tng
2026-08-03 14:55 ` Gregory Price [this message]
2026-08-03 13:38 ` [PATCH v5 3/3] mm: hugetlb: Move mpol interpretation out of dequeue_hugetlb_folio_vma() Ackerley Tng via B4 Relay
2026-08-03 13:38 ` Ackerley Tng
2026-08-03 14:59 ` Gregory Price
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=anCqmhFw_D29uiuo@gourry-fedora-PF4VCD3F \
--to=gourry@gourry.net \
--cc=ackerleytng@google.com \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=byungchul@sk.com \
--cc=david@kernel.org \
--cc=erdemaktas@google.com \
--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=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 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.