#include <asm/percpu.h>
 
 extern int boot_cpuid;
-extern int boot_cpu_count;
+extern int spinning_secondaries;
 
 extern void cpu_die(void);
 
 
        mtctr   r23
        bctrl
 
-3:     LOAD_REG_ADDR(r3, boot_cpu_count) /* Decrement boot_cpu_count */
+3:     LOAD_REG_ADDR(r3, spinning_secondaries) /* Decrement spinning_secondaries */
        lwarx   r4,0,r3
        subi    r4,r4,1
        stwcx.  r4,0,r3
 
 u64 ppc64_rma_size;
 #endif
 static phys_addr_t first_memblock_size;
+static int __initdata boot_cpu_count;
 
 static int __init early_parse_mem(char *p)
 {
         */
        of_scan_flat_dt(early_init_dt_scan_cpus, NULL);
 
+#if defined(CONFIG_SMP) && defined(CONFIG_PPC64)
+       /* We'll later wait for secondaries to check in; there are
+        * NCPUS-1 non-boot CPUs  :-)
+        */
+       spinning_secondaries = boot_cpu_count - 1;
+#endif
+
        DBG(" <- early_init_devtree()\n");
 }
 
 
 
 int boot_cpuid = -1;
 EXPORT_SYMBOL_GPL(boot_cpuid);
-int __initdata boot_cpu_count;
 int boot_cpuid_phys;
 
 int smp_hw_index[NR_CPUS];
 
 #endif
 
 int boot_cpuid = 0;
-int __initdata boot_cpu_count;
+int __initdata spinning_secondaries;
 u64 ppc64_pft_size;
 
 /* Pick defaults since we might want to patch instructions
        for (i = 0; i < 100000; i++) {
                mb();
                HMT_low();
-               if (boot_cpu_count == 0)
+               if (spinning_secondaries == 0)
                        break;
                udelay(1);
        }
-       DBG("boot_cpu_count = %d\n", boot_cpu_count);
+       DBG("spinning_secondaries = %d\n", spinning_secondaries);
 
        DBG(" <- smp_release_cpus()\n");
 }