• Paolo Bonzini's avatar
    KVM: x86/mmu: preserve pending TLB flush across calls to kvm_tdp_mmu_zap_sp · 315f02c6
    Paolo Bonzini authored
    Right now, if a call to kvm_tdp_mmu_zap_sp returns false, the caller
    will skip the TLB flush, which is wrong.  There are two ways to fix
    it:
    
    - since kvm_tdp_mmu_zap_sp will not yield and therefore will not flush
      the TLB itself, we could change the call to kvm_tdp_mmu_zap_sp to
      use "flush |= ..."
    
    - or we can chain the flush argument through kvm_tdp_mmu_zap_sp down
      to __kvm_tdp_mmu_zap_gfn_range.  Note that kvm_tdp_mmu_zap_sp will
      neither yield nor flush, so flush would never go from true to
      false.
    
    This patch does the former to simplify application to stable kernels,
    and to make it further clearer that kvm_tdp_mmu_zap_sp will not flush.
    
    Cc: seanjc@google.com
    Fixes: 048f4980 ("KVM: x86/mmu: Ensure TLBs are flushed for TDP MMU during NX zapping")
    Cc: <stable@vger.kernel.org> # 5.10.x: 048f4980: KVM: x86/mmu: Ensure TLBs are flushed for TDP MMU during NX zapping
    Cc: <stable@vger.kernel.org> # 5.10.x: 33a31641: KVM: x86/mmu: Don't allow TDP MMU to yield when recovering NX pages
    Cc: <stable@vger.kernel.org>
    Reviewed-by: default avatarSean Christopherson <seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    315f02c6
mmu.c 156 KB