On Tue, Sep 17, 2019 at 11:28 PM Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> wrote: > > Paolo Bonzini <pbonzini@xxxxxxxxxx> writes: > > > On 22/08/19 16:30, lantianyu1986@xxxxxxxxx wrote: > >> From: Tianyu Lan <Tianyu.Lan@xxxxxxxxxxxxx> > >> > >> This patchset is to add Hyper-V direct tlb support in KVM. Hyper-V > >> in L0 can delegate L1 hypervisor to handle tlb flush request from > >> L2 guest when direct tlb flush is enabled in L1. > >> > >> Patch 2 introduces new cap KVM_CAP_HYPERV_DIRECT_TLBFLUSH to enable > >> feature from user space. User space should enable this feature only > >> when Hyper-V hypervisor capability is exposed to guest and KVM profile > >> is hided. There is a parameter conflict between KVM and Hyper-V hypercall. > >> We hope L2 guest doesn't use KVM hypercall when the feature is > >> enabled. Detail please see comment of new API "KVM_CAP_HYPERV_DIRECT_TLBFLUSH" > >> > >> Change since v3: > >> - Update changelog in each patches. > >> > >> Change since v2: > >> - Move hv assist page(hv_pa_pg) from struct kvm to struct kvm_hv. > >> > >> Change since v1: > >> - Fix offset issue in the patch 1. > >> - Update description of KVM KVM_CAP_HYPERV_DIRECT_TLBFLUSH. > >> > >> Tianyu Lan (2): > >> x86/Hyper-V: Fix definition of struct hv_vp_assist_page > >> KVM/Hyper-V: Add new KVM capability KVM_CAP_HYPERV_DIRECT_TLBFLUSH > >> > >> Vitaly Kuznetsov (1): > >> KVM/Hyper-V/VMX: Add direct tlb flush support > >> > >> Documentation/virtual/kvm/api.txt | 13 +++++++++++++ > >> arch/x86/include/asm/hyperv-tlfs.h | 24 ++++++++++++++++++----- > >> arch/x86/include/asm/kvm_host.h | 4 ++++ > >> arch/x86/kvm/vmx/evmcs.h | 2 ++ > >> arch/x86/kvm/vmx/vmx.c | 39 ++++++++++++++++++++++++++++++++++++++ > >> arch/x86/kvm/x86.c | 8 ++++++++ > >> include/uapi/linux/kvm.h | 1 + > >> 7 files changed, 86 insertions(+), 5 deletions(-) > >> > > > > Queued, thanks. > > > > I had a suggestion how we can get away without the new capability (like > direct tlb flush gets automatically enabled when Hyper-V hypercall page > is activated and we know we can't handle KVM hypercalls any more) > but this can probably be done as a follow-up. > Hi Vital'y: Actually, I have tried your proposal but it turns out KVM in L1 fails to enable direct tlb flush most time after nested VM starts. "hv_enlightenments_control. nested_flush_hypercall" flag in evmcs is cleared by Hyper-V after run nested VM. I still wait answer from Hyper-V team. So far, it looks like enabling direct tlb flush before start nested VM is a safe way.Once get more infomration from Hyper-V team and we may have a look to how to enable your proposal. -- Best regards Tianyu Lan