Index: vmx.c =================================================================== --- vmx.c (revision 4120) +++ vmx.c (working copy) @@ -74,7 +74,7 @@ #ifdef CONFIG_X86_64 MSR_SYSCALL_MASK, MSR_LSTAR, MSR_CSTAR, MSR_KERNEL_GS_BASE, #endif - MSR_EFER, MSR_K6_STAR, + MSR_K6_STAR, }; #define NR_VMX_MSR (sizeof(vmx_msr_index) / sizeof(*vmx_msr_index)) @@ -754,7 +754,6 @@ vcpu->shadow_efer |= EFER_LMA; - find_msr_entry(vcpu, MSR_EFER)->data |= EFER_LMA | EFER_LME; vmcs_write32(VM_ENTRY_CONTROLS, vmcs_read32(VM_ENTRY_CONTROLS) | VM_ENTRY_CONTROLS_IA32E_MASK); @@ -824,22 +823,15 @@ static void vmx_set_efer(struct kvm_vcpu *vcpu, u64 efer) { - struct vmx_msr_entry *msr = find_msr_entry(vcpu, MSR_EFER); - vcpu->shadow_efer = efer; - if (efer & EFER_LMA) { + if (efer & EFER_LMA) vmcs_write32(VM_ENTRY_CONTROLS, vmcs_read32(VM_ENTRY_CONTROLS) | VM_ENTRY_CONTROLS_IA32E_MASK); - msr->data = efer; - - } else { + else vmcs_write32(VM_ENTRY_CONTROLS, vmcs_read32(VM_ENTRY_CONTROLS) & ~VM_ENTRY_CONTROLS_IA32E_MASK); - - msr->data = efer & ~EFER_LME; - } } #endif