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 | } |
