aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/powernv/smp.c
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-05-03 13:21:00 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-05-05 19:25:41 -0400
commit4ea9008b75cdd6781207b73f4c01b6a877a0bb60 (patch)
tree7c561ad1c1c72a876ad37c636e5dc862040041e1 /arch/powerpc/platforms/powernv/smp.c
parent748645bf06f4ed2f5355eb7b3e721b44fb94d5e6 (diff)
powerpc/powerpnv: Properly handle failure starting CPUs
If OPAL returns an error, propagate it upward rather than spinning seconds waiting for a CPU that will never show up Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/platforms/powernv/smp.c')
-rw-r--r--arch/powerpc/platforms/powernv/smp.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c
index 0bdc735db16f..6a3ecca5b725 100644
--- a/arch/powerpc/platforms/powernv/smp.c
+++ b/arch/powerpc/platforms/powernv/smp.c
@@ -77,9 +77,11 @@ int pnv_smp_kick_cpu(int nr)
77 if (!paca[nr].cpu_start && firmware_has_feature(FW_FEATURE_OPALv2)) { 77 if (!paca[nr].cpu_start && firmware_has_feature(FW_FEATURE_OPALv2)) {
78 pr_devel("OPAL: Starting CPU %d (HW 0x%x)...\n", nr, pcpu); 78 pr_devel("OPAL: Starting CPU %d (HW 0x%x)...\n", nr, pcpu);
79 rc = opal_start_cpu(pcpu, start_here); 79 rc = opal_start_cpu(pcpu, start_here);
80 if (rc != OPAL_SUCCESS) 80 if (rc != OPAL_SUCCESS) {
81 pr_warn("OPAL Error %ld starting CPU %d\n", 81 pr_warn("OPAL Error %ld starting CPU %d\n",
82 rc, nr); 82 rc, nr);
83 return -ENODEV;
84 }
83 } 85 }
84 return smp_generic_kick_cpu(nr); 86 return smp_generic_kick_cpu(nr);
85} 87}