[PATCH v2 0/6] KVM: x86: cleanup and speedup for APICv

Paolo Bonzini
2016-12-19T16:17:21Z

These are the fixed patches that now pass vmx.flat. The issue in
"KVM: x86: do not scan IRR twice on APICv vmentry" was that,
in v1 of the patches, kvm_cpu_get_interrupt did not scan IRR
at all if it found PIR.ON=0. This is now fixed in patches 4 and 5.

Another latent bug has to be fixed in patch 2. The patch also
highlights the maze that check_nested_events has become. Fixing
that is left for later.

The patches are on top of the (non-APICv-related) KVM_REQ_EVENT
patches from this morning. According to kvm-unit-tests, patch 6 speeds
up self-IPIs (if not done through the accelerated self-IPI MSR) by 5-10%.

Paolo

Paolo Bonzini (6):
KVM: vmx: clear pending interrupts on KVM_SET_LAPIC
kvm: nVMX: move nested events check to kvm_vcpu_running
KVM: x86: preparatory changes for APICv cleanups
KVM: vmx: move sync_pir_to_irr from apic_find_highest_irr to callers
KVM: x86: do not scan IRR twice on APICv vmentry
kvm: x86: do not use KVM_REQ_EVENT for APICv interrupt injection

arch/x86/include/asm/kvm_host.h | 2 +-
arch/x86/kvm/lapic.c | 42 ++++++++++++++++++-------------
arch/x86/kvm/lapic.h | 4 +--
arch/x86/kvm/svm.c | 6 -----
arch/x86/kvm/vmx.c | 55 +++++++++++++++++++++++++++--------------
arch/x86/kvm/x86.c | 53 +++++++++++++++++++++------------------
6 files changed, 93 insertions(+), 69 deletions(-)

--
1.8.3.1