From: Ackerley Tng Move the detail about cpu_read_lock() and kvm_lock to where the acquisition order is mentioned. Signed-off-by: Ackerley Tng --- Documentation/virt/kvm/locking.rst | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Documentation/virt/kvm/locking.rst b/Documentation/virt/kvm/locking.rst index 5564c8b38b9cc..1e8cbbe3ba706 100644 --- a/Documentation/virt/kvm/locking.rst +++ b/Documentation/virt/kvm/locking.rst @@ -10,6 +10,11 @@ KVM Lock Overview The acquisition orders for mutexes are as follows: - cpus_read_lock() is taken outside kvm_lock + - Taking cpus_read_lock() outside of kvm_lock is problematic, + despite it being the official ordering, as it is quite easy to + unknowingly trigger cpus_read_lock() while holding kvm_lock. + Use caution when walking vm_list, e.g. avoid complex operations + when possible. - kvm_usage_lock is taken outside cpus_read_lock() @@ -28,13 +33,6 @@ The acquisition orders for mutexes are as follows: are taken on the waiting side when modifying memslots, so MMU notifiers must not take either kvm->slots_lock or kvm->slots_arch_lock. -cpus_read_lock() vs kvm_lock: - -- Taking cpus_read_lock() outside of kvm_lock is problematic, despite that - being the official ordering, as it is quite easy to unknowingly trigger - cpus_read_lock() while holding kvm_lock. Use caution when walking vm_list, - e.g. avoid complex operations when possible. - For SRCU: - ``synchronize_srcu(&kvm->srcu)`` is called inside critical sections -- 2.54.0.823.g6e5bcc1fc9-goog