KVM: VMX: Fix comparison of guest efer with stale host value
authorAvi Kivity <avi@redhat.com>
Wed, 2 Dec 2009 10:28:47 +0000 (12:28 +0200)
committerAvi Kivity <avi@redhat.com>
Thu, 3 Dec 2009 07:34:20 +0000 (09:34 +0200)
commitd5696725b2a4c59503f5e0bc33adeee7f30cd45b
tree56069b502c198fbfef0eb0d9bd3a2329b3d37cef
parentf50146bd7bdb75435638e60d4960edd9bcdf88b8
KVM: VMX: Fix comparison of guest efer with stale host value

update_transition_efer() masks out some efer bits when deciding whether
to switch the msr during guest entry; for example, NX is emulated using the
mmu so we don't need to disable it, and LMA/LME are handled by the hardware.

However, with shared msrs, the comparison is made against a stale value;
at the time of the guest switch we may be running with another guest's efer.

Fix by deferring the mask/compare to the actual point of guest entry.

Noted by Marcelo.

Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/vmx.c
arch/x86/kvm/x86.c