Skip to content

Commit b76edfe

Browse files
duanzhenzhongbonzini
authored andcommitted
KVM: x86: cleanup enter_rmode()
vmx_set_efer() sets uret->data but, in fact if the value of uret->data will be used vmx_setup_uret_msrs() will have rewritten it with the value returned by update_transition_efer(). uret->data is consumed if and only if uret->load_into_hardware is true, and vmx_setup_uret_msrs() takes care of (a) updating uret->data before setting uret->load_into_hardware to true (b) setting uret->load_into_hardware to false if uret->data isn't updated. Opportunistically use "vmx" directly instead of redoing to_vmx(). Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Message-Id: <20220311102643.807507-2-zhenzhong.duan@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
1 parent 8809931 commit b76edfe

File tree

1 file changed

+5
-9
lines changed

1 file changed

+5
-9
lines changed

arch/x86/kvm/vmx/vmx.c

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2866,21 +2866,17 @@ static void enter_rmode(struct kvm_vcpu *vcpu)
28662866
int vmx_set_efer(struct kvm_vcpu *vcpu, u64 efer)
28672867
{
28682868
struct vcpu_vmx *vmx = to_vmx(vcpu);
2869-
struct vmx_uret_msr *msr = vmx_find_uret_msr(vmx, MSR_EFER);
28702869

28712870
/* Nothing to do if hardware doesn't support EFER. */
2872-
if (!msr)
2871+
if (!vmx_find_uret_msr(vmx, MSR_EFER))
28732872
return 0;
28742873

28752874
vcpu->arch.efer = efer;
2876-
if (efer & EFER_LMA) {
2877-
vm_entry_controls_setbit(to_vmx(vcpu), VM_ENTRY_IA32E_MODE);
2878-
msr->data = efer;
2879-
} else {
2880-
vm_entry_controls_clearbit(to_vmx(vcpu), VM_ENTRY_IA32E_MODE);
2875+
if (efer & EFER_LMA)
2876+
vm_entry_controls_setbit(vmx, VM_ENTRY_IA32E_MODE);
2877+
else
2878+
vm_entry_controls_clearbit(vmx, VM_ENTRY_IA32E_MODE);
28812879

2882-
msr->data = efer & ~EFER_LME;
2883-
}
28842880
vmx_setup_uret_msrs(vmx);
28852881
return 0;
28862882
}

0 commit comments

Comments
 (0)