Changes since v6:
- Rebase to the latest kvm/queue [8baacf67c76c], newly introduced
selftests had to be adapted to the overhauled API [blame Sean].
- Rename 'entry' to 'flush_all_entry' in hv_tlb_flush_enqueue() [Max].
- Add "KVM: selftests: Rename 'evmcs_test' to 'hyperv_evmcs'" patch.
- Collect R-b tags.
Original description:
Currently, KVM handles HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST{,EX} requests
by flushing the whole VPID and this is sub-optimal. This series introduces
the required mechanism to make handling of these requests more
fine-grained by flushing individual GVAs only (when requested). On this
foundation, "Direct Virtual Flush" Hyper-V feature is implemented. The
feature allows L0 to handle Hyper-V TLB flush hypercalls directly at
L0 without the need to reflect the exit to L1. This has at least two
benefits: reflecting vmexit and the consequent vmenter are avoided + L0
has precise information whether the target vCPU is actually running (and
thus requires a kick).