• Sean Christopherson's avatar
    KVM: x86: Move clearing of TLB_FLUSH_CURRENT to kvm_vcpu_flush_tlb_all() · e94cea09
    Sean Christopherson authored
    
    
    Clear KVM_REQ_TLB_FLUSH_CURRENT in kvm_vcpu_flush_tlb_all() instead of in
    its sole caller that processes KVM_REQ_TLB_FLUSH.  Regardless of why/when
    kvm_vcpu_flush_tlb_all() is called, flushing "all" TLB entries also
    flushes "current" TLB entries.
    
    Ideally, there will never be another caller of kvm_vcpu_flush_tlb_all(),
    and moving the handling "requires" extra work to document the ordering
    requirement, but future Hyper-V paravirt TLB flushing support will add
    similar logic for flush "guest" (Hyper-V can flush a subset of "guest"
    entries).  And in the Hyper-V case, KVM needs to do more than just clear
    the request, the queue of GPAs to flush also needs to purged, and doing
    all only in the request path is undesirable as kvm_vcpu_flush_tlb_guest()
    does have multiple callers (though it's unlikely KVM's paravirt TLB flush
    will coincide with Hyper-V's paravirt TLB flush).
    
    Move the logic even though it adds extra "work" so that KVM will be
    consistent with how flush requests are processed when the Hyper-V support
    lands.
    
    No functional change intended.
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Message-Id: <20221101145426.251680-8-vkuznets@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    e94cea09
x86.c 356 KB