diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-05-03 13:21:00 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-05-05 19:25:41 -0400 |
commit | 4ea9008b75cdd6781207b73f4c01b6a877a0bb60 (patch) | |
tree | 7c561ad1c1c72a876ad37c636e5dc862040041e1 /arch/powerpc/platforms/powernv/smp.c | |
parent | 748645bf06f4ed2f5355eb7b3e721b44fb94d5e6 (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.c | 4 |
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 | } |