aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/scripts/python/call-graph-from-sql.py
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2022-03-02 12:02:07 -0500
committerPaolo Bonzini <pbonzini@redhat.com>2022-03-08 10:55:27 -0500
commit22b94c4b63ebf2cf976d6f4eba230105984a7eb6 (patch)
treea3e776d77f77f09abe80da38e1f9b504e8436320 /tools/perf/scripts/python/call-graph-from-sql.py
parentKVM: x86/mmu: Defer TLB flush to caller when freeing TDP MMU shadow pages (diff)
downloadlinux-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