lkml.org 
[lkml]   [2020]   [Mar]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 21/37] KVM: SVM: Document the ASID logic in svm_flush_tlb()
    Date
    Add a comment in svm_flush_tlb() to document why it flushes only the
    current ASID, even when it is invoked when flushing remote TLBs.

    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    ---
    arch/x86/kvm/svm.c | 7 +++++++
    1 file changed, 7 insertions(+)

    diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
    index dfa3b53f8437..8c3700b44eb4 100644
    --- a/arch/x86/kvm/svm.c
    +++ b/arch/x86/kvm/svm.c
    @@ -5630,6 +5630,13 @@ static void svm_flush_tlb(struct kvm_vcpu *vcpu)
    {
    struct vcpu_svm *svm = to_svm(vcpu);

    + /*
    + * Flush only the current ASID even if the TLB flush was invoked via
    + * kvm_flush_remote_tlbs(). Although flushing remote TLBs requires all
    + * ASIDs to be flushed, KVM uses a single ASID for L1 and L2, and
    + * unconditionally does a TLB flush on both nested VM-Enter and nested
    + * VM-Exit (via kvm_mmu_reset_context()).
    + */
    if (static_cpu_has(X86_FEATURE_FLUSHBYASID))
    svm->vmcb->control.tlb_ctl = TLB_CONTROL_FLUSH_ASID;
    else
    --
    2.24.1
    \
     
     \ /
      Last update: 2020-03-20 22:29    [W:4.128 / U:2.572 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site