KVM: nVMX: nested_vmx_check_msr_switch_controls simplification: remove unnecessary caching of physical address width
PATCH 3/3 KVM: nVMX: nested_vmx_check_msr_switch_controls simplification: remove unnecessary caching of physical address width
After speed-up of cpuid_maxphyaddr() it can be called easily. Now instead of heavy enumeration of CPUID entries it returns cached pre-computed value. It is also inlined now. So caching its result became unnecessary and can be removed.
Signed-off-by Eugene Korenevsky <[email protected]>
--- arch/x86/kvm/vmx.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-)
arch/x86/kvm/vmx.c +6 -8
@@ -8860,9 +8860,9 @@ static int nested_vmx_check_apicv_controls(struct kvm_vcpu *vcpu,static int nested_vmx_check_msr_switch (struct kvm_vcpu *vcpu,unsigned long count_field, -unsigned long addr_field, -int maxphyaddr) +unsigned long addr_field) { +int maxphyaddr;u64 count, addr; if (vmcs12_read_any(vcpu, count_field, &count) ||
@@ -8872,6 +8872,7 @@ static int nested_vmx_check_msr_switch(struct kvm_vcpu *vcpu, }if (count ==0 )return 0 ; + maxphyaddr =cpuid_maxphyaddr (vcpu);if (!IS_ALIGNED (addr,16 ) || addr >> maxphyaddr || (addr + count *sizeof (struct vmx_msr_entry ) -1 ) >> maxphyaddr) { pr_warn_ratelimited(
@@ -8885,19 +8886,16 @@ static int nested_vmx_check_msr_switch(struct kvm_vcpu *vcpu,static int nested_vmx_check_msr_switch_controls (struct kvm_vcpu *vcpu,struct vmcs12 *vmcs12) { -int maxphyaddr; -if (vmcs12->vm_exit_msr_load_count ==0 && vmcs12->vm_exit_msr_store_count ==0 && vmcs12->vm_entry_msr_load_count ==0 )return 0 ;/* Fast path */ - maxphyaddr =cpuid_maxphyaddr (vcpu);if (nested_vmx_check_msr_switch (vcpu,VM_EXIT_MSR_LOAD_COUNT , -VM_EXIT_MSR_LOAD_ADDR , maxphyaddr) || +VM_EXIT_MSR_LOAD_ADDR ) ||nested_vmx_check_msr_switch (vcpu,VM_EXIT_MSR_STORE_COUNT , -VM_EXIT_MSR_STORE_ADDR , maxphyaddr) || +VM_EXIT_MSR_STORE_ADDR ) ||nested_vmx_check_msr_switch (vcpu,VM_ENTRY_MSR_LOAD_COUNT , -VM_ENTRY_MSR_LOAD_ADDR , maxphyaddr)) +VM_ENTRY_MSR_LOAD_ADDR ))return -EINVAL ;return 0 ; }
Signature · 1 line
2.0.5