Message ID | 1584071718-17163-1-git-send-email-wanpengli@tencent.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] KVM: VMX: Micro-optimize vmexit time when not exposing PMU | expand |
On 13/03/20 04:55, Wanpeng Li wrote: > From: Wanpeng Li <wanpengli@tencent.com> > > PMU is not exposed to guest by most of products from cloud providers since the > bad performance of PMU emulation and security concern. However, it calls > perf_guest_switch_get_msrs() and clear_atomic_switch_msr() unconditionally > even if PMU is not exposed to the guest before each vmentry. > > ~2% vmexit time reduced can be observed by kvm-unit-tests/vmexit.flat on my > SKX server. > > Before patch: > vmcall 1559 > > After patch: > vmcall 1529 > > Signed-off-by: Wanpeng Li <wanpengli@tencent.com> > --- > v1 -> v2: > * move the check before atomic_switch_perf_msrs > > arch/x86/kvm/vmx/vmx.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c > index 40b1e61..b20423c 100644 > --- a/arch/x86/kvm/vmx/vmx.c > +++ b/arch/x86/kvm/vmx/vmx.c > @@ -6567,7 +6567,8 @@ static void vmx_vcpu_run(struct kvm_vcpu *vcpu) > > pt_guest_enter(vmx); > > - atomic_switch_perf_msrs(vmx); > + if (vcpu_to_pmu(vcpu)->version) > + atomic_switch_perf_msrs(vmx); > atomic_switch_umwait_control_msr(vmx); > > if (enable_preemption_timer) > Queued, thanks. Paolo
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 40b1e61..b20423c 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -6567,7 +6567,8 @@ static void vmx_vcpu_run(struct kvm_vcpu *vcpu) pt_guest_enter(vmx); - atomic_switch_perf_msrs(vmx); + if (vcpu_to_pmu(vcpu)->version) + atomic_switch_perf_msrs(vmx); atomic_switch_umwait_control_msr(vmx); if (enable_preemption_timer)