Re: [PATCH v7 00/39] KVM: x86: hyper-v: Fine-grained TLB flush + L2 TLB flush features

From: Paolo Bonzini
Date: Tue Jun 21 2022 - 09:01:29 EST


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