Implement Paolo's suggestion of reusing sev_lock/unlock_vcpus_for_migration in arm and riscv code for the purpose of taking vcpu->mutex of all vcpus of a VM. Because sev_lock/unlock_vcpus_for_migration already have a workaround for lockdep max lock depth, this fixes the lockdep warnings on arm which were the inspiration for this refactoring. This patch series was only compile tested on all 3 architectures. V2: added trylock option to kvm_lock_all_vcpus to be better compatible with the orginal code. Best regards, Maxim Levitsky Maxim Levitsky (4): locking/mutex: implement mutex_trylock_nested KVM: x86: move sev_lock/unlock_vcpus_for_migration to kvm_main.c KVM: arm64: switch to using kvm_lock/unlock_all_vcpus RISC-V: KVM: switch to kvm_lock/unlock_all_vcpus arch/arm64/include/asm/kvm_host.h | 3 -- arch/arm64/kvm/arch_timer.c | 4 +- arch/arm64/kvm/arm.c | 43 ---------------- arch/arm64/kvm/vgic/vgic-init.c | 4 +- arch/arm64/kvm/vgic/vgic-its.c | 8 +-- arch/arm64/kvm/vgic/vgic-kvm-device.c | 12 ++--- arch/riscv/kvm/aia_device.c | 34 +------------ arch/x86/kvm/svm/sev.c | 65 ++---------------------- include/linux/kvm_host.h | 6 +++ include/linux/mutex.h | 8 +++ kernel/locking/mutex.c | 14 ++++-- virt/kvm/kvm_main.c | 71 +++++++++++++++++++++++++++ 12 files changed, 116 insertions(+), 156 deletions(-) -- 2.26.3