Message ID | 20200317131753.4074-5-srikar@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix kmalloc_node on offline nodes | expand |
This patchset can also fix a related problem that I reported earlier at https://lists.ozlabs.org/pipermail/linuxppc-dev/2020-March/206076.html with an additional change, suggested by Srikar as shown below: On Tue, Mar 17, 2020 at 06:47:53PM +0530, Srikar Dronamraju wrote: > Currently fallback nodes for offline nodes aren't set. Hence by default > node 0 ends up being the default node. However node 0 might be offline. > > Fix this by explicitly setting fallback node. Ensure first_memory_node > is set before kernel does explicit setting of fallback node. > > arch/powerpc/mm/numa.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c > index 281531340230..6e97ab6575cb 100644 > --- a/arch/powerpc/mm/numa.c > +++ b/arch/powerpc/mm/numa.c > @@ -827,7 +827,16 @@ void __init dump_numa_cpu_topology(void) > if (!numa_enabled) > return; > > - for_each_online_node(node) { > + for_each_node(node) { > + /* > + * For all possible but not yet online nodes, ensure their > + * node_numa_mem is set correctly so that kmalloc_node works > + * for such nodes. > + */ > + if (!node_online(node)) { Change the above line to like below: + if (!node_state(node, N_MEMORY)) { Regards, Bharata.
* Bharata B Rao <bharata@linux.ibm.com> [2020-03-17 19:52:32]: Thanks Bharata. > This patchset can also fix a related problem that I reported earlier at > https://lists.ozlabs.org/pipermail/linuxppc-dev/2020-March/206076.html > with an additional change, suggested by Srikar as shown below: > > > > > - for_each_online_node(node) { > > + for_each_node(node) { > > + /* > > + * For all possible but not yet online nodes, ensure their > > + * node_numa_mem is set correctly so that kmalloc_node works > > + * for such nodes. > > + */ > > + if (!node_online(node)) { > > Change the above line to like below: > > + if (!node_state(node, N_MEMORY)) { > Just to clarify, this is needed if we don't have http://lore.kernel.org/lkml/20200311110237.5731-1-srikar@linux.vnet.ibm.com/t/#u
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c index 281531340230..6e97ab6575cb 100644 --- a/arch/powerpc/mm/numa.c +++ b/arch/powerpc/mm/numa.c @@ -827,7 +827,16 @@ void __init dump_numa_cpu_topology(void) if (!numa_enabled) return; - for_each_online_node(node) { + for_each_node(node) { + /* + * For all possible but not yet online nodes, ensure their + * node_numa_mem is set correctly so that kmalloc_node works + * for such nodes. + */ + if (!node_online(node)) { + reset_numa_mem(node); + continue; + } pr_info("Node %d CPUs:", node); count = 0;