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 598ca61e7bc..1fc74cbd1a1 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)  {  } -void machine_shutdown(void) -{ -} -  void machine_crash_shutdown(struct pt_regs *regs)  { +	local_irq_disable(); +	crash_save_cpu(regs, smp_processor_id()); + +	printk(KERN_INFO "Loading crashdump kernel...\n");  }  void machine_kexec(struct kimage *image) @@ -74,7 +74,11 @@ void machine_kexec(struct kimage *image)  			   (unsigned long) reboot_code_buffer + KEXEC_CONTROL_PAGE_SIZE);  	printk(KERN_INFO "Bye!\n"); -	cpu_proc_fin(); +	local_irq_disable(); +	local_fiq_disable();  	setup_mm_for_reboot(0); /* mode is not used, so just pass 0*/ +	flush_cache_all(); +	cpu_proc_fin(); +	flush_cache_all();  	cpu_reset(reboot_code_buffer_phys);  }  | 
