mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Gregory Price <gourry@gourry.net>
To: linux-mm@kvack.org, willy@infradead.org, david@kernel.org,
	 vbabka@kernel.org, brendan.jackman@linux.dev
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	 kernel-team@meta.com, jack@suse.cz, akpm@linux-foundation.org,
	ziy@nvidia.com,  joshua.hahnjy@gmail.com, rakie.kim@sk.com,
	ying.huang@linux.alibaba.com,  surenb@google.com,
	mhocko@suse.com, hannes@cmpxchg.org
Subject: Re: [RFC PATCH 0/6] mm: pass alloc_flags through folio, filemap, and bulk allocators
Date: Thu, 8 Oct 2026 05:10:12 -0400	[thread overview]
Message-ID: <asdTptfeLkuypU8t@gourry-fedora-PF4VCD3F> (raw)
In-Reply-To: <20260923211041.3127588-1-gourry@gourry.net>

On Wed, Sep 23, 2026 at 05:10:34PM -0400, Gregory Price wrote:
> This six-patch series first separates allocator behavior flags from
> the bulk allocator fast-path flags and shares their validation and
> preparation. It then passes alloc_flags through the MM-internal folio,
> NUMA policy, filemap, and bulk helpers.

I had various discussions this week regarding ALLOC_ZONELIST_PRIVATE and
ALLOC_UNMAPPED, and whether adding alloc_flags to the APIs is a good/bad
idea and what the alternatives are.  I'd like to summarize the notes
here and try to find a way forward.

recommendations that were made:

1) re-use unused GFP flags
   #define __GFP_X  __GFP_DMA
   or simply delete/replace __GFP_DMA

   There presently are no truly unused GFP flags, though there may be
   some users who can be shuffled around if we are willing to add
   functions.

2) alias 2+ incompatible GFP flags to make a new one
   #define GFP_A (__GFP_NORETRY | __GFP_RETRY_MAYFAIL)
   #define GFP_B (__GFP_NORETRY | __GFP_NOFAIL)
   #define GFP_C (__GFP_NOFAIL | __GFP_RETRY_MAYFAIL)
   #define GFP_X (__GFP_DMA | __GFP_DMA32)
   #define GFP_Y (__GFP_DMA | __GFP_HIGHMEM)
   #define GFP_Z (__GFP_DMA32 | __GFP_HIGHMEM)

   These are all nonsensical combinations.

   Downside: We should probably just forbid these, otherwise the function
   contract just ends up being confusing - i.e. (__GFP_DMA | __GFP_DMA32)
   should just warn / return NULL.


3) expose alloc_flags as mm-internal only flags (this series)
   in addition - convert some GFP flags to ALLOC flags

   In 99% of callers they would simply add ALLOC_DEFAULT (0).

   The upside - it seems like there are 2-3 GFP flags that may be
   good candidates for conversion to alloc flags:
     __GFP_WRITE
     __GFP_ZEROTAGS
     __GFP_SKIP_ZERO

   And the zone/zonelist selectors seem like candidates to free up GFP
   flags by turning them into internal-only flags and giving drivers
   some kind of explicit API, e.g.:
     __GFP_DMA/__GFP_DMA32 -> dma_alloc(...) -> intenal ALLOC_DMA|32

   I considered whether __GFP_THISNODE should actually be broken up,
   as it actually means two things (don't oom, use thisnode zonelist)
   Something like:
     ALLOC_NO_OOM
     ALLOC_THISNODE_ZONELIST  (or keep __GFP_THISNODE)

   The downside is yet another flag interface in the page allocator.
   Note: This is basically 1/2 way done, this series finishes it.


4) simply add functions to the page allocator

   folio_alloc_private(...) {
     alloc_flags |= ALLOC_ZONELIST_PRIVATE;
   }

   This has the downsize of requiring page allocation callers to know
   more than page/folio allocator functions if they want a particular
   type of page (unmapped, private, etc) and increases the surface of
   the page allocator.


Would like to find a path foward.  I lean towards GFP -> ALLOC flag
conversion and making alloc_flags internal-only.

~Gregory

      parent reply	other threads:[~2026-10-08  9:10 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-23 21:10 Gregory Price
2026-09-23 21:10 ` [RFC PATCH 1/6] mm/page_alloc: clarify bulk allocator flag scope Gregory Price
2026-09-23 21:10 ` [RFC PATCH 2/6] mm/page_alloc: refactor alloc_flags preparation Gregory Price
2026-09-23 21:10 ` [RFC PATCH 3/6] mm/page_alloc: add an alloc_flags-aware folio allocator Gregory Price
2026-09-23 21:10 ` [RFC PATCH 4/6] mm/mempolicy: plumb alloc_flags through folio allocation Gregory Price
2026-09-23 21:10 ` [RFC PATCH 5/6] mm/filemap: " Gregory Price
2026-09-23 21:10 ` [RFC PATCH 6/6] mm/page_alloc: let the bulk allocator carry alloc_flags Gregory Price
2026-09-23 21:42 ` [RFC PATCH 0/6] mm: pass alloc_flags through folio, filemap, and bulk allocators Matthew Wilcox
2026-09-23 22:09   ` Gregory Price
2026-10-08  9:10 ` Gregory Price [this message]

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=asdTptfeLkuypU8t@gourry-fedora-PF4VCD3F \
    --to=gourry@gourry.net \
    --cc=akpm@linux-foundation.org \
    --cc=brendan.jackman@linux.dev \
    --cc=david@kernel.org \
    --cc=hannes@cmpxchg.org \
    --cc=jack@suse.cz \
    --cc=joshua.hahnjy@gmail.com \
    --cc=kernel-team@meta.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=rakie.kim@sk.com \
    --cc=surenb@google.com \
    --cc=vbabka@kernel.org \
    --cc=willy@infradead.org \
    --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

all inboxes | Powered by JetHome®