From: Mike Rapoport <rppt@kernel.org>
To: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org,
Alexander Gordeev <agordeev@linux.ibm.com>,
Andreas Larsson <andreas@gaisler.com>,
Arnd Bergmann <arnd@arndb.de>, Borislav Petkov <bp@alien8.de>,
Catalin Marinas <catalin.marinas@arm.com>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Dan Williams <dan.j.williams@intel.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
David Hildenbrand <david@redhat.com>,
"David S. Miller" <davem@davemloft.net>,
Davidlohr Bueso <dave@stgolabs.net>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Heiko Carstens <hca@linux.ibm.com>,
Huacai Chen <chenhuacai@kernel.org>,
Ingo Molnar <mingo@redhat.com>,
Jiaxun Yang <jiaxun.yang@flygoat.com>,
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
Jonathan Corbet <corbet@lwn.net>,
Michael Ellerman <mpe@ellerman.id.au>,
Palmer Dabbelt <palmer@dabbelt.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Rob Herring <robh@kernel.org>,
Samuel Holland <samuel.holland@sifive.com>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Thomas Gleixner <tglx@linutronix.de>,
Vasily Gorbik <gor@linux.ibm.com>, Will Deacon <will@kernel.org>,
Zi Yan <ziy@nvidia.com>,
devicetree@vger.kernel.org, linux-acpi@vger.kernel.org,
linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-cxl@vger.kernel.org, linux-doc@vger.kernel.org,
linux-mips@vger.kernel.org, linux-mm@kvack.org,
linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
linux-sh@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
loongarch@lists.linux.dev, nvdimm@lists.linux.dev,
sparclinux@vger.kernel.org, x86@kernel.org
Subject: Re: [PATCH v3 07/26] mm: drop CONFIG_HAVE_ARCH_NODEDATA_EXTENSION
Date: Mon, 5 Aug 2024 17:39:41 +0300 [thread overview]
Message-ID: <ZrDkLeLxQAVvZcBn@kernel.org> (raw)
In-Reply-To: <20240804161119.00003a02@Huawei.com>
On Sun, Aug 04, 2024 at 04:11:19PM +0100, Jonathan Cameron wrote:
> On Sun, 4 Aug 2024 10:24:15 +0300
> Mike Rapoport <rppt@kernel.org> wrote:
>
> > On Sat, Aug 03, 2024 at 11:58:13AM -0700, Andrew Morton wrote:
> > > On Fri, 2 Aug 2024 10:49:22 +0100 Jonathan Cameron <Jonathan.Cameron@Huawei.com> wrote:
> > >
> > > > > --- a/mm/mm_init.c
> > > > > +++ b/mm/mm_init.c
> > > > > @@ -1838,11 +1838,10 @@ void __init free_area_init(unsigned long *max_zone_pfn)
> > > > >
> > > > > if (!node_online(nid)) {
> > > > > /* Allocator not initialized yet */
> > > > > - pgdat = arch_alloc_nodedata(nid);
> > > > > + pgdat = memblock_alloc(sizeof(*pgdat), SMP_CACHE_BYTES);
> > > > > if (!pgdat)
> > > > > panic("Cannot allocate %zuB for node %d.\n",
> > > > > sizeof(*pgdat), nid);
> > > > > - arch_refresh_nodedata(nid, pgdat);
> > > >
> > > > This allocates pgdat but never sets node_data[nid] to it
> > > > and promptly leaks it on the line below.
> > > >
> > > > Just to sanity check this I spun up a qemu machine with no memory
> > > > initially present on some nodes and it went boom as you'd expect.
> > > >
> > > > I tested with addition of
> > > > NODE_DATA(nid) = pgdat;
> > > > and it all seems to work as expected.
> > >
> > > Thanks, I added that. It blew up on x86_64 allnoconfig because
> > > node_data[] (and hence NODE_DATA()) isn't an lvalue when CONFIG_NUMA=n.
> > >
> > > I'll put some #ifdef CONFIG_NUMAs in there for now but
> > >
> > > a) NODE_DATA() is upper-case. Implies "constant". Shouldn't be assigned to.
> > >
> > > b) NODE_DATA() should be non-lvalue when CONFIG_NUMA=y also. But no,
> > > we insist on implementing things in cpp instead of in C.
> >
> > This looks like a candidate for a separate tree-wide cleanup.
> >
> > > c) In fact assigning to anything which ends in "()" is nuts. Please
> > > clean up my tempfix.
> > >
> > > c) Mike, generally I'm wondering if there's a bunch of code here
> > > which isn't needed on CONFIG_NUMA=n. Please check all of this for
> > > unneeded bloatiness.
> >
> > I believe the patch addresses your concerns, just with this the commit log
> > needs update. Instead of
> >
> > Replace the call to arch_alloc_nodedata() in free_area_init() with
> > memblock_alloc(), remove arch_refresh_nodedata() and cleanup
> > include/linux/memory_hotplug.h from the associated ifdefery.
> >
> > it should be
> >
> > Replace the call to arch_alloc_nodedata() in free_area_init() with a
> > new helper alloc_offline_node_data(), remove arch_refresh_nodedata()
> > and cleanup include/linux/memory_hotplug.h from the associated
> > ifdefery.
> >
> > I can send an updated patch if you prefer.
> This solution looks good to me - except for a Freudian typo that means it won't
> compile :)
Right :)
I'll post v4 after kbuild confirms it compiles :)
> Jonathan
>
> >
> > diff --git a/include/linux/numa.h b/include/linux/numa.h
> > index 3b12d8ca0afd..5a749fd67f39 100644
> > --- a/include/linux/numa.h
> > +++ b/include/linux/numa.h
> > @@ -34,6 +34,7 @@ extern struct pglist_data *node_data[];
> > #define NODE_DATA(nid) (node_data[nid])
> >
> > void __init alloc_node_data(int nid);
> > +void __init alloc_offline_node_data(int nit);
> >
> > /* Generic implementation available */
> > int numa_nearest_node(int node, unsigned int state);
> > @@ -62,6 +63,8 @@ static inline int phys_to_target_node(u64 start)
> > {
> > return 0;
> > }
> > +
> > +static inline void alloc_offline_node_data(int nit) {}
> nid
> > #endif
> >
> > #define numa_map_to_online_node(node) numa_nearest_node(node, N_ONLINE)
> > diff --git a/mm/mm_init.c b/mm/mm_init.c
> > index bcc2f2dd8021..2785be04e7bb 100644
> > --- a/mm/mm_init.c
> > +++ b/mm/mm_init.c
> > @@ -1836,13 +1836,8 @@ void __init free_area_init(unsigned long *max_zone_pfn)
> > for_each_node(nid) {
> > pg_data_t *pgdat;
> >
> > - if (!node_online(nid)) {
> > - /* Allocator not initialized yet */
> > - pgdat = memblock_alloc(sizeof(*pgdat), SMP_CACHE_BYTES);
> > - if (!pgdat)
> > - panic("Cannot allocate %zuB for node %d.\n",
> > - sizeof(*pgdat), nid);
> > - }
> > + if (!node_online(nid))
> > + alloc_offline_node_data(nid);
> >
> > pgdat = NODE_DATA(nid);
> > free_area_init_node(nid);
> > diff --git a/mm/numa.c b/mm/numa.c
> > index da27eb151dc5..07e486a977c7 100644
> > --- a/mm/numa.c
> > +++ b/mm/numa.c
> > @@ -34,6 +34,18 @@ void __init alloc_node_data(int nid)
> > memset(NODE_DATA(nid), 0, sizeof(pg_data_t));
> > }
> >
> > +void __init alloc_offline_node_data(int nit)
>
> nid
>
> > +{
> > + pg_data_t *pgdat;
> > +
> > + pgdat = memblock_alloc(sizeof(*pgdat), SMP_CACHE_BYTES);
> > + if (!pgdat)
> > + panic("Cannot allocate %zuB for node %d.\n",
> > + sizeof(*pgdat), nid);
> > +
> > + node_data[nid] = pgdat;
> > +}
> > +
> > /* Stub functions: */
> >
> > #ifndef memory_add_physaddr_to_nid
> >
> >
> >
>
>
--
Sincerely yours,
Mike.
WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@kernel.org>
To: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org,
Alexander Gordeev <agordeev@linux.ibm.com>,
Andreas Larsson <andreas@gaisler.com>,
Arnd Bergmann <arnd@arndb.de>, Borislav Petkov <bp@alien8.de>,
Catalin Marinas <catalin.marinas@arm.com>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Dan Williams <dan.j.williams@intel.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
David Hildenbrand <david@redhat.com>,
"David S. Miller" <davem@davemloft.net>,
Davidlohr Bueso <dave@stgolabs.net>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Heiko Carstens <hca@linux.ibm.com>,
Huacai Chen <chenhuacai@kernel.org>,
Ingo Molnar <mingo@redhat.com>,
Jiaxun Yang <jiaxun.yang@flygoat.com>,
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
Jonathan Corbet <corbet@lwn.net>,
Michael Ellerman <mpe@ellerman.id.au>,
Palmer Dabbelt <palmer@dabbelt.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Rob Herring <robh@kernel.org>,
Samuel Holland <samuel.holland@sifive.com>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Thomas Gleixner <tglx@linutronix.de>,
Vasily Gorbik <gor@linux.ibm.com>, Will Deacon <will@kernel.org>,
Zi Yan <ziy@nvidia.com>,
devicetree@vger.kernel.org, linux-acpi@vger.kernel.org,
linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-cxl@vger.kernel.org, linux-doc@vger.kernel.org,
linux-mips@vger.kernel.org, linux-mm@kvack.org,
linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
linux-sh@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
loongarch@lists.linux.dev, nvdimm@lists.linux.dev,
sparclinux@vger.kernel.org, x86@kernel.org
Subject: Re: [PATCH v3 07/26] mm: drop CONFIG_HAVE_ARCH_NODEDATA_EXTENSION
Date: Mon, 5 Aug 2024 17:39:41 +0300 [thread overview]
Message-ID: <ZrDkLeLxQAVvZcBn@kernel.org> (raw)
In-Reply-To: <20240804161119.00003a02@Huawei.com>
On Sun, Aug 04, 2024 at 04:11:19PM +0100, Jonathan Cameron wrote:
> On Sun, 4 Aug 2024 10:24:15 +0300
> Mike Rapoport <rppt@kernel.org> wrote:
>
> > On Sat, Aug 03, 2024 at 11:58:13AM -0700, Andrew Morton wrote:
> > > On Fri, 2 Aug 2024 10:49:22 +0100 Jonathan Cameron <Jonathan.Cameron@Huawei.com> wrote:
> > >
> > > > > --- a/mm/mm_init.c
> > > > > +++ b/mm/mm_init.c
> > > > > @@ -1838,11 +1838,10 @@ void __init free_area_init(unsigned long *max_zone_pfn)
> > > > >
> > > > > if (!node_online(nid)) {
> > > > > /* Allocator not initialized yet */
> > > > > - pgdat = arch_alloc_nodedata(nid);
> > > > > + pgdat = memblock_alloc(sizeof(*pgdat), SMP_CACHE_BYTES);
> > > > > if (!pgdat)
> > > > > panic("Cannot allocate %zuB for node %d.\n",
> > > > > sizeof(*pgdat), nid);
> > > > > - arch_refresh_nodedata(nid, pgdat);
> > > >
> > > > This allocates pgdat but never sets node_data[nid] to it
> > > > and promptly leaks it on the line below.
> > > >
> > > > Just to sanity check this I spun up a qemu machine with no memory
> > > > initially present on some nodes and it went boom as you'd expect.
> > > >
> > > > I tested with addition of
> > > > NODE_DATA(nid) = pgdat;
> > > > and it all seems to work as expected.
> > >
> > > Thanks, I added that. It blew up on x86_64 allnoconfig because
> > > node_data[] (and hence NODE_DATA()) isn't an lvalue when CONFIG_NUMA=n.
> > >
> > > I'll put some #ifdef CONFIG_NUMAs in there for now but
> > >
> > > a) NODE_DATA() is upper-case. Implies "constant". Shouldn't be assigned to.
> > >
> > > b) NODE_DATA() should be non-lvalue when CONFIG_NUMA=y also. But no,
> > > we insist on implementing things in cpp instead of in C.
> >
> > This looks like a candidate for a separate tree-wide cleanup.
> >
> > > c) In fact assigning to anything which ends in "()" is nuts. Please
> > > clean up my tempfix.
> > >
> > > c) Mike, generally I'm wondering if there's a bunch of code here
> > > which isn't needed on CONFIG_NUMA=n. Please check all of this for
> > > unneeded bloatiness.
> >
> > I believe the patch addresses your concerns, just with this the commit log
> > needs update. Instead of
> >
> > Replace the call to arch_alloc_nodedata() in free_area_init() with
> > memblock_alloc(), remove arch_refresh_nodedata() and cleanup
> > include/linux/memory_hotplug.h from the associated ifdefery.
> >
> > it should be
> >
> > Replace the call to arch_alloc_nodedata() in free_area_init() with a
> > new helper alloc_offline_node_data(), remove arch_refresh_nodedata()
> > and cleanup include/linux/memory_hotplug.h from the associated
> > ifdefery.
> >
> > I can send an updated patch if you prefer.
> This solution looks good to me - except for a Freudian typo that means it won't
> compile :)
Right :)
I'll post v4 after kbuild confirms it compiles :)
> Jonathan
>
> >
> > diff --git a/include/linux/numa.h b/include/linux/numa.h
> > index 3b12d8ca0afd..5a749fd67f39 100644
> > --- a/include/linux/numa.h
> > +++ b/include/linux/numa.h
> > @@ -34,6 +34,7 @@ extern struct pglist_data *node_data[];
> > #define NODE_DATA(nid) (node_data[nid])
> >
> > void __init alloc_node_data(int nid);
> > +void __init alloc_offline_node_data(int nit);
> >
> > /* Generic implementation available */
> > int numa_nearest_node(int node, unsigned int state);
> > @@ -62,6 +63,8 @@ static inline int phys_to_target_node(u64 start)
> > {
> > return 0;
> > }
> > +
> > +static inline void alloc_offline_node_data(int nit) {}
> nid
> > #endif
> >
> > #define numa_map_to_online_node(node) numa_nearest_node(node, N_ONLINE)
> > diff --git a/mm/mm_init.c b/mm/mm_init.c
> > index bcc2f2dd8021..2785be04e7bb 100644
> > --- a/mm/mm_init.c
> > +++ b/mm/mm_init.c
> > @@ -1836,13 +1836,8 @@ void __init free_area_init(unsigned long *max_zone_pfn)
> > for_each_node(nid) {
> > pg_data_t *pgdat;
> >
> > - if (!node_online(nid)) {
> > - /* Allocator not initialized yet */
> > - pgdat = memblock_alloc(sizeof(*pgdat), SMP_CACHE_BYTES);
> > - if (!pgdat)
> > - panic("Cannot allocate %zuB for node %d.\n",
> > - sizeof(*pgdat), nid);
> > - }
> > + if (!node_online(nid))
> > + alloc_offline_node_data(nid);
> >
> > pgdat = NODE_DATA(nid);
> > free_area_init_node(nid);
> > diff --git a/mm/numa.c b/mm/numa.c
> > index da27eb151dc5..07e486a977c7 100644
> > --- a/mm/numa.c
> > +++ b/mm/numa.c
> > @@ -34,6 +34,18 @@ void __init alloc_node_data(int nid)
> > memset(NODE_DATA(nid), 0, sizeof(pg_data_t));
> > }
> >
> > +void __init alloc_offline_node_data(int nit)
>
> nid
>
> > +{
> > + pg_data_t *pgdat;
> > +
> > + pgdat = memblock_alloc(sizeof(*pgdat), SMP_CACHE_BYTES);
> > + if (!pgdat)
> > + panic("Cannot allocate %zuB for node %d.\n",
> > + sizeof(*pgdat), nid);
> > +
> > + node_data[nid] = pgdat;
> > +}
> > +
> > /* Stub functions: */
> >
> > #ifndef memory_add_physaddr_to_nid
> >
> >
> >
>
>
--
Sincerely yours,
Mike.
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@kernel.org>
To: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: nvdimm@lists.linux.dev, x86@kernel.org,
Andreas Larsson <andreas@gaisler.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
David Hildenbrand <david@redhat.com>,
Jiaxun Yang <jiaxun.yang@flygoat.com>,
linux-mips@vger.kernel.org, linux-mm@kvack.org,
sparclinux@vger.kernel.org,
Alexander Gordeev <agordeev@linux.ibm.com>,
Will Deacon <will@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
linux-arch@vger.kernel.org, Rob Herring <robh@kernel.org>,
Davidlohr Bueso <dave@stgolabs.net>,
Vasily Gorbik <gor@linux.ibm.com>,
Jonathan Corbet <corbet@lwn.net>,
linux-sh@vger.kernel.org, Huacai Chen <chenhuacai@kernel.org>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
linux-acpi@vger.kernel.org, Ingo Molnar <mingo@redhat.com>,
Zi Yan <ziy@nvidia.com>,
devicetree@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
linux-s390@vger.kernel.org, Heiko Carstens <hca@linux.ibm.com>,
Borislav Petkov <bp@alien8.de>,
linux-cxl@vger.kernel.org, loongarch@lists.linux.dev,
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
Dan Williams <dan.j.williams@intel.com>,
linux-arm-kernel@lists.infradead.org,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
Samuel Holland <samuel.holland@sifive.com>,
linux-riscv@lists.infradead.org,
Palmer Dabbelt <palmer@dabbelt.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
linuxppc-dev@lists.ozlabs.org,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH v3 07/26] mm: drop CONFIG_HAVE_ARCH_NODEDATA_EXTENSION
Date: Mon, 5 Aug 2024 17:39:41 +0300 [thread overview]
Message-ID: <ZrDkLeLxQAVvZcBn@kernel.org> (raw)
In-Reply-To: <20240804161119.00003a02@Huawei.com>
On Sun, Aug 04, 2024 at 04:11:19PM +0100, Jonathan Cameron wrote:
> On Sun, 4 Aug 2024 10:24:15 +0300
> Mike Rapoport <rppt@kernel.org> wrote:
>
> > On Sat, Aug 03, 2024 at 11:58:13AM -0700, Andrew Morton wrote:
> > > On Fri, 2 Aug 2024 10:49:22 +0100 Jonathan Cameron <Jonathan.Cameron@Huawei.com> wrote:
> > >
> > > > > --- a/mm/mm_init.c
> > > > > +++ b/mm/mm_init.c
> > > > > @@ -1838,11 +1838,10 @@ void __init free_area_init(unsigned long *max_zone_pfn)
> > > > >
> > > > > if (!node_online(nid)) {
> > > > > /* Allocator not initialized yet */
> > > > > - pgdat = arch_alloc_nodedata(nid);
> > > > > + pgdat = memblock_alloc(sizeof(*pgdat), SMP_CACHE_BYTES);
> > > > > if (!pgdat)
> > > > > panic("Cannot allocate %zuB for node %d.\n",
> > > > > sizeof(*pgdat), nid);
> > > > > - arch_refresh_nodedata(nid, pgdat);
> > > >
> > > > This allocates pgdat but never sets node_data[nid] to it
> > > > and promptly leaks it on the line below.
> > > >
> > > > Just to sanity check this I spun up a qemu machine with no memory
> > > > initially present on some nodes and it went boom as you'd expect.
> > > >
> > > > I tested with addition of
> > > > NODE_DATA(nid) = pgdat;
> > > > and it all seems to work as expected.
> > >
> > > Thanks, I added that. It blew up on x86_64 allnoconfig because
> > > node_data[] (and hence NODE_DATA()) isn't an lvalue when CONFIG_NUMA=n.
> > >
> > > I'll put some #ifdef CONFIG_NUMAs in there for now but
> > >
> > > a) NODE_DATA() is upper-case. Implies "constant". Shouldn't be assigned to.
> > >
> > > b) NODE_DATA() should be non-lvalue when CONFIG_NUMA=y also. But no,
> > > we insist on implementing things in cpp instead of in C.
> >
> > This looks like a candidate for a separate tree-wide cleanup.
> >
> > > c) In fact assigning to anything which ends in "()" is nuts. Please
> > > clean up my tempfix.
> > >
> > > c) Mike, generally I'm wondering if there's a bunch of code here
> > > which isn't needed on CONFIG_NUMA=n. Please check all of this for
> > > unneeded bloatiness.
> >
> > I believe the patch addresses your concerns, just with this the commit log
> > needs update. Instead of
> >
> > Replace the call to arch_alloc_nodedata() in free_area_init() with
> > memblock_alloc(), remove arch_refresh_nodedata() and cleanup
> > include/linux/memory_hotplug.h from the associated ifdefery.
> >
> > it should be
> >
> > Replace the call to arch_alloc_nodedata() in free_area_init() with a
> > new helper alloc_offline_node_data(), remove arch_refresh_nodedata()
> > and cleanup include/linux/memory_hotplug.h from the associated
> > ifdefery.
> >
> > I can send an updated patch if you prefer.
> This solution looks good to me - except for a Freudian typo that means it won't
> compile :)
Right :)
I'll post v4 after kbuild confirms it compiles :)
> Jonathan
>
> >
> > diff --git a/include/linux/numa.h b/include/linux/numa.h
> > index 3b12d8ca0afd..5a749fd67f39 100644
> > --- a/include/linux/numa.h
> > +++ b/include/linux/numa.h
> > @@ -34,6 +34,7 @@ extern struct pglist_data *node_data[];
> > #define NODE_DATA(nid) (node_data[nid])
> >
> > void __init alloc_node_data(int nid);
> > +void __init alloc_offline_node_data(int nit);
> >
> > /* Generic implementation available */
> > int numa_nearest_node(int node, unsigned int state);
> > @@ -62,6 +63,8 @@ static inline int phys_to_target_node(u64 start)
> > {
> > return 0;
> > }
> > +
> > +static inline void alloc_offline_node_data(int nit) {}
> nid
> > #endif
> >
> > #define numa_map_to_online_node(node) numa_nearest_node(node, N_ONLINE)
> > diff --git a/mm/mm_init.c b/mm/mm_init.c
> > index bcc2f2dd8021..2785be04e7bb 100644
> > --- a/mm/mm_init.c
> > +++ b/mm/mm_init.c
> > @@ -1836,13 +1836,8 @@ void __init free_area_init(unsigned long *max_zone_pfn)
> > for_each_node(nid) {
> > pg_data_t *pgdat;
> >
> > - if (!node_online(nid)) {
> > - /* Allocator not initialized yet */
> > - pgdat = memblock_alloc(sizeof(*pgdat), SMP_CACHE_BYTES);
> > - if (!pgdat)
> > - panic("Cannot allocate %zuB for node %d.\n",
> > - sizeof(*pgdat), nid);
> > - }
> > + if (!node_online(nid))
> > + alloc_offline_node_data(nid);
> >
> > pgdat = NODE_DATA(nid);
> > free_area_init_node(nid);
> > diff --git a/mm/numa.c b/mm/numa.c
> > index da27eb151dc5..07e486a977c7 100644
> > --- a/mm/numa.c
> > +++ b/mm/numa.c
> > @@ -34,6 +34,18 @@ void __init alloc_node_data(int nid)
> > memset(NODE_DATA(nid), 0, sizeof(pg_data_t));
> > }
> >
> > +void __init alloc_offline_node_data(int nit)
>
> nid
>
> > +{
> > + pg_data_t *pgdat;
> > +
> > + pgdat = memblock_alloc(sizeof(*pgdat), SMP_CACHE_BYTES);
> > + if (!pgdat)
> > + panic("Cannot allocate %zuB for node %d.\n",
> > + sizeof(*pgdat), nid);
> > +
> > + node_data[nid] = pgdat;
> > +}
> > +
> > /* Stub functions: */
> >
> > #ifndef memory_add_physaddr_to_nid
> >
> >
> >
>
>
--
Sincerely yours,
Mike.
next prev parent reply other threads:[~2024-08-05 14:42 UTC|newest]
Thread overview: 243+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-01 6:08 [PATCH v3 00/26] mm: introduce numa_memblks Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` [PATCH v3 01/26] mm: move kernel/numa.c to mm/ Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` [PATCH v3 02/26] MIPS: sgi-ip27: make NODE_DATA() the same as on all other architectures Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 17:44 ` Jonathan Cameron
2024-08-01 17:44 ` Jonathan Cameron
2024-08-01 17:44 ` Jonathan Cameron
2024-08-06 13:05 ` David Hildenbrand
2024-08-06 13:05 ` David Hildenbrand
2024-08-06 13:05 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 03/26] MIPS: sgi-ip27: ensure node_possible_map only contains valid nodes Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 17:44 ` Jonathan Cameron
2024-08-01 17:44 ` Jonathan Cameron
2024-08-01 17:44 ` Jonathan Cameron
2024-08-06 13:05 ` David Hildenbrand
2024-08-06 13:05 ` David Hildenbrand
2024-08-06 13:05 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 04/26] MIPS: sgi-ip27: drop HAVE_ARCH_NODEDATA_EXTENSION Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 17:45 ` Jonathan Cameron
2024-08-01 17:45 ` Jonathan Cameron
2024-08-01 17:45 ` Jonathan Cameron
2024-08-06 13:06 ` David Hildenbrand
2024-08-06 13:06 ` David Hildenbrand
2024-08-06 13:06 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 05/26] MIPS: loongson64: rename __node_data to node_data Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` [PATCH v3 06/26] MIPS: loongson64: drop HAVE_ARCH_NODEDATA_EXTENSION Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 17:47 ` Jonathan Cameron
2024-08-01 17:47 ` Jonathan Cameron
2024-08-01 17:47 ` Jonathan Cameron
2024-08-06 13:07 ` David Hildenbrand
2024-08-06 13:07 ` David Hildenbrand
2024-08-06 13:07 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 07/26] mm: drop CONFIG_HAVE_ARCH_NODEDATA_EXTENSION Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 9:49 ` Jonathan Cameron
2024-08-02 9:49 ` Jonathan Cameron
2024-08-02 9:49 ` Jonathan Cameron
2024-08-03 18:58 ` Andrew Morton
2024-08-03 18:58 ` Andrew Morton
2024-08-03 18:58 ` Andrew Morton
2024-08-04 7:24 ` Mike Rapoport
2024-08-04 7:24 ` Mike Rapoport
2024-08-04 7:24 ` Mike Rapoport
2024-08-04 15:11 ` Jonathan Cameron
2024-08-04 15:11 ` Jonathan Cameron
2024-08-04 15:11 ` Jonathan Cameron
2024-08-05 14:39 ` Mike Rapoport [this message]
2024-08-05 14:39 ` Mike Rapoport
2024-08-05 14:39 ` Mike Rapoport
2024-08-01 6:08 ` [PATCH v3 08/26] arch, mm: move definition of node_data to generic code Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` [PATCH v3 09/26] arch, mm: pull out allocation of NODE_DATA " Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 9:55 ` Jonathan Cameron
2024-08-02 9:55 ` Jonathan Cameron
2024-08-02 9:55 ` Jonathan Cameron
2024-08-05 17:15 ` Mike Rapoport
2024-08-05 17:15 ` Mike Rapoport
2024-08-05 17:15 ` Mike Rapoport
2024-08-01 6:08 ` [PATCH v3 10/26] x86/numa: simplify numa_distance allocation Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 9:56 ` Jonathan Cameron
2024-08-02 9:56 ` Jonathan Cameron
2024-08-02 9:56 ` Jonathan Cameron
2024-08-06 13:08 ` David Hildenbrand
2024-08-06 13:08 ` David Hildenbrand
2024-08-06 13:08 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 11/26] x86/numa: use get_pfn_range_for_nid to verify that node spans memory Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 10:36 ` Jonathan Cameron
2024-08-02 10:36 ` Jonathan Cameron
2024-08-02 10:36 ` Jonathan Cameron
2024-08-05 20:03 ` Dan Williams
2024-08-05 20:03 ` Dan Williams
2024-08-05 20:03 ` Dan Williams
2024-08-05 20:35 ` Mike Rapoport
2024-08-05 20:35 ` Mike Rapoport
2024-08-05 20:35 ` Mike Rapoport
2024-08-06 13:10 ` David Hildenbrand
2024-08-06 13:10 ` David Hildenbrand
2024-08-06 13:10 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 12/26] x86/numa: move FAKE_NODE_* defines to numa_emu Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-06 13:10 ` David Hildenbrand
2024-08-06 13:10 ` David Hildenbrand
2024-08-06 13:10 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 13/26] x86/numa_emu: simplify allocation of phys_dist Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-06 13:11 ` David Hildenbrand
2024-08-06 13:11 ` David Hildenbrand
2024-08-06 13:11 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 14/26] x86/numa_emu: split __apicid_to_node update to a helper function Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-06 13:13 ` David Hildenbrand
2024-08-06 13:13 ` David Hildenbrand
2024-08-06 13:13 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 15/26] x86/numa_emu: use a helper function to get MAX_DMA32_PFN Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-06 13:14 ` David Hildenbrand
2024-08-06 13:14 ` David Hildenbrand
2024-08-06 13:14 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 16/26] x86/numa: numa_{add,remove}_cpu: make cpu parameter unsigned Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-06 13:14 ` David Hildenbrand
2024-08-06 13:14 ` David Hildenbrand
2024-08-06 13:14 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 17/26] mm: introduce numa_memblks Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 10:49 ` Jonathan Cameron
2024-08-02 10:49 ` Jonathan Cameron
2024-08-02 10:49 ` Jonathan Cameron
2024-08-06 13:16 ` David Hildenbrand
2024-08-06 13:16 ` David Hildenbrand
2024-08-06 13:16 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 18/26] mm: move numa_distance and related code from x86 to numa_memblks Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 10:52 ` Jonathan Cameron
2024-08-02 10:52 ` Jonathan Cameron
2024-08-02 10:52 ` Jonathan Cameron
2024-08-06 13:16 ` David Hildenbrand
2024-08-06 13:16 ` David Hildenbrand
2024-08-06 13:16 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 19/26] mm: introduce numa_emulation Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 11:19 ` Jonathan Cameron
2024-08-02 11:19 ` Jonathan Cameron
2024-08-02 11:19 ` Jonathan Cameron
2024-08-05 20:09 ` Dan Williams
2024-08-05 20:09 ` Dan Williams
2024-08-05 20:09 ` Dan Williams
2024-08-06 13:18 ` David Hildenbrand
2024-08-06 13:18 ` David Hildenbrand
2024-08-06 13:18 ` David Hildenbrand
2024-08-06 13:20 ` David Hildenbrand
2024-08-06 13:20 ` David Hildenbrand
2024-08-06 13:20 ` David Hildenbrand
2024-08-06 13:24 ` David Hildenbrand
2024-08-06 13:24 ` David Hildenbrand
2024-08-06 13:24 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 20/26] mm: numa_memblks: introduce numa_memblks_init Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 11:08 ` Jonathan Cameron
2024-08-02 11:08 ` Jonathan Cameron
2024-08-02 11:08 ` Jonathan Cameron
2024-08-06 13:21 ` David Hildenbrand
2024-08-06 13:21 ` David Hildenbrand
2024-08-06 13:21 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 21/26] mm: numa_memblks: make several functions and variables static Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 11:10 ` Jonathan Cameron
2024-08-02 11:10 ` Jonathan Cameron
2024-08-02 11:10 ` Jonathan Cameron
2024-08-06 13:21 ` David Hildenbrand
2024-08-06 13:21 ` David Hildenbrand
2024-08-06 13:21 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 22/26] mm: numa_memblks: use memblock_{start,end}_of_DRAM() when sanitizing meminfo Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 11:12 ` Jonathan Cameron
2024-08-02 11:12 ` Jonathan Cameron
2024-08-02 11:12 ` Jonathan Cameron
2024-08-05 20:21 ` Dan Williams
2024-08-05 20:21 ` Dan Williams
2024-08-05 20:21 ` Dan Williams
2024-08-05 20:33 ` Mike Rapoport
2024-08-05 20:33 ` Mike Rapoport
2024-08-05 20:33 ` Mike Rapoport
2024-08-06 13:22 ` David Hildenbrand
2024-08-06 13:22 ` David Hildenbrand
2024-08-06 13:22 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 23/26] of, numa: return -EINVAL when no numa-node-id is found Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 14:01 ` Jonathan Cameron
2024-08-02 14:01 ` Jonathan Cameron
2024-08-02 14:01 ` Jonathan Cameron
2024-08-06 13:23 ` David Hildenbrand
2024-08-06 13:23 ` David Hildenbrand
2024-08-06 13:23 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 24/26] arch_numa: switch over to numa_memblks Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 15:07 ` Jonathan Cameron
2024-08-02 15:07 ` Jonathan Cameron
2024-08-02 15:07 ` Jonathan Cameron
2024-08-06 13:28 ` David Hildenbrand
2024-08-06 13:28 ` David Hildenbrand
2024-08-06 13:28 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 25/26] mm: make range-to-target_node lookup facility a part of numa_memblks Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-05 20:24 ` Dan Williams
2024-08-05 20:24 ` Dan Williams
2024-08-05 20:24 ` Dan Williams
2024-08-06 13:27 ` David Hildenbrand
2024-08-06 13:27 ` David Hildenbrand
2024-08-06 13:27 ` David Hildenbrand
2024-08-01 6:08 ` [PATCH v3 26/26] docs: move numa=fake description to kernel-parameters.txt Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-01 6:08 ` Mike Rapoport
2024-08-02 15:09 ` Jonathan Cameron
2024-08-02 15:09 ` Jonathan Cameron
2024-08-02 15:09 ` Jonathan Cameron
2024-08-06 13:25 ` David Hildenbrand
2024-08-06 13:25 ` David Hildenbrand
2024-08-06 13:25 ` David Hildenbrand
2024-08-02 16:44 ` [PATCH v3 00/26] mm: introduce numa_memblks Jonathan Cameron
2024-08-02 16:44 ` Jonathan Cameron
2024-08-02 16:44 ` Jonathan Cameron
2024-08-05 19:41 ` Dan Williams
2024-08-05 19:41 ` Dan Williams
2024-08-05 19:41 ` Dan Williams
2024-08-05 20:26 ` Dan Williams
2024-08-05 20:26 ` Dan Williams
2024-08-05 20:26 ` Dan Williams
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=ZrDkLeLxQAVvZcBn@kernel.org \
--to=rppt@kernel.org \
--cc=Jonathan.Cameron@huawei.com \
--cc=agordeev@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=andreas@gaisler.com \
--cc=arnd@arndb.de \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=christophe.leroy@csgroup.eu \
--cc=corbet@lwn.net \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=dave@stgolabs.net \
--cc=davem@davemloft.net \
--cc=david@redhat.com \
--cc=devicetree@vger.kernel.org \
--cc=glaubitz@physik.fu-berlin.de \
--cc=gor@linux.ibm.com \
--cc=gregkh@linuxfoundation.org \
--cc=hca@linux.ibm.com \
--cc=jiaxun.yang@flygoat.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=loongarch@lists.linux.dev \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--cc=nvdimm@lists.linux.dev \
--cc=palmer@dabbelt.com \
--cc=rafael@kernel.org \
--cc=robh@kernel.org \
--cc=samuel.holland@sifive.com \
--cc=sparclinux@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=tsbogend@alpha.franken.de \
--cc=will@kernel.org \
--cc=x86@kernel.org \
--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.