On partitioned systems we can wind up creating spurious symlinks in
/sys/devices/system/node/node0 to non-present cpus.  The symlinks are
not broken; the problem is that we're potentially misinforming
userspace that there is a relationship between node0 and cpus which
are to be added later.  There's no guarantee at all that a cpu which
is added later will belong to node 0.
Signed-off-by: Nathan Lynch <ntl@pobox.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
                struct cpu *c = &per_cpu(cpu_devices, cpu);
 
 #ifdef CONFIG_NUMA
-               parent = &node_devices[cpu_to_node(cpu)];
+               /* The node to which a cpu belongs can't be known
+                * until the cpu is made present.
+                */
+               parent = NULL;
+               if (cpu_present(cpu))
+                       parent = &node_devices[cpu_to_node(cpu)];
 #endif
                /*
                 * For now, we just see if the system supports making