KVM: nVMX: Allow setting the VMXE bit in CR4
authorNadav Har'El <nyh@il.ibm.com>
Wed, 25 May 2011 20:03:24 +0000 (23:03 +0300)
committerAvi Kivity <avi@redhat.com>
Tue, 12 Jul 2011 08:45:10 +0000 (11:45 +0300)
commit5e1746d6205d1efa3193cc0c67aa2d15e54799bd
tree9234ab8fddb5e7a8d86b506a19d7697566d51cfb
parentec378aeef9dfc7c4ba72e9bd6cd4bd6f7d5fd0cc
KVM: nVMX: Allow setting the VMXE bit in CR4

This patch allows the guest to enable the VMXE bit in CR4, which is a
prerequisite to running VMXON.

Whether to allow setting the VMXE bit now depends on the architecture (svm
or vmx), so its checking has moved to kvm_x86_ops->set_cr4(). This function
now returns an int: If kvm_x86_ops->set_cr4() returns 1, __kvm_set_cr4()
will also return 1, and this will cause kvm_set_cr4() will throw a #GP.

Turning on the VMXE bit is allowed only when the nested VMX feature is
enabled, and turning it off is forbidden after a vmxon.

Signed-off-by: Nadav Har'El <nyh@il.ibm.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/svm.c
arch/x86/kvm/vmx.c
arch/x86/kvm/x86.c