diff options
Diffstat (limited to 'arch/arm/kernel/machine_kexec.c')
-rw-r--r-- | arch/arm/kernel/machine_kexec.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c index 598ca61e7bca..1fc74cbd1a19 100644 --- a/arch/arm/kernel/machine_kexec.c +++ b/arch/arm/kernel/machine_kexec.c | |||
@@ -37,12 +37,12 @@ void machine_kexec_cleanup(struct kimage *image) | |||
37 | { | 37 | { |
38 | } | 38 | } |
39 | 39 | ||
40 | void machine_shutdown(void) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | void machine_crash_shutdown(struct pt_regs *regs) | 40 | void machine_crash_shutdown(struct pt_regs *regs) |
45 | { | 41 | { |
42 | local_irq_disable(); | ||
43 | crash_save_cpu(regs, smp_processor_id()); | ||
44 | |||
45 | printk(KERN_INFO "Loading crashdump kernel...\n"); | ||
46 | } | 46 | } |
47 | 47 | ||
48 | void machine_kexec(struct kimage *image) | 48 | void machine_kexec(struct kimage *image) |
@@ -74,7 +74,11 @@ void machine_kexec(struct kimage *image) | |||
74 | (unsigned long) reboot_code_buffer + KEXEC_CONTROL_PAGE_SIZE); | 74 | (unsigned long) reboot_code_buffer + KEXEC_CONTROL_PAGE_SIZE); |
75 | printk(KERN_INFO "Bye!\n"); | 75 | printk(KERN_INFO "Bye!\n"); |
76 | 76 | ||
77 | cpu_proc_fin(); | 77 | local_irq_disable(); |
78 | local_fiq_disable(); | ||
78 | setup_mm_for_reboot(0); /* mode is not used, so just pass 0*/ | 79 | setup_mm_for_reboot(0); /* mode is not used, so just pass 0*/ |
80 | flush_cache_all(); | ||
81 | cpu_proc_fin(); | ||
82 | flush_cache_all(); | ||
79 | cpu_reset(reboot_code_buffer_phys); | 83 | cpu_reset(reboot_code_buffer_phys); |
80 | } | 84 | } |