2008-03-26 13:06:58

by Daniel Yeisley

[permalink] [raw]
Subject: [PATCH] CPUs on memoryless nodes not being reassigned

When I boot with memoryless nodes on the latest 2.6.25-rc kernels, the
CPUs aren't being reassigned to nodes with memory.

Signed-off-by: Dan Yeisley <[email protected]>

---
diff -Nuar linux-2.6.25-rc6/arch/x86/kernel/setup_64.c linux-2.6.25-rc6-new/arch/x86/kernel/setup_64.c
--- linux-2.6.25-rc6/arch/x86/kernel/setup_64.c 2008-03-16 19:32:14.000000000 -0400
+++ linux-2.6.25-rc6-new/arch/x86/kernel/setup_64.c 2008-03-25 09:52:15.000000000 -0400
@@ -801,7 +801,7 @@
/* Don't do the funky fallback heuristics the AMD version employs
for now. */
node = apicid_to_node[apicid];
- if (node == NUMA_NO_NODE)
+ if (node == NUMA_NO_NODE || !node_online(node))
node = first_node(node_online_map);
numa_set_node(cpu, node);


2008-03-26 13:10:52

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] CPUs on memoryless nodes not being reassigned


* Daniel Yeisley <[email protected]> wrote:

> When I boot with memoryless nodes on the latest 2.6.25-rc kernels, the
> CPUs aren't being reassigned to nodes with memory.

> node = apicid_to_node[apicid];
> - if (node == NUMA_NO_NODE)
> + if (node == NUMA_NO_NODE || !node_online(node))
> node = first_node(node_online_map);

that's already fixed in x86.git/latest, by Yinghai Lu, could you try it:

http://people.redhat.com/mingo/x86.git/README

(let me know if there's any other problem with your hardware on
x86.git/latest.)

Ingo

2008-03-26 17:58:19

by Daniel Yeisley

[permalink] [raw]
Subject: RE: [PATCH] CPUs on memoryless nodes not being reassigned



> -----Original Message-----
> From: Ingo Molnar [mailto:[email protected]]
> Sent: Wednesday, March 26, 2008 9:10
> To: Yeisley, Dan P.
> Cc: [email protected]; [email protected]; Yinghai Lu
> Subject: Re: [PATCH] CPUs on memoryless nodes not being reassigned
>
>
> * Daniel Yeisley <[email protected]> wrote:
>
> > When I boot with memoryless nodes on the latest 2.6.25-rc kernels,
the
> > CPUs aren't being reassigned to nodes with memory.
>
> > node = apicid_to_node[apicid];
> > - if (node == NUMA_NO_NODE)
> > + if (node == NUMA_NO_NODE || !node_online(node))
> > node = first_node(node_online_map);
>
> that's already fixed in x86.git/latest, by Yinghai Lu, could you try
it:
>
> http://people.redhat.com/mingo/x86.git/README
>
> (let me know if there's any other problem with your hardware on
> x86.git/latest.)
>
> Ingo

I tried the x86.git/latest and it worked.

Dan