diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2022-03-02 20:02:07 +0300 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2022-03-08 18:55:27 +0300 |
commit | 22b94c4b63ebf2cf976d6f4eba230105984a7eb6 (patch) | |
tree | a3e776d77f77f09abe80da38e1f9b504e8436320 /tools/perf/scripts/python/exported-sql-viewer.py | |
parent | bb95dfb9e2dfbe6b3f5eb5e8a20e0259dadbe906 (diff) | |
download | linux-22b94c4b63ebf2cf976d6f4eba230105984a7eb6.tar.xz |
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/exported-sql-viewer.py')
0 files changed, 0 insertions, 0 deletions