aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/prom.c
diff options
context:
space:
mode:
authorMatt Evans <matt@ozlabs.org>2011-05-25 14:09:12 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-06-17 02:19:51 -0400
commit7ac87abb8166b99584149fcfb2efef5773a078e9 (patch)
tree626ccec24e00720ada0bd8f967922d935f0eeca8 /arch/powerpc/kernel/prom.c
parent32d206eb5637d8cf73d9c70f7680de2a7193ce8b (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.c8
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;
69u64 ppc64_rma_size; 69u64 ppc64_rma_size;
70#endif 70#endif
71static phys_addr_t first_memblock_size; 71static phys_addr_t first_memblock_size;
72static int __initdata boot_cpu_count;
72 73
73static int __init early_parse_mem(char *p) 74static 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