KVM: x86: use static calls to reduce kvm_x86_ops overhead
Convert kvm_x86_ops to use static calls. Note that all kvm_x86_ops are covered here except for 'pmu_ops and 'nested ops'. Here are some numbers running cpuid in a loop of 1 million calls averaged over 5 runs, measured in the vm (lower is better). Intel Xeon 3000MHz: |default |mitigations=off ------------------------------------- vanilla |.671s |.486s static call|.573s(-15%)|.458s(-6%) AMD EPYC 2500MHz: |default |mitigations=off ------------------------------------- vanilla |.710s |.609s static call|.664s(-6%) |.609s(0%) Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Sean Christopherson <seanjc@google.com> Signed-off-by:Jason Baron <jbaron@akamai.com> Message-Id: <e057bf1b8a7ad15652df6eeba3f907ae758d3399.1610680941.git.jbaron@akamai.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
Showing
- arch/x86/include/asm/kvm_host.h 3 additions, 5 deletionsarch/x86/include/asm/kvm_host.h
- arch/x86/kvm/cpuid.c 1 addition, 1 deletionarch/x86/kvm/cpuid.c
- arch/x86/kvm/hyperv.c 2 additions, 2 deletionsarch/x86/kvm/hyperv.c
- arch/x86/kvm/irq.c 1 addition, 2 deletionsarch/x86/kvm/irq.c
- arch/x86/kvm/kvm_cache_regs.h 5 additions, 5 deletionsarch/x86/kvm/kvm_cache_regs.h
- arch/x86/kvm/lapic.c 15 additions, 15 deletionsarch/x86/kvm/lapic.c
- arch/x86/kvm/mmu.h 3 additions, 3 deletionsarch/x86/kvm/mmu.h
- arch/x86/kvm/mmu/mmu.c 8 additions, 7 deletionsarch/x86/kvm/mmu/mmu.c
- arch/x86/kvm/mmu/spte.c 1 addition, 1 deletionarch/x86/kvm/mmu/spte.c
- arch/x86/kvm/pmu.c 1 addition, 1 deletionarch/x86/kvm/pmu.c
- arch/x86/kvm/trace.h 2 additions, 2 deletionsarch/x86/kvm/trace.h
- arch/x86/kvm/x86.c 148 additions, 150 deletionsarch/x86/kvm/x86.c
- arch/x86/kvm/x86.h 3 additions, 3 deletionsarch/x86/kvm/x86.h
Please register or sign in to comment