diff -Naur linux-2.6.34/arch/x86/kvm/vmx.c linux-2.6.34.new/arch/x86/kvm/vmx.c --- linux-2.6.34/arch/x86/kvm/vmx.c 2010-07-06 20:41:21.000000000 +0700 +++ linux-2.6.34.new/arch/x86/kvm/vmx.c 2010-07-06 20:40:34.000000000 +0700 @@ -1648,17 +1648,15 @@ (guest_tr_ar & ~AR_TYPE_MASK) | AR_TYPE_BUSY_64_TSS); } - vcpu->arch.efer |= EFER_LMA; - vmx_set_efer(vcpu, vcpu->arch.efer); + vmx_set_efer(vcpu, vcpu->arch.efer | EFER_LMA); } static void exit_lmode(struct kvm_vcpu *vcpu) { - vcpu->arch.efer &= ~EFER_LMA; - vmcs_write32(VM_ENTRY_CONTROLS, vmcs_read32(VM_ENTRY_CONTROLS) & ~VM_ENTRY_IA32E_MODE); + vmx_set_efer(vcpu, vcpu->arch.efer & ~EFER_LMA); } #endif