On 6/13/22 15:38, Vitaly Kuznetsov wrote:
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).
I haven't reviewed the selftests part yet, but for the rest I only had two very small comments.
Paolo