diff options
author | 2022-03-02 12:02:07 -0500 | |
---|---|---|
committer | 2022-03-08 10:55:27 -0500 | |
commit | 22b94c4b63ebf2cf976d6f4eba230105984a7eb6 (patch) | |
tree | a3e776d77f77f09abe80da38e1f9b504e8436320 /tools/perf/scripts/python/call-graph-from-sql.py | |
parent | KVM: x86/mmu: Defer TLB flush to caller when freeing TDP MMU shadow pages (diff) | |
download | linux-dev-22b94c4b63ebf2cf976d6f4eba230105984a7eb6.tar.xz linux-dev-22b94c4b63ebf2cf976d6f4eba230105984a7eb6.zip |
KVM: x86/mmu: Zap invalidated roots via asynchronous worker
Use the system worker threads to zap the roots invalidated
by the TDP MMU's "fast zap" mechanism, implemented by
kvm_tdp_mmu_invalidate_all_roots().
At this point, apart from allowing some parallelism in the zapping of
roots, the workqueue is a glorified linked list: work items are added and
flushed entirely within a single kvm->slots_lock critical section. However,
the workqueue fixes a latent issue where kvm_mmu_zap_all_invalidated_roots()
assumes that it owns a reference to all invalid roots; therefore, no
one can set the invalid bit outside kvm_mmu_zap_all_fast(). Putting the
invalidated roots on a linked list... erm, on a workqueue ensures that
tdp_mmu_zap_root_work() only puts back those extra references that
kvm_mmu_zap_all_invalidated_roots() had gifted to it.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'tools/perf/scripts/python/call-graph-from-sql.py')
0 files changed, 0 insertions, 0 deletions