aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Documentation/virt
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2024-01-08 08:10:32 -0500
committerPaolo Bonzini <pbonzini@redhat.com>2024-01-08 08:10:32 -0500
commit7f26fea9bc085290e3731501f4f8fc5b82b9d615 (patch)
tree8b26afdd1254db892073fe5e819c32b161ba193f /Documentation/virt
parentMerge tag 'kvm-x86-xen-6.8' of https://github.com/kvm-x86/linux into HEAD (diff)
parentKVM: x86/mmu: fix comment about mmu_unsync_pages_lock (diff)
downloadwireguard-linux-7f26fea9bc085290e3731501f4f8fc5b82b9d615.tar.xz
wireguard-linux-7f26fea9bc085290e3731501f4f8fc5b82b9d615.zip
Merge tag 'kvm-x86-mmu-6.8' of https://github.com/kvm-x86/linux into HEAD
KVM x86 MMU changes for 6.8: - Fix a relatively benign off-by-one error when splitting huge pages during CLEAR_DIRTY_LOG. - Fix a bug where KVM could incorrectly test-and-clear dirty bits in non-leaf TDP MMU SPTEs if a racing thread replaces a huge SPTE with a non-huge SPTE. - Relax the TDP MMU's lockdep assertions related to holding mmu_lock for read versus write so that KVM doesn't pass "bool shared" all over the place just to have precise assertions in paths that don't actually care about whether the caller is a reader or a writer.
Diffstat (limited to 'Documentation/virt')
-rw-r--r--Documentation/virt/kvm/locking.rst7
1 files changed, 3 insertions, 4 deletions
diff --git a/Documentation/virt/kvm/locking.rst b/Documentation/virt/kvm/locking.rst
index 3a034db5e55f..02880d5552d5 100644
--- a/Documentation/virt/kvm/locking.rst
+++ b/Documentation/virt/kvm/locking.rst
@@ -43,10 +43,9 @@ On x86:
- vcpu->mutex is taken outside kvm->arch.hyperv.hv_lock and kvm->arch.xen.xen_lock
-- kvm->arch.mmu_lock is an rwlock. kvm->arch.tdp_mmu_pages_lock and
- kvm->arch.mmu_unsync_pages_lock are taken inside kvm->arch.mmu_lock, and
- cannot be taken without already holding kvm->arch.mmu_lock (typically with
- ``read_lock`` for the TDP MMU, thus the need for additional spinlocks).
+- kvm->arch.mmu_lock is an rwlock; critical sections for
+ kvm->arch.tdp_mmu_pages_lock and kvm->arch.mmu_unsync_pages_lock must
+ also take kvm->arch.mmu_lock
Everything else is a leaf: no other lock is taken inside the critical
sections.