On 13/03/20 04:55, Wanpeng Li wrote: > From: Wanpeng Li <wanpengli@xxxxxxxxxxx> > > 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@xxxxxxxxxxx> > --- > 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