linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes@cmpxchg.org>
To: Frank van der Linden <fvdl@google.com>
Cc: akpm@linux-foundation.org, muchun.song@linux.dev,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	yuzhao@google.com, usamaarif642@gmail.com,
	joao.m.martins@oracle.com, roman.gushchin@linux.dev
Subject: Re: [PATCH v4 10/27] mm/sparse: allow for alternate vmemmap section init at boot
Date: Thu, 27 Feb 2025 14:36:27 -0500	[thread overview]
Message-ID: <20250227193627.GC115948@cmpxchg.org> (raw)
In-Reply-To: <CAPTztWZEWkYAk8FGTBESYQizHhCBd2PUYRwKf1Y3poKXqooP_Q@mail.gmail.com>

On Thu, Feb 27, 2025 at 10:03:04AM -0800, Frank van der Linden wrote:
> On Thu, Feb 27, 2025 at 9:56 AM Frank van der Linden <fvdl@google.com> wrote:
> >
> > On Thu, Feb 27, 2025 at 9:32 AM Frank van der Linden <fvdl@google.com> wrote:
> > >
> > > On Thu, Feb 27, 2025 at 9:20 AM Johannes Weiner <hannes@cmpxchg.org> wrote:
> > > >
> > > > On Thu, Feb 27, 2025 at 08:47:18AM -0800, Frank van der Linden wrote:
> > > > > On Wed, Feb 26, 2025 at 10:09 AM Johannes Weiner <hannes@cmpxchg.org> wrote:
> > > > > >
> > > > > > On Tue, Feb 18, 2025 at 06:16:38PM +0000, Frank van der Linden wrote:
> > > > > > > @@ -489,6 +489,14 @@ config SPARSEMEM_VMEMMAP
> > > > > > >         SPARSEMEM_VMEMMAP uses a virtually mapped memmap to optimise
> > > > > > >         pfn_to_page and page_to_pfn operations.  This is the most
> > > > > > >         efficient option when sufficient kernel resources are available.
> > > > > > > +
> > > > > > > +config ARCH_WANT_SPARSEMEM_VMEMMAP_PREINIT
> > > > > > > +     bool
> > > > > > > +
> > > > > > > +config SPARSEMEM_VMEMMAP_PREINIT
> > > > > > > +     bool "Early init of sparse memory virtual memmap"
> > > > > > > +     depends on SPARSEMEM_VMEMMAP && ARCH_WANT_SPARSEMEM_VMEMMAP_PREINIT
> > > > > > > +     default y
> > > > > >
> > > > > > oldconfig just prompted me on this, but it's not clear to me what it
> > > > > > does. Not even after skimming the changelog of the patch to be honest.
> > > > > >
> > > > > > Can you please add a help text that explains the user-visible effects
> > > > > > of the toggle, as well as guidance as to who might care to change it?
> > > > >
> > > > > Hi Johannes,
> > > > >
> > > > > Thanks for your comment. How's this:
> > > >
> > > > Thanks for the quick reply!
> > > >
> > > > > Enables subsystems to pre-initialize memmap in their own way,
> > > > > allowing for memory savings during boot. The HugeTLB code uses
> > > > > this to initialize memmap for bootmem allocated gigantic hugepages
> > > > > in a way that is done by HUGETLB_PAGE_OPTIMIZE_VMEMMAP. This
> > > > > means saving this memory right away, instead of allocating it
> > > > > first and then freeing it later. Not allocating these pages
> > > > > at all during boot allows for specifying a bigger number of
> > > > > hugepages on the kernel commandline on larger systems.
> > > >
> > > > That makes sense.
> > > >
> > > > But if it's infra code for a hugetlb feature, it should either be
> > > > something that HUGETLB_PAGE_OPTIMIZE_VMEMMAP pulls in automatically,
> > > > or at least be a hugetlb-specific option that pulls it in.
> > > >
> > > > Keep in mind that not everybody enables HUGETLBFS. In fact, hugetlb is
> > > > default N. It's moot to ask users whether they want to enable infra
> > > > code for a feature they aren't using, and default to Y no less. You're
> > > > regressing innocent bystanders doing this.
> > >
> > > The main reason that I added a separate config was:
> > >
> > > 1) I could see other subsystems use this.
> > > 2) The number of section flags is limited, so I wanted to put the one
> > > I added inside an option instead of always using it.

Yeah, an *internal* config symbol make sense, so that the sparse flag
and the code generation are gated on whether there is an actual user.

I'm just proposing to make it invisible and let
HUGETLB_PAGE_OPTIMIZE_VMEMMAP (and future users) select/depend on it.

> > > If especially 2) is not a concern or can be solved differently, I'll
> > > be happy to remove the option. I don't particularly like having it,
> > > but I didn't see a better way.
> > >
> > > Let me think of a way to clean this up a little, and suggestions are
> > > welcome, of course.
> > >
> > > - Frank
> >
> > I'll just do:
> >
> > diff --git a/fs/Kconfig b/fs/Kconfig
> > index 64d420e3c475..fb9831927a08 100644
> > --- a/fs/Kconfig
> > +++ b/fs/Kconfig
> > @@ -286,6 +286,7 @@ config HUGETLB_PAGE_OPTIMIZE_VMEMMAP
> >         def_bool HUGETLB_PAGE
> >         depends on ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP
> >         depends on SPARSEMEM_VMEMMAP
> > +       select SPARSEMEM_VMEMMAP_PREINIT
> >
> >  config HUGETLB_PMD_PAGE_TABLE_SHARING
> >         def_bool HUGETLB_PAGE
> > diff --git a/mm/Kconfig b/mm/Kconfig
> > index f984dd928ce7..44b52f8e5296 100644
> > --- a/mm/Kconfig
> > +++ b/mm/Kconfig
> > @@ -496,7 +496,6 @@ config ARCH_WANT_SPARSEMEM_VMEMMAP_PREINIT
> >  config SPARSEMEM_VMEMMAP_PREINIT
> >         bool "Early init of sparse memory virtual memmap"
> >         depends on SPARSEMEM_VMEMMAP && ARCH_WANT_SPARSEMEM_VMEMMAP_PREINIT
> > -       default y
> >
> > Does that seem ok? I'll send an mm-unstable follow-up patch.
> >
> 
> Wait, that's actually not correct. Anyway, I'll stop spamming - I'll
> do it along these lines but properly, and will send a follow-up patch.

If you remove the prompt after "bool" it becomes an internal symbol
that you can then pull in as needed.

I agree that unconditionally consuming the sparse flag would be
unfortunate, but consuming it when HUGETLB_PAGE_OPTIMIZE_VMEMMAP is
enabled is fine, right? Seems like a specialized enough config.

Thanks!


  reply	other threads:[~2025-02-27 19:36 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-18 18:16 [PATCH v4 00/27] hugetlb/CMA improvements for large systems Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 01/27] mm/cma: export total and free number of pages for CMA areas Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 02/27] mm, cma: support multiple contiguous ranges, if requested Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 03/27] mm/cma: introduce cma_intersects function Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 04/27] mm, hugetlb: use cma_declare_contiguous_multi Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 05/27] mm/hugetlb: remove redundant __ClearPageReserved Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 06/27] mm/hugetlb: use online nodes for bootmem allocation Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 07/27] mm/hugetlb: convert cmdline parameters from setup to early Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 08/27] x86/mm: make register_page_bootmem_memmap handle PTE mappings Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 09/27] mm/bootmem_info: export register_page_bootmem_memmap Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 10/27] mm/sparse: allow for alternate vmemmap section init at boot Frank van der Linden
2025-02-26 18:09   ` Johannes Weiner
2025-02-27 16:47     ` Frank van der Linden
2025-02-27 17:20       ` Johannes Weiner
2025-02-27 17:32         ` Frank van der Linden
2025-02-27 17:56           ` Frank van der Linden
2025-02-27 18:03             ` Frank van der Linden
2025-02-27 19:36               ` Johannes Weiner [this message]
2025-02-18 18:16 ` [PATCH v4 11/27] mm/hugetlb: set migratetype for bootmem folios Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 12/27] mm: define __init_reserved_page_zone function Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 13/27] mm/hugetlb: check bootmem pages for zone intersections Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 14/27] mm/sparse: add vmemmap_*_hvo functions Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 15/27] mm/hugetlb: deal with multiple calls to hugetlb_bootmem_alloc Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 16/27] mm/hugetlb: move huge_boot_pages list init " Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 17/27] mm/hugetlb: add pre-HVO framework Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 18/27] mm/hugetlb_vmemmap: fix hugetlb_vmemmap_restore_folios definition Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 19/27] mm/hugetlb: do pre-HVO for bootmem allocated pages Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 20/27] x86/setup: call hugetlb_bootmem_alloc early Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 21/27] x86/mm: set ARCH_WANT_SPARSEMEM_VMEMMAP_PREINIT Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 22/27] mm/cma: simplify zone intersection check Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 23/27] mm/cma: introduce a cma validate function Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 24/27] mm/cma: introduce interface for early reservations Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 25/27] mm/hugetlb: add hugetlb_cma_only cmdline option Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 26/27] mm/hugetlb: enable bootmem allocation from CMA areas Frank van der Linden
2025-02-18 18:16 ` [PATCH v4 27/27] mm/hugetlb: move hugetlb CMA code in to its own file Frank van der Linden
2025-02-19 18:09 ` [PATCH v4 00/27] hugetlb/CMA improvements for large systems Frank van der Linden

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=20250227193627.GC115948@cmpxchg.org \
    --to=hannes@cmpxchg.org \
    --cc=akpm@linux-foundation.org \
    --cc=fvdl@google.com \
    --cc=joao.m.martins@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=muchun.song@linux.dev \
    --cc=roman.gushchin@linux.dev \
    --cc=usamaarif642@gmail.com \
    --cc=yuzhao@google.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