diff options
author | Matt Evans <matt@ozlabs.org> | 2011-05-25 14:09:12 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-06-17 02:19:51 -0400 |
commit | 7ac87abb8166b99584149fcfb2efef5773a078e9 (patch) | |
tree | 626ccec24e00720ada0bd8f967922d935f0eeca8 /arch/powerpc/kernel/prom.c | |
parent | 32d206eb5637d8cf73d9c70f7680de2a7193ce8b (diff) |
powerpc: Fix early boot accounting of CPUs
smp_release_cpus() waits for all cpus (including the bootcpu) due to an
off-by-one count on boot_cpu_count (which is all CPUs). This patch replaces
that with spinning_secondaries (which is all secondary CPUs).
Signed-off-by: Matt Evans <matt@ozlabs.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/prom.c')
-rw-r--r-- | arch/powerpc/kernel/prom.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index f2c906b1d8d3..534c50359e06 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c | |||
@@ -69,6 +69,7 @@ unsigned long tce_alloc_start, tce_alloc_end; | |||
69 | u64 ppc64_rma_size; | 69 | u64 ppc64_rma_size; |
70 | #endif | 70 | #endif |
71 | static phys_addr_t first_memblock_size; | 71 | static phys_addr_t first_memblock_size; |
72 | static int __initdata boot_cpu_count; | ||
72 | 73 | ||
73 | static int __init early_parse_mem(char *p) | 74 | static int __init early_parse_mem(char *p) |
74 | { | 75 | { |
@@ -748,6 +749,13 @@ void __init early_init_devtree(void *params) | |||
748 | */ | 749 | */ |
749 | of_scan_flat_dt(early_init_dt_scan_cpus, NULL); | 750 | of_scan_flat_dt(early_init_dt_scan_cpus, NULL); |
750 | 751 | ||
752 | #if defined(CONFIG_SMP) && defined(CONFIG_PPC64) | ||
753 | /* We'll later wait for secondaries to check in; there are | ||
754 | * NCPUS-1 non-boot CPUs :-) | ||
755 | */ | ||
756 | spinning_secondaries = boot_cpu_count - 1; | ||
757 | #endif | ||
758 | |||
751 | DBG(" <- early_init_devtree()\n"); | 759 | DBG(" <- early_init_devtree()\n"); |
752 | } | 760 | } |
753 | 761 | ||