diff options
Diffstat (limited to 'arch/powerpc/platforms/pseries/kexec.c')
-rw-r--r-- | arch/powerpc/platforms/pseries/kexec.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/arch/powerpc/platforms/pseries/kexec.c b/arch/powerpc/platforms/pseries/kexec.c index 3bae8bd7db3b..7d94bdc63d50 100644 --- a/arch/powerpc/platforms/pseries/kexec.c +++ b/arch/powerpc/platforms/pseries/kexec.c | |||
@@ -25,34 +25,30 @@ static void pseries_kexec_cpu_down(int crash_shutdown, int secondary) | |||
25 | { | 25 | { |
26 | /* Don't risk a hypervisor call if we're crashing */ | 26 | /* Don't risk a hypervisor call if we're crashing */ |
27 | if (firmware_has_feature(FW_FEATURE_SPLPAR) && !crash_shutdown) { | 27 | if (firmware_has_feature(FW_FEATURE_SPLPAR) && !crash_shutdown) { |
28 | unsigned long addr; | ||
29 | int ret; | 28 | int ret; |
29 | int cpu = smp_processor_id(); | ||
30 | int hwcpu = hard_smp_processor_id(); | ||
30 | 31 | ||
31 | if (get_lppaca()->dtl_enable_mask) { | 32 | if (get_lppaca()->dtl_enable_mask) { |
32 | ret = unregister_dtl(hard_smp_processor_id()); | 33 | ret = unregister_dtl(hwcpu); |
33 | if (ret) { | 34 | if (ret) { |
34 | pr_err("WARNING: DTL deregistration for cpu " | 35 | pr_err("WARNING: DTL deregistration for cpu " |
35 | "%d (hw %d) failed with %d\n", | 36 | "%d (hw %d) failed with %d\n", |
36 | smp_processor_id(), | 37 | cpu, hwcpu, ret); |
37 | hard_smp_processor_id(), ret); | ||
38 | } | 38 | } |
39 | } | 39 | } |
40 | 40 | ||
41 | addr = __pa(get_slb_shadow()); | 41 | ret = unregister_slb_shadow(hwcpu); |
42 | ret = unregister_slb_shadow(hard_smp_processor_id(), addr); | ||
43 | if (ret) { | 42 | if (ret) { |
44 | pr_err("WARNING: SLB shadow buffer deregistration " | 43 | pr_err("WARNING: SLB shadow buffer deregistration " |
45 | "for cpu %d (hw %d) failed with %d\n", | 44 | "for cpu %d (hw %d) failed with %d\n", |
46 | smp_processor_id(), | 45 | cpu, hwcpu, ret); |
47 | hard_smp_processor_id(), ret); | ||
48 | } | 46 | } |
49 | 47 | ||
50 | addr = __pa(get_lppaca()); | 48 | ret = unregister_vpa(hwcpu); |
51 | ret = unregister_vpa(hard_smp_processor_id(), addr); | ||
52 | if (ret) { | 49 | if (ret) { |
53 | pr_err("WARNING: VPA deregistration for cpu %d " | 50 | pr_err("WARNING: VPA deregistration for cpu %d " |
54 | "(hw %d) failed with %d\n", smp_processor_id(), | 51 | "(hw %d) failed with %d\n", cpu, hwcpu, ret); |
55 | hard_smp_processor_id(), ret); | ||
56 | } | 52 | } |
57 | } | 53 | } |
58 | } | 54 | } |