|
@@ -1426,11 +1426,9 @@ static int __init crash_save_vmcoreinfo_init(void)
|
|
|
|
|
|
module_init(crash_save_vmcoreinfo_init)
|
|
|
|
|
|
-/**
|
|
|
- * kernel_kexec - reboot the system
|
|
|
- *
|
|
|
- * Move into place and start executing a preloaded standalone
|
|
|
- * executable. If nothing was preloaded return an error.
|
|
|
+/*
|
|
|
+ * Move into place and start executing a preloaded standalone
|
|
|
+ * executable. If nothing was preloaded return an error.
|
|
|
*/
|
|
|
int kernel_kexec(void)
|
|
|
{
|
|
@@ -1443,8 +1441,8 @@ int kernel_kexec(void)
|
|
|
goto Unlock;
|
|
|
}
|
|
|
|
|
|
- if (kexec_image->preserve_context) {
|
|
|
#ifdef CONFIG_KEXEC_JUMP
|
|
|
+ if (kexec_image->preserve_context) {
|
|
|
mutex_lock(&pm_mutex);
|
|
|
pm_prepare_console();
|
|
|
error = freeze_processes();
|
|
@@ -1471,8 +1469,9 @@ int kernel_kexec(void)
|
|
|
if (error)
|
|
|
goto Enable_irqs;
|
|
|
save_processor_state();
|
|
|
+ } else
|
|
|
#endif
|
|
|
- } else {
|
|
|
+ {
|
|
|
blocking_notifier_call_chain(&reboot_notifier_list,
|
|
|
SYS_RESTART, NULL);
|
|
|
system_state = SYSTEM_RESTART;
|
|
@@ -1484,8 +1483,8 @@ int kernel_kexec(void)
|
|
|
|
|
|
machine_kexec(kexec_image);
|
|
|
|
|
|
- if (kexec_image->preserve_context) {
|
|
|
#ifdef CONFIG_KEXEC_JUMP
|
|
|
+ if (kexec_image->preserve_context) {
|
|
|
restore_processor_state();
|
|
|
device_power_up(PMSG_RESTORE);
|
|
|
Enable_irqs:
|
|
@@ -1499,8 +1498,8 @@ int kernel_kexec(void)
|
|
|
Restore_console:
|
|
|
pm_restore_console();
|
|
|
mutex_unlock(&pm_mutex);
|
|
|
-#endif
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
Unlock:
|
|
|
if (!xchg(&kexec_lock, 0))
|