lkml.org 
[lkml]   [2022]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v7 16/39] KVM: x86: hyper-v: Introduce kvm_hv_is_tlb_flush_hcall()
    Date
    The newly introduced helper checks whether vCPU is performing a
    Hyper-V TLB flush hypercall. This is required to filter out L2 TLB
    flush hypercalls for processing.

    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    ---
    arch/x86/kvm/hyperv.h | 18 ++++++++++++++++++
    1 file changed, 18 insertions(+)

    diff --git a/arch/x86/kvm/hyperv.h b/arch/x86/kvm/hyperv.h
    index 207d24efdc5a..dc46c5ed5d18 100644
    --- a/arch/x86/kvm/hyperv.h
    +++ b/arch/x86/kvm/hyperv.h
    @@ -171,6 +171,24 @@ static inline void kvm_hv_vcpu_empty_flush_tlb(struct kvm_vcpu *vcpu)

    kfifo_reset_out(&tlb_flush_fifo->entries);
    }
    +
    +static inline bool kvm_hv_is_tlb_flush_hcall(struct kvm_vcpu *vcpu)
    +{
    + struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
    + u16 code;
    +
    + if (!hv_vcpu)
    + return false;
    +
    + code = is_64_bit_hypercall(vcpu) ? kvm_rcx_read(vcpu) :
    + kvm_rax_read(vcpu);
    +
    + return (code == HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE ||
    + code == HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST ||
    + code == HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE_EX ||
    + code == HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST_EX);
    +}
    +
    void kvm_hv_vcpu_flush_tlb(struct kvm_vcpu *vcpu);


    --
    2.35.3
    \
     
     \ /
      Last update: 2022-06-13 19:58    [W:4.156 / U:0.320 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site