diff options
Diffstat (limited to 'arch/s390/kernel/machine_kexec.c')
-rw-r--r-- | arch/s390/kernel/machine_kexec.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/s390/kernel/machine_kexec.c b/arch/s390/kernel/machine_kexec.c index 60b1ea9f946..202bf1fdfe3 100644 --- a/arch/s390/kernel/machine_kexec.c +++ b/arch/s390/kernel/machine_kexec.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <asm/pgalloc.h> | 22 | #include <asm/pgalloc.h> |
23 | #include <asm/system.h> | 23 | #include <asm/system.h> |
24 | #include <asm/smp.h> | 24 | #include <asm/smp.h> |
25 | #include <asm/reset.h> | ||
25 | 26 | ||
26 | static void kexec_halt_all_cpus(void *); | 27 | static void kexec_halt_all_cpus(void *); |
27 | 28 | ||
@@ -62,12 +63,6 @@ machine_shutdown(void) | |||
62 | NORET_TYPE void | 63 | NORET_TYPE void |
63 | machine_kexec(struct kimage *image) | 64 | machine_kexec(struct kimage *image) |
64 | { | 65 | { |
65 | clear_all_subchannels(); | ||
66 | cio_reset_channel_paths(); | ||
67 | |||
68 | /* Disable lowcore protection */ | ||
69 | ctl_clear_bit(0,28); | ||
70 | |||
71 | on_each_cpu(kexec_halt_all_cpus, image, 0, 0); | 66 | on_each_cpu(kexec_halt_all_cpus, image, 0, 0); |
72 | for (;;); | 67 | for (;;); |
73 | } | 68 | } |
@@ -98,6 +93,8 @@ kexec_halt_all_cpus(void *kernel_image) | |||
98 | cpu_relax(); | 93 | cpu_relax(); |
99 | } | 94 | } |
100 | 95 | ||
96 | s390_reset_system(); | ||
97 | |||
101 | image = (struct kimage *) kernel_image; | 98 | image = (struct kimage *) kernel_image; |
102 | data_mover = (relocate_kernel_t) | 99 | data_mover = (relocate_kernel_t) |
103 | (page_to_pfn(image->control_code_page) << PAGE_SHIFT); | 100 | (page_to_pfn(image->control_code_page) << PAGE_SHIFT); |