]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - arch/x86/kernel/machine_kexec_32.c
kexec jump: save/restore device state
[net-next-2.6.git] / arch / x86 / kernel / machine_kexec_32.c
index 2b67609d0a1c0af2214c77f0a616acc742b84268..9fe478d984068fea53488d4405db4066863df39c 100644 (file)
@@ -125,6 +125,18 @@ void machine_kexec(struct kimage *image)
        /* Interrupts aren't acceptable while we reboot */
        local_irq_disable();
 
+       if (image->preserve_context) {
+#ifdef CONFIG_X86_IO_APIC
+               /* We need to put APICs in legacy mode so that we can
+                * get timer interrupts in second kernel. kexec/kdump
+                * paths already have calls to disable_IO_APIC() in
+                * one form or other. kexec jump path also need
+                * one.
+                */
+               disable_IO_APIC();
+#endif
+       }
+
        control_page = page_address(image->control_code_page);
        memcpy(control_page, relocate_kernel, PAGE_SIZE/2);