From: David Rientjes <rientjes@google.com>
To: James Bottomley <James.Bottomley@hansenpartnership.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Pekka Enberg <penberg@kernel.org>,
Christoph Lameter <cl@linux.com>, Michal Hocko <mhocko@suse.cz>,
Andrew Morton <akpm@linux-foundation.org>,
Hugh Dickins <hughd@google.com>,
linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org>,
linux-parisc@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
x86 maintainers <x86@kernel.org>
Subject: Re: [PATCH v3] mm: make expand_downwards symmetrical to expand_upwards
Date: Wed, 20 Apr 2011 16:12:36 -0700 (PDT) [thread overview]
Message-ID: <alpine.DEB.2.00.1104201530430.13948@chino.kir.corp.google.com> (raw)
In-Reply-To: <1303337718.2587.51.camel@mulgrave.site>
On Wed, 20 Apr 2011, James Bottomley wrote:
> > This is probably because the parisc's DISCONTIGMEM memory ranges don't
> > have bits set in N_NORMAL_MEMORY.
> >
> > diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
> > --- a/arch/parisc/mm/init.c
> > +++ b/arch/parisc/mm/init.c
> > @@ -266,8 +266,10 @@ static void __init setup_bootmem(void)
> > }
> > memset(pfnnid_map, 0xff, sizeof(pfnnid_map));
> >
> > - for (i = 0; i < npmem_ranges; i++)
> > + for (i = 0; i < npmem_ranges; i++) {
> > + node_set_state(i, N_NORMAL_MEMORY);
> > node_set_online(i);
> > + }
> > #endif
>
> Yes, this seems to be the missing piece that gets it to boot. We really
> need this in generic code, unless someone wants to run through all the
> other arch's doing it ...
>
Looking at all other architectures that allow ARCH_DISCONTIGMEM_ENABLE, we
already know x86 is fine, avr32 disables ARCH_DISCONTIGMEM_ENABLE entirely
because its code only brings online node 0, and tile already sets the bit
in N_NORMAL_MEMORY correctly when bringing a node online, probably because
it was introduced after the various node state masks were added in
7ea1530ab3fd back in October 2007.
So we're really only talking about alpha, ia64, m32r, m68k, and mips and
it only seems to matter when using CONFIG_SLUB, which isn't surprising
when greping for it:
$ grep -r N_NORMAL_MEMORY mm/*
mm/memcontrol.c: if (!node_state(node, N_NORMAL_MEMORY))
mm/memcontrol.c: if (!node_state(node, N_NORMAL_MEMORY))
mm/page_alloc.c: [N_NORMAL_MEMORY] = { { [0] = 1UL } },
mm/page_alloc.c: node_set_state(zone_to_nid(zone), N_NORMAL_MEMORY);
mm/slub.c: for_each_node_state(node, N_NORMAL_MEMORY) {
mm/slub.c: for_each_node_state(node, N_NORMAL_MEMORY) {
mm/slub.c: for_each_node_state(node, N_NORMAL_MEMORY) {
mm/slub.c: for_each_node_state(node, N_NORMAL_MEMORY) {
mm/slub.c: for_each_node_state(node, N_NORMAL_MEMORY) {
mm/slub.c: for_each_node_state(node, N_NORMAL_MEMORY) {
mm/slub.c: for_each_node_state(node, N_NORMAL_MEMORY) {
mm/slub.c: for_each_node_state(node, N_NORMAL_MEMORY) {
mm/slub.c: for_each_node_state(node, N_NORMAL_MEMORY) {
mm/slub.c: for_each_node_state(node, N_NORMAL_MEMORY)
Those memory controller occurrences only result in it passing a node id of
-1 to kmalloc_node() which means no specific node target, and that's fine
for DISCONTIGMEM since we don't care about any proximity between memory
ranges.
This should fix the remaining architectures so they can use CONFIG_SLUB,
but I hope it can be tested by the individual arch maintainers like you
did for parisc.
diff --git a/arch/alpha/mm/numa.c b/arch/alpha/mm/numa.c
--- a/arch/alpha/mm/numa.c
+++ b/arch/alpha/mm/numa.c
@@ -245,6 +245,7 @@ setup_memory_node(int nid, void *kernel_end)
bootmap_size, BOOTMEM_DEFAULT);
printk(" reserving pages %ld:%ld\n", bootmap_start, bootmap_start+PFN_UP(bootmap_size));
+ node_set_state(nid, N_NORMAL_MEMORY);
node_set_online(nid);
}
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
--- a/arch/ia64/mm/discontig.c
+++ b/arch/ia64/mm/discontig.c
@@ -573,6 +573,8 @@ void __init find_memory(void)
map>>PAGE_SHIFT,
bdp->node_min_pfn,
bdp->node_low_pfn);
+ if (node_present_pages(node))
+ node_set_state(node, N_NORMAL_MEMORY);
}
efi_memmap_walk(filter_rsvd_memory, free_node_bootmem);
diff --git a/arch/m32r/kernel/setup.c b/arch/m32r/kernel/setup.c
--- a/arch/m32r/kernel/setup.c
+++ b/arch/m32r/kernel/setup.c
@@ -247,7 +247,9 @@ void __init setup_arch(char **cmdline_p)
#ifdef CONFIG_DISCONTIGMEM
nodes_clear(node_online_map);
+ node_set_state(0, N_NORMAL_MEMORY); /* always has memory */
node_set_online(0);
+ node_set_state(1, N_NORMAL_MEMORY); /* always has memory */
node_set_online(1);
#endif /* CONFIG_DISCONTIGMEM */
diff --git a/arch/m68k/mm/init_mm.c b/arch/m68k/mm/init_mm.c
--- a/arch/m68k/mm/init_mm.c
+++ b/arch/m68k/mm/init_mm.c
@@ -59,6 +59,8 @@ void __init m68k_setup_node(int node)
}
#endif
pg_data_map[node].bdata = bootmem_node_data + node;
+ if (node_present_pages(node))
+ node_set_state(node, N_NORMAL_MEMORY);
node_set_online(node);
}
diff --git a/arch/mips/sgi-ip27/ip27-memory.c b/arch/mips/sgi-ip27/ip27-memory.c
--- a/arch/mips/sgi-ip27/ip27-memory.c
+++ b/arch/mips/sgi-ip27/ip27-memory.c
@@ -471,6 +471,8 @@ void __init paging_init(void)
if (end_pfn > max_low_pfn)
max_low_pfn = end_pfn;
+ if (end_pfn > start_pfn)
+ node_set_state(node, N_NORMAL_MEMORY);
}
zones_size[ZONE_NORMAL] = max_low_pfn;
free_area_init_nodes(zones_size);
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-04-20 23:12 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-15 13:51 [PATCH] " Michal Hocko
2011-04-18 3:00 ` Hugh Dickins
2011-04-18 10:01 ` [PATCH v2] " Michal Hocko
2011-04-18 20:56 ` Andrew Morton
[not found] ` <20110419091022.GA21689@tiehlicka.suse.cz>
2011-04-19 11:09 ` [PATCH followup] mm: get rid of CONFIG_STACK_GROWSUP || CONFIG_IA64 Michal Hocko
2011-04-20 0:33 ` KOSAKI Motohiro
2011-04-20 6:59 ` Michal Hocko
2011-04-20 7:08 ` KOSAKI Motohiro
2011-04-26 7:59 ` Michal Hocko
2011-04-19 11:10 ` [PATCH v3] mm: make expand_downwards symmetrical to expand_upwards Michal Hocko
2011-04-19 15:46 ` James Bottomley
2011-04-19 16:06 ` [PATCH v3] mm: make expand_downwards symmetrical to John David Anglin
2011-04-19 16:59 ` James Bottomley
2011-04-19 16:07 ` [PATCH v3] mm: make expand_downwards symmetrical to expand_upwards James Bottomley
2011-04-19 17:05 ` Pekka Enberg
2011-04-19 17:11 ` James Bottomley
2011-04-19 17:15 ` Christoph Lameter
2011-04-19 17:48 ` James Bottomley
2011-04-19 18:10 ` Christoph Lameter
2011-04-19 18:20 ` James Bottomley
2011-04-19 18:35 ` Christoph Lameter
2011-04-19 19:49 ` James Bottomley
2011-04-19 20:56 ` Christoph Lameter
2011-04-19 21:21 ` James Bottomley
2011-04-19 21:39 ` Christoph Lameter
2011-04-19 21:48 ` James Bottomley
2011-04-19 21:58 ` Christoph Lameter
2011-04-20 1:23 ` KOSAKI Motohiro
2011-04-20 2:48 ` James Bottomley
2011-04-20 2:57 ` KOSAKI Motohiro
2011-04-20 13:50 ` Christoph Lameter
2011-04-21 13:32 ` Tejun Heo
2011-04-20 5:53 ` Pekka Enberg
2011-04-20 7:15 ` KOSAKI Motohiro
2011-04-20 7:34 ` Pekka Enberg
2011-04-20 8:40 ` KOSAKI Motohiro
2011-04-20 16:32 ` James Bottomley
2011-04-20 16:50 ` Christoph Lameter
2011-04-20 18:09 ` James Bottomley
2011-04-20 21:18 ` David Rientjes
2011-04-20 22:15 ` James Bottomley
2011-04-20 23:12 ` David Rientjes [this message]
2011-04-21 13:16 ` KOSAKI Motohiro
2011-04-21 16:37 ` James Bottomley
2011-04-21 18:33 ` Christoph Lameter
2011-04-21 18:45 ` Dave Hansen
2011-04-22 18:19 ` James Bottomley
2011-04-22 20:24 ` Dave Hansen
2011-04-22 20:35 ` James Bottomley
2011-04-22 21:33 ` James Bottomley
2011-04-23 18:34 ` [PATCH] convert parisc to sparsemem (was Re: [PATCH v3] mm: make expand_downwards symmetrical to expand_upwards) James Bottomley
2011-04-24 16:27 ` John David Anglin
2011-04-26 0:32 ` KOSAKI Motohiro
2011-04-27 16:36 ` Dave Hansen
2011-04-21 20:05 ` [PATCH v3] mm: make expand_downwards symmetrical to expand_upwards James Bottomley
2011-04-21 21:07 ` Christoph Lameter
2011-04-21 21:22 ` James Bottomley
2011-04-21 19:33 ` David Rientjes
2011-04-22 0:34 ` KOSAKI Motohiro
2011-04-21 13:03 ` KOSAKI Motohiro
2011-04-21 19:38 ` David Rientjes
2011-04-21 20:02 ` Christoph Lameter
2011-04-21 21:19 ` David Rientjes
2011-04-21 21:24 ` James Bottomley
2011-04-21 21:34 ` David Rientjes
2011-04-21 21:49 ` James Bottomley
2011-04-21 22:12 ` David Rientjes
2011-04-22 8:02 ` Pekka Enberg
2011-04-22 13:49 ` James Bottomley
2011-04-22 17:00 ` Pekka Enberg
2011-04-22 17:03 ` James Bottomley
2011-04-21 21:41 ` [patch] mm: always set nodes with regular memory in N_NORMAL_MEMORY David Rientjes
2011-04-22 0:36 ` KOSAKI Motohiro
2011-04-20 21:05 ` [PATCH v3] mm: make expand_downwards symmetrical to expand_upwards David Rientjes
2011-04-20 11:20 ` Matthew Wilcox
2011-04-20 11:28 ` Pekka Enberg
2011-04-20 14:15 ` James Bottomley
2011-04-20 14:50 ` Christoph Lameter
2011-04-20 15:02 ` James Bottomley
2011-04-20 15:22 ` Christoph Lameter
2011-04-20 19:25 ` Matthew Wilcox
2011-04-20 21:42 ` David Rientjes
2011-04-21 16:06 ` James Bottomley
2011-04-21 22:19 ` David Rientjes
2011-04-21 22:31 ` James Bottomley
2011-04-20 13:58 ` Christoph Lameter
2011-04-20 21:34 ` David Rientjes
2011-04-20 14:07 ` Christoph Lameter
2011-04-20 2:33 ` James Bottomley
2011-04-19 17:12 ` Christoph Lameter
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=alpine.DEB.2.00.1104201530430.13948@chino.kir.corp.google.com \
--to=rientjes@google.com \
--cc=James.Bottomley@hansenpartnership.com \
--cc=akpm@linux-foundation.org \
--cc=cl@linux.com \
--cc=hughd@google.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-parisc@vger.kernel.org \
--cc=mhocko@suse.cz \
--cc=mingo@elte.hu \
--cc=penberg@kernel.org \
--cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox