[v2: add comments on source code, explaining why it is needed]

Signed-off-by: Eduardo Habkost <[EMAIL PROTECTED]>
---
 arch/x86/kernel/crash.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
index d84a852..040f3ca 100644
--- a/arch/x86/kernel/crash.c
+++ b/arch/x86/kernel/crash.c
@@ -26,6 +26,7 @@
 #include <linux/kdebug.h>
 #include <asm/smp.h>
 #include <asm/reboot.h>
+#include <asm/virtext.h>
 
 #include <mach_ipi.h>
 
@@ -49,6 +50,11 @@ static void kdump_nmi_callback(int cpu, struct die_args 
*args)
 #endif
        crash_save_cpu(regs, cpu);
 
+       /* We need to disable virtualization on all CPUs.
+        * Having VMX or SVM enabled on any CPU may break rebooting
+        * after the kdump kernel has finished its task.
+        */
+       emergency_virt_disable();
        disable_local_APIC();
 }
 
@@ -80,6 +86,13 @@ void native_machine_crash_shutdown(struct pt_regs *regs)
        local_irq_disable();
 
        kdump_nmi_shootdown_cpus();
+
+       /* Booting kdump kernel with VMX or SVM enabled won't work,
+        * because (among other limitations) we can't disable paging
+        * with the virt flags.
+        */
+       emergency_virt_disable();
+
        lapic_shutdown();
 #if defined(CONFIG_X86_IO_APIC)
        disable_IO_APIC();
-- 
1.5.5.GIT

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to