KVM: x86: hyper-v: Introduce kvm_hv_is_tlb_flush_hcall()
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> Reviewed-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20221101145426.251680-23-vkuznets@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
b0c9c25e46
commit
3c9eb0655f
1 changed files with 17 additions and 0 deletions
|
@ -177,6 +177,23 @@ static inline void kvm_hv_vcpu_purge_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);
|
||||
}
|
||||
|
||||
int kvm_hv_vcpu_flush_tlb(struct kvm_vcpu *vcpu);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue