Fix a bug where KVM incorrectly skips an "all_cpus" IPI request, and misc
cleanups and enhancements for KVM handling of Hyper-V hypercalls.
Based on kvm/queue, commit 1cf84614b04a ("KVM: x86: Exit to ...").
v3:
- Collect reviews. [Vitaly]
- Add BUILD_BUG_ON() to protect KVM_HV_MAX_SPARSE_VCPU_SET_BITS. [Vitaly]
- Fix misc typos. [Vitaly]
- Opportunistically rename "cnt" to "rep_cnt" in tracepoint. [Vitaly]
- Drop var_cnt checks for debug hypercalls due to lack of documentation
as to their expected behavior. [Vitaly]
- Tweak the changelog regarding the TLFS spec issue to reference the
bug filed by Vitaly.
v2: https://lore.kernel.org/all/20211030000800.3065132-1-seanjc@xxxxxxxxxx/
Sean Christopherson (8):
KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI
req
KVM: x86: Get the number of Hyper-V sparse banks from the VARHEAD
field
KVM: x86: Refactor kvm_hv_flush_tlb() to reduce indentation
KVM: x86: Add a helper to get the sparse VP_SET for IPIs and TLB
flushes
KVM: x86: Don't bother reading sparse banks that end up being ignored
KVM: x86: Shove vp_bitmap handling down into sparse_set_to_vcpu_mask()
KVM: x86: Reject fixeds-size Hyper-V hypercalls with non-zero
"var_cnt"
KVM: x86: Add checks for reserved-to-zero Hyper-V hypercall fields
arch/x86/kvm/hyperv.c | 175 ++++++++++++++++++------------
arch/x86/kvm/trace.h | 14 ++-
include/asm-generic/hyperv-tlfs.h | 7 ++
3 files changed, 123 insertions(+), 73 deletions(-)