Changes since v5: - New 'hybrid' approach to VP indexes: introduce 'num_mismatched_vp_indexes' and use it for optimization in both PV IPI and TLB flush [Paolo Bonzini, Roman Kagan]. - Rebase, KVM_CAP_HYPERV_SEND_IPI is now '160'. - Patches 3-5 are new in this version. - Drop "x86/hyper-v: rename ipi_arg_{ex,non_ex} structures" patch as it is already merged in kvm/queue. Original description: Using hypercall for sending IPIs is faster because this allows to specify any number of vCPUs (even > 64 with sparse CPU set), the whole procedure will take only one VMEXIT. Same as PV TLB flush, this allows Windows guests having > 64 vCPUs to boot on KVM when Hyper-V extensions are enabled. Vitaly Kuznetsov (7): KVM: x86: hyperv: enforce vp_index < KVM_MAX_VCPUS KVM: x86: hyperv: optimize 'all cpus' case in kvm_hv_flush_tlb() KVM: x86: hyperv: consistently use 'hv_vcpu' for 'struct kvm_vcpu_hv' variables KVM: x86: hyperv: keep track of mismatched VP indexes KVM: x86: hyperv: valid_bank_mask should be 'u64' KVM: x86: hyperv: optimize kvm_hv_flush_tlb() for vp_index == vcpu_idx case KVM: x86: hyperv: implement PV IPI send hypercalls Documentation/virtual/kvm/api.txt | 7 + arch/x86/include/asm/kvm_host.h | 3 + arch/x86/kvm/hyperv.c | 268 +++++++++++++++++++++++------- arch/x86/kvm/trace.h | 42 +++++ arch/x86/kvm/x86.c | 1 + include/uapi/linux/kvm.h | 1 + virt/kvm/kvm_main.c | 6 +- 7 files changed, 265 insertions(+), 63 deletions(-) -- 2.17.1