diff options
Diffstat (limited to 'arch/powerpc/kernel/setup_64.c')
-rw-r--r-- | arch/powerpc/kernel/setup_64.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index 8b25f51f03bf..843c0af210d0 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c | |||
@@ -255,9 +255,11 @@ void early_setup_secondary(void) | |||
255 | #endif /* CONFIG_SMP */ | 255 | #endif /* CONFIG_SMP */ |
256 | 256 | ||
257 | #if defined(CONFIG_SMP) || defined(CONFIG_KEXEC) | 257 | #if defined(CONFIG_SMP) || defined(CONFIG_KEXEC) |
258 | extern unsigned long __secondary_hold_spinloop; | ||
259 | extern void generic_secondary_smp_init(void); | ||
260 | |||
258 | void smp_release_cpus(void) | 261 | void smp_release_cpus(void) |
259 | { | 262 | { |
260 | extern unsigned long __secondary_hold_spinloop; | ||
261 | unsigned long *ptr; | 263 | unsigned long *ptr; |
262 | 264 | ||
263 | DBG(" -> smp_release_cpus()\n"); | 265 | DBG(" -> smp_release_cpus()\n"); |
@@ -266,12 +268,11 @@ void smp_release_cpus(void) | |||
266 | * all now so they can start to spin on their individual paca | 268 | * all now so they can start to spin on their individual paca |
267 | * spinloops. For non SMP kernels, the secondary cpus never get out | 269 | * spinloops. For non SMP kernels, the secondary cpus never get out |
268 | * of the common spinloop. | 270 | * of the common spinloop. |
269 | * This is useless but harmless on iSeries, secondaries are already | 271 | */ |
270 | * waiting on their paca spinloops. */ | ||
271 | 272 | ||
272 | ptr = (unsigned long *)((unsigned long)&__secondary_hold_spinloop | 273 | ptr = (unsigned long *)((unsigned long)&__secondary_hold_spinloop |
273 | - PHYSICAL_START); | 274 | - PHYSICAL_START); |
274 | *ptr = 1; | 275 | *ptr = __pa(generic_secondary_smp_init); |
275 | mb(); | 276 | mb(); |
276 | 277 | ||
277 | DBG(" <- smp_release_cpus()\n"); | 278 | DBG(" <- smp_release_cpus()\n"); |