Re: [BUG] i386 2.6.18 cpu_up: attempt to bring up CPU 4 failed : kernel BUG at mm/slab.c:2698!

keith mannthey
2006-09-22T19:44:24Z

On Thu, 2006-09-21 at 21:09 -0700, David Rientjes wrote:
> On Thu, 21 Sep 2006, Andrew Morton wrote:

Well I think there is 3 bug total exposed my unique situation. I think
all 3 issues are generic mainline bugs that have been around for
awhile.

1. SRAT not being mapped (patch submitted to fix boot_ioremap code)
This caused cpus to fail to be borough on line and panicked the box.

2. The panic is bad. I have so far tested the patch David
submitted.... It allowed the cpu_up calls to fail without panicking the
box. Andrew do you want me to test yours or ???

3. Flat mode i386 numa on a real numa system is broken. If there is
only 1 node in the system cpus should think they are apart of some other
node. Patch below.

If cases where a real numa system boots the Flat numa option make sure
the cpus don't claim to be apart on a non-existent node.

Signed-off-by: Keith Mannthey <kmannth@us.ibm.com>

--- linux-2.6.18/arch/i386/kernel/smpboot.c 2006-09-19
20:42:06.000000000 -0700
+++ linux-2.6.18-workes/arch/i386/kernel/smpboot.c 2006-09-21
21:57:55.000000000 -0700
@@ -642,9 +642,13 @@
{
int cpu = smp_processor_id();
int apicid = logical_smp_processor_id();
-
+ int node = apicid_to_node(apicid);
+
+ if (!node_online(node))
+ node = first_online_node;
+
cpu_2_logical_apicid[cpu] = apicid;
- map_cpu_to_node(cpu, apicid_to_node(apicid));
+ map_cpu_to_node(cpu, node);
}

static void unmap_cpu_to_logical_apicid(int cpu)