On Mon, 12 May 2025 19:04:04 +0100, Maxim Levitsky <mlevitsk@xxxxxxxxxx> wrote: > > In a few cases, usually in the initialization code, KVM locks all vCPUs > of a VM to ensure that userspace doesn't do funny things while KVM performs > an operation that affects the whole VM. > > Until now, all these operations were implemented using custom code, > and all of them share the same problem: > > Lockdep can't cope with simultaneous locking of a large number of locks of > the same class. > > However if these locks are taken while another lock is already held, > which is luckily the case, it is possible to take advantage of little known > _nest_lock feature of lockdep which allows in this case to have an > unlimited number of locks of same class to be taken. > > To implement this, create two functions: > kvm_lock_all_vcpus() and kvm_trylock_all_vcpus() > > Both functions are needed because some code that will be replaced in > the subsequent patches, uses mutex_trylock, instead of regular mutex_lock. > > Suggested-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > Signed-off-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx> Acked-by: Marc Zyngier <maz@xxxxxxxxxx> M. -- Without deviation from the norm, progress is not possible.