diff options
Diffstat (limited to 'arch/s390/kernel/machine_kexec.c')
-rw-r--r-- | arch/s390/kernel/machine_kexec.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/s390/kernel/machine_kexec.c b/arch/s390/kernel/machine_kexec.c index 131d7ee8b416..a922d51df6bf 100644 --- a/arch/s390/kernel/machine_kexec.c +++ b/arch/s390/kernel/machine_kexec.c | |||
@@ -54,11 +54,11 @@ void machine_shutdown(void) | |||
54 | { | 54 | { |
55 | } | 55 | } |
56 | 56 | ||
57 | void machine_kexec(struct kimage *image) | 57 | static void __machine_kexec(void *data) |
58 | { | 58 | { |
59 | relocate_kernel_t data_mover; | 59 | relocate_kernel_t data_mover; |
60 | struct kimage *image = data; | ||
60 | 61 | ||
61 | smp_send_stop(); | ||
62 | pfault_fini(); | 62 | pfault_fini(); |
63 | s390_reset_system(); | 63 | s390_reset_system(); |
64 | 64 | ||
@@ -68,3 +68,9 @@ void machine_kexec(struct kimage *image) | |||
68 | (*data_mover)(&image->head, image->start); | 68 | (*data_mover)(&image->head, image->start); |
69 | for (;;); | 69 | for (;;); |
70 | } | 70 | } |
71 | |||
72 | void machine_kexec(struct kimage *image) | ||
73 | { | ||
74 | smp_send_stop(); | ||
75 | smp_switch_to_ipl_cpu(__machine_kexec, image); | ||
76 | } | ||