From: Mike Rapoport <rppt@kernel.org>
To: Vlastimil Babka <vbabka@suse.cz>
Cc: Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@redhat.com>,
Doug Berger <opendmb@gmail.com>,
Matthew Wilcox <willy@infradead.org>,
Mel Gorman <mgorman@suse.de>, Michal Hocko <mhocko@kernel.org>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org,
linux-mm@kvack.org
Subject: Re: [PATCH v2 04/14] mm: handle hashdist initialization in mm/mm_init.c
Date: Wed, 22 Mar 2023 17:00:49 +0200 [thread overview]
Message-ID: <ZBsYIeIEjuYwyiTO@kernel.org> (raw)
In-Reply-To: <ed44b114-36f3-1ca6-726d-5187314aea49@suse.cz>
On Wed, Mar 22, 2023 at 03:49:24PM +0100, Vlastimil Babka wrote:
> On 3/21/23 18:05, Mike Rapoport wrote:
> > From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> >
> > The hashdist variable must be initialized before the first call to
> > alloc_large_system_hash() and free_area_init() looks like a better place
> > for it than page_alloc_init().
> >
> > Move hashdist handling to mm/mm_init.c
> >
> > Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
> > Acked-by: David Hildenbrand <david@redhat.com>
>
> Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
>
> Looks like this will move the fixup_hashdist() call earlier, but can't
> result in seeing less N_MEMORY nodes than before, right?
hashdist must be set before the first call to alloc_large_system_hash() and
after the nodes present at boot time are initialized, so setting it in the
end of free_area_init() is Ok.
> I wonder if the whole thing lacks hotplug support anyway, what if system
> boots with one node and more are added later? Hmm.
alloc_large_system_hash() is called really early even for !HASH_EARLY
cases. Not sure it's feasible to redistribute the hashes allocated with it
when new node is added.
> > ---
> > mm/mm_init.c | 22 ++++++++++++++++++++++
> > mm/page_alloc.c | 18 ------------------
> > 2 files changed, 22 insertions(+), 18 deletions(-)
> >
> > diff --git a/mm/mm_init.c b/mm/mm_init.c
> > index 68d0187c7886..2e60c7186132 100644
> > --- a/mm/mm_init.c
> > +++ b/mm/mm_init.c
> > @@ -607,6 +607,25 @@ int __meminit early_pfn_to_nid(unsigned long pfn)
> >
> > return nid;
> > }
> > +
> > +int hashdist = HASHDIST_DEFAULT;
> > +
> > +static int __init set_hashdist(char *str)
> > +{
> > + if (!str)
> > + return 0;
> > + hashdist = simple_strtoul(str, &str, 0);
> > + return 1;
> > +}
> > +__setup("hashdist=", set_hashdist);
> > +
> > +static inline void fixup_hashdist(void)
> > +{
> > + if (num_node_state(N_MEMORY) == 1)
> > + hashdist = 0;
> > +}
> > +#else
> > +static inline void fixup_hashdist(void) {}
> > #endif /* CONFIG_NUMA */
> >
> > #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
> > @@ -1855,6 +1874,9 @@ void __init free_area_init(unsigned long *max_zone_pfn)
> > }
> >
> > memmap_init();
> > +
> > + /* disable hash distribution for systems with a single node */
> > + fixup_hashdist();
> > }
> >
> > /**
> > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > index c56c147bdf27..ff6a2fff2880 100644
> > --- a/mm/page_alloc.c
> > +++ b/mm/page_alloc.c
> > @@ -6383,28 +6383,10 @@ static int page_alloc_cpu_online(unsigned int cpu)
> > return 0;
> > }
> >
> > -#ifdef CONFIG_NUMA
> > -int hashdist = HASHDIST_DEFAULT;
> > -
> > -static int __init set_hashdist(char *str)
> > -{
> > - if (!str)
> > - return 0;
> > - hashdist = simple_strtoul(str, &str, 0);
> > - return 1;
> > -}
> > -__setup("hashdist=", set_hashdist);
> > -#endif
> > -
> > void __init page_alloc_init(void)
> > {
> > int ret;
> >
> > -#ifdef CONFIG_NUMA
> > - if (num_node_state(N_MEMORY) == 1)
> > - hashdist = 0;
> > -#endif
> > -
> > ret = cpuhp_setup_state_nocalls(CPUHP_PAGE_ALLOC,
> > "mm/page_alloc:pcp",
> > page_alloc_cpu_online,
>
--
Sincerely yours,
Mike.
next prev parent reply other threads:[~2023-03-22 15:01 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-21 17:04 [PATCH v2 00/14] mm: move core MM initialization to mm/mm_init.c Mike Rapoport
2023-03-21 17:05 ` [PATCH v2 01/14] mips: fix comment about pgtable_init() Mike Rapoport
2023-03-22 11:36 ` Vlastimil Babka
2023-03-21 17:05 ` [PATCH v2 02/14] mm/page_alloc: add helper for checking if check_pages_enabled Mike Rapoport
2023-03-22 11:38 ` Vlastimil Babka
2023-03-21 17:05 ` [PATCH v2 03/14] mm: move most of core MM initialization to mm/mm_init.c Mike Rapoport
2023-03-22 14:26 ` Vlastimil Babka
2023-03-21 17:05 ` [PATCH v2 04/14] mm: handle hashdist initialization in mm/mm_init.c Mike Rapoport
2023-03-22 14:49 ` Vlastimil Babka
2023-03-22 15:00 ` Mike Rapoport [this message]
2023-03-21 17:05 ` [PATCH v2 05/14] mm/page_alloc: rename page_alloc_init() to page_alloc_init_cpuhp() Mike Rapoport
2023-03-22 14:50 ` Vlastimil Babka
2023-03-21 17:05 ` [PATCH v2 06/14] init: fold build_all_zonelists() and page_alloc_init_cpuhp() to mm_init() Mike Rapoport
2023-03-22 16:10 ` Vlastimil Babka
2023-03-22 20:26 ` Mike Rapoport
2023-03-23 7:09 ` Vlastimil Babka
2023-03-21 17:05 ` [PATCH v2 07/14] init,mm: move mm_init() to mm/mm_init.c and rename it to mm_core_init() Mike Rapoport
2023-03-22 16:24 ` Vlastimil Babka
2023-03-21 17:05 ` [PATCH v2 08/14] mm: call {ptlock,pgtable}_cache_init() directly from mm_core_init() Mike Rapoport
2023-03-22 9:06 ` Sergei Shtylyov
2023-03-22 10:08 ` Mike Rapoport
2023-03-22 11:18 ` David Hildenbrand
2023-03-22 16:27 ` Vlastimil Babka
2023-03-21 17:05 ` [PATCH v2 09/14] mm: move init_mem_debugging_and_hardening() to mm/mm_init.c Mike Rapoport
2023-03-22 16:28 ` Vlastimil Babka
2023-03-21 17:05 ` [PATCH v2 10/14] init,mm: fold late call to page_ext_init() to page_alloc_init_late() Mike Rapoport
2023-03-22 16:30 ` Vlastimil Babka
2023-03-21 17:05 ` [PATCH v2 11/14] mm: move mem_init_print_info() to mm_init.c Mike Rapoport
2023-03-22 16:32 ` Vlastimil Babka
2023-03-21 17:05 ` [PATCH v2 12/14] mm: move kmem_cache_init() declaration to mm/slab.h Mike Rapoport
2023-03-22 16:33 ` Vlastimil Babka
2023-03-21 17:05 ` [PATCH v2 13/14] mm: move vmalloc_init() declaration to mm/internal.h Mike Rapoport
2023-03-22 16:33 ` Vlastimil Babka
2023-03-21 17:05 ` [PATCH v2 14/14] MAINTAINERS: extend memblock entry to include MM initialization Mike Rapoport
2023-03-22 16:34 ` Vlastimil Babka
2023-03-22 11:19 ` [PATCH v2 00/14] mm: move core MM initialization to mm/mm_init.c David Hildenbrand
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=ZBsYIeIEjuYwyiTO@kernel.org \
--to=rppt@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=mhocko@kernel.org \
--cc=opendmb@gmail.com \
--cc=tsbogend@alpha.franken.de \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
/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.