]> www.infradead.org Git - linux-platform-drivers-x86.git/commit
KVM: x86/mmu: Ensure TLBs are flushed when yielding during GFN range zap
authorSean Christopherson <seanjc@google.com>
Thu, 25 Mar 2021 20:01:17 +0000 (13:01 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 30 Mar 2021 17:19:55 +0000 (13:19 -0400)
commita835429cda91621fca915d80672a157b47738afb
treef7fc9e9c497b25df5d3ad9978ff47a7a7b290c94
parent1e28eed17697bcf343c6743f0028cc3b5dd88bf0
KVM: x86/mmu: Ensure TLBs are flushed when yielding during GFN range zap

When flushing a range of GFNs across multiple roots, ensure any pending
flush from a previous root is honored before yielding while walking the
tables of the current root.

Note, kvm_tdp_mmu_zap_gfn_range() now intentionally overwrites its local
"flush" with the result to avoid redundant flushes.  zap_gfn_range()
preserves and return the incoming "flush", unless of course the flush was
performed prior to yielding and no new flush was triggered.

Fixes: 1af4a96025b3 ("KVM: x86/mmu: Yield in TDU MMU iter even if no SPTES changed")
Cc: stable@vger.kernel.org
Reviewed-by: Ben Gardon <bgardon@google.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20210325200119.1359384-2-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/mmu/tdp_mmu.c