diff options
Diffstat (limited to 'arch/powerpc/kernel/smp.c')
-rw-r--r-- | arch/powerpc/kernel/smp.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index a0738af4aba6..71e186d5f331 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c | |||
@@ -52,6 +52,7 @@ | |||
52 | #endif | 52 | #endif |
53 | #include <asm/vdso.h> | 53 | #include <asm/vdso.h> |
54 | #include <asm/debug.h> | 54 | #include <asm/debug.h> |
55 | #include <asm/kexec.h> | ||
55 | 56 | ||
56 | #ifdef DEBUG | 57 | #ifdef DEBUG |
57 | #include <asm/udbg.h> | 58 | #include <asm/udbg.h> |
@@ -379,8 +380,11 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
379 | /* | 380 | /* |
380 | * numa_node_id() works after this. | 381 | * numa_node_id() works after this. |
381 | */ | 382 | */ |
382 | set_cpu_numa_node(cpu, numa_cpu_lookup_table[cpu]); | 383 | if (cpu_present(cpu)) { |
383 | set_cpu_numa_mem(cpu, local_memory_node(numa_cpu_lookup_table[cpu])); | 384 | set_cpu_numa_node(cpu, numa_cpu_lookup_table[cpu]); |
385 | set_cpu_numa_mem(cpu, | ||
386 | local_memory_node(numa_cpu_lookup_table[cpu])); | ||
387 | } | ||
384 | } | 388 | } |
385 | 389 | ||
386 | cpumask_set_cpu(boot_cpuid, cpu_sibling_mask(boot_cpuid)); | 390 | cpumask_set_cpu(boot_cpuid, cpu_sibling_mask(boot_cpuid)); |
@@ -728,6 +732,9 @@ void start_secondary(void *unused) | |||
728 | } | 732 | } |
729 | traverse_core_siblings(cpu, true); | 733 | traverse_core_siblings(cpu, true); |
730 | 734 | ||
735 | set_numa_node(numa_cpu_lookup_table[cpu]); | ||
736 | set_numa_mem(local_memory_node(numa_cpu_lookup_table[cpu])); | ||
737 | |||
731 | smp_wmb(); | 738 | smp_wmb(); |
732 | notify_cpu_starting(cpu); | 739 | notify_cpu_starting(cpu); |
733 | set_cpu_online(cpu, true); | 740 | set_cpu_online(cpu, true); |