summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorEli Collins <ecollins@vmware.com>2008-06-01 20:24:40 -0700
committerAvi Kivity <avi@qumranet.com>2008-06-06 21:30:20 +0300
commite693d71b46e64536581bf4884434fc1b8797e96f (patch)
tree39540d2d4dbc5cf36ab459451fdbf45a2e058ac1 /arch
parent2f5997140f22f68f6390c49941150d3fa8a95cb7 (diff)
downloadlinux-3.10-e693d71b46e64536581bf4884434fc1b8797e96f.tar.gz
linux-3.10-e693d71b46e64536581bf4884434fc1b8797e96f.tar.bz2
linux-3.10-e693d71b46e64536581bf4884434fc1b8797e96f.zip
KVM: VMX: Clear CR4.VMXE in hardware_disable
Clear CR4.VMXE in hardware_disable. There's no reason to leave it set after doing a VMXOFF. VMware Workstation 6.5 checks CR4.VMXE as a proxy for whether the CPU is in VMX mode, so leaving VMXE set means we'll refuse to power on. With this change the user can power on after unloading the kvm-intel module. I tested on kvm-67 and kvm-69. Signed-off-by: Eli Collins <ecollins@vmware.com> Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kvm/vmx.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 96445f34151..02efbe75f31 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -1036,6 +1036,7 @@ static void hardware_enable(void *garbage)
static void hardware_disable(void *garbage)
{
asm volatile (ASM_VMX_VMXOFF : : : "cc");
+ write_cr4(read_cr4() & ~X86_CR4_VMXE);
}
static __init int adjust_vmx_controls(u32 ctl_min, u32 ctl_opt,