diff options
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/smp.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index cbdbb14be4b0..b6083f4f39b1 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c | |||
@@ -95,7 +95,7 @@ int smt_enabled_at_boot = 1; | |||
95 | static void (*crash_ipi_function_ptr)(struct pt_regs *) = NULL; | 95 | static void (*crash_ipi_function_ptr)(struct pt_regs *) = NULL; |
96 | 96 | ||
97 | #ifdef CONFIG_PPC64 | 97 | #ifdef CONFIG_PPC64 |
98 | void __devinit smp_generic_kick_cpu(int nr) | 98 | int __devinit smp_generic_kick_cpu(int nr) |
99 | { | 99 | { |
100 | BUG_ON(nr < 0 || nr >= NR_CPUS); | 100 | BUG_ON(nr < 0 || nr >= NR_CPUS); |
101 | 101 | ||
@@ -106,6 +106,8 @@ void __devinit smp_generic_kick_cpu(int nr) | |||
106 | */ | 106 | */ |
107 | paca[nr].cpu_start = 1; | 107 | paca[nr].cpu_start = 1; |
108 | smp_mb(); | 108 | smp_mb(); |
109 | |||
110 | return 0; | ||
109 | } | 111 | } |
110 | #endif | 112 | #endif |
111 | 113 | ||
@@ -434,7 +436,11 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
434 | 436 | ||
435 | /* wake up cpus */ | 437 | /* wake up cpus */ |
436 | DBG("smp: kicking cpu %d\n", cpu); | 438 | DBG("smp: kicking cpu %d\n", cpu); |
437 | smp_ops->kick_cpu(cpu); | 439 | rc = smp_ops->kick_cpu(cpu); |
440 | if (rc) { | ||
441 | pr_err("smp: failed starting cpu %d (rc %d)\n", cpu, rc); | ||
442 | return rc; | ||
443 | } | ||
438 | 444 | ||
439 | /* | 445 | /* |
440 | * wait to see if the cpu made a callin (is actually up). | 446 | * wait to see if the cpu made a callin (is actually up). |