[PATCH v2 0/4] KVM: extract lock_all_vcpus/unlock_all_vcpus

Maxim Levitsky
2025-04-09T01:42:00Z

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