[PATCH] powerpc numa: fix boot_cpuid always assigned to node 0
authorNathan Lynch <nathanl@austin.ibm.com>
Tue, 21 Mar 2006 00:34:15 +0000 (18:34 -0600)
committerPaul Mackerras <paulus@samba.org>
Wed, 22 Mar 2006 04:03:40 +0000 (15:03 +1100)
At boot, the numa code is assigning boot_cpuid to node 0
unconditionally.  Basically, numa_setup_cpu is being stupid about it,
but this is the minimal fix -- just call numa_setup_cpu(boot_cpuid)
later, after all nodes have been set online.

Signed-off-by: Nathan Lynch <nathanl@austin.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/mm/numa.c

index da5280f8cf42e7805ef542dfb7495e31d6aa5658..dc6392ce25301d2c0a9815be64870a35de9c256b 100644 (file)
@@ -375,7 +375,7 @@ static int __init parse_numa_properties(void)
 {
        struct device_node *cpu = NULL;
        struct device_node *memory = NULL;
-       int max_domain;
+       int max_domain = 0;
        unsigned long i;
 
        if (numa_enabled == 0) {
@@ -389,8 +389,6 @@ static int __init parse_numa_properties(void)
        if (min_common_depth < 0)
                return min_common_depth;
 
-       max_domain = numa_setup_cpu(boot_cpuid);
-
        /*
         * Even though we connect cpus to numa domains later in SMP init,
         * we need to know the maximum node id now. This is because each
@@ -469,6 +467,8 @@ new_range:
        for (i = 0; i <= max_domain; i++)
                node_set_online(i);
 
+       max_domain = numa_setup_cpu(boot_cpuid);
+
        return 0;
 }