From: Eduardo Habkost <ehabkost-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Avi Kivity <avi-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org>
Cc: Andrew Morton <akpm-3NddpPZAyC0@public.gmane.org>,
Zachary Amsden <zach-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>,
Eduardo Habkost
<ehabkost-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
"Rafael J. Wysocki" <rjw-KKrjLPT3xs0@public.gmane.org>,
Haren Myneni <hbabu-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>,
Simon Horman <horms-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>,
"Eric W. Biederman"
<ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>,
Andrey Borzenkov <arvidjaar-JGs/UdohzUI@public.gmane.org>,
mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
Vivek Goyal <vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: [PATCH 11/12] kdump: forcibly disable VMX and SVM on machine_crash_shutdown()
Date: Mon, 17 Nov 2008 19:03:23 -0200 [thread overview]
Message-ID: <1226955804-16802-12-git-send-email-ehabkost@redhat.com> (raw)
In-Reply-To: <1226955804-16802-1-git-send-email-ehabkost-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
We need to disable virtualization extensions on all CPUs before booting
the kdump kernel, otherwise the kdump kernel booting will fail, and
rebooting after the kdump kernel did its task may also fail.
We do it using cpu_emergency_vmxoff() and cpu_emergency_svm_disable(),
that should always work, because those functions check if the CPUs
support SVM or VMX before doing their tasks.
Signed-off-by: Eduardo Habkost <ehabkost-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
arch/x86/kernel/crash.c | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
index d84a852..c689d19 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,15 @@ static void kdump_nmi_callback(int cpu, struct die_args *args)
#endif
crash_save_cpu(regs, cpu);
+ /* Disable VMX or SVM if needed.
+ *
+ * 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.
+ */
+ cpu_emergency_vmxoff();
+ cpu_emergency_svm_disable();
+
disable_local_APIC();
}
@@ -80,6 +90,14 @@ 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.
+ */
+ cpu_emergency_vmxoff();
+ cpu_emergency_svm_disable();
+
lapic_shutdown();
#if defined(CONFIG_X86_IO_APIC)
disable_IO_APIC();
--
1.5.5.GIT
next prev parent reply other threads:[~2008-11-17 21:03 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-17 21:03 [PATCH 00/12] x86: disable virt on kdump and emergency_restart (v4) Eduardo Habkost
[not found] ` <1226955804-16802-1-git-send-email-ehabkost-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2008-11-17 21:03 ` [PATCH 01/12] kvm: vmx: move vmx.h to include/asm Eduardo Habkost
2008-11-17 21:03 ` [PATCH 02/12] kvm: svm: move svm.h " Eduardo Habkost
2008-11-17 21:03 ` [PATCH 03/12] kvm: vmx: move ASM_VMX_* definitions from asm/kvm_host.h to asm/vmx.h Eduardo Habkost
2008-11-17 21:03 ` [PATCH 04/12] kvm: vmx: move cpu_has_kvm_support() to an inline on asm/virtext.h Eduardo Habkost
2008-11-17 21:03 ` [PATCH 05/12] x86: asm/virtext.h: add cpu_vmxoff() inline function Eduardo Habkost
2008-11-17 21:03 ` [PATCH 06/12] kvm: vmx: extract kvm_cpu_vmxoff() from hardware_disable() Eduardo Habkost
2008-11-17 21:03 ` [PATCH 08/12] kvm: svm: move has_svm() code to asm/virtext.h Eduardo Habkost
2008-11-17 21:03 ` [PATCH 10/12] x86: cpu_emergency_svm_disable() function Eduardo Habkost
2008-11-17 21:03 ` Eduardo Habkost [this message]
2008-11-18 8:15 ` [PATCH 00/12] x86: disable virt on kdump and emergency_restart (v4) Ingo Molnar
[not found] ` <20081118081501.GF17838-X9Un+BFzKDI@public.gmane.org>
2008-11-21 16:07 ` Avi Kivity
[not found] ` <4926DCC8.1040500-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2008-11-21 16:18 ` Ingo Molnar
2008-11-24 14:58 ` Eduardo Habkost
2008-11-17 21:03 ` [PATCH 07/12] x86: cpu_emergency_vmxoff() function Eduardo Habkost
2008-11-17 21:03 ` [PATCH 09/12] kvm: svm: move svm_hardware_disable() code to asm/virtext.h Eduardo Habkost
2008-11-17 21:03 ` [PATCH 12/12] x86: disable VMX on all CPUs on reboot Eduardo Habkost
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1226955804-16802-12-git-send-email-ehabkost@redhat.com \
--to=ehabkost-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=akpm-3NddpPZAyC0@public.gmane.org \
--cc=arvidjaar-JGs/UdohzUI@public.gmane.org \
--cc=avi-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org \
--cc=hbabu-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
--cc=horms-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org \
--cc=kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=mingo-X9Un+BFzKDI@public.gmane.org \
--cc=rjw-KKrjLPT3xs0@public.gmane.org \
--cc=vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=zach-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox