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

Sean Christopherson
2025-04-09T19:53:49Z

+Adrian

On Tue, Apr 08, 2025, Maxim Levitsky wrote:
> Implement Paolo's suggestion of reusing

Ha! I *knew* this felt familiar when I suggested extracting (un)lock_all_vcpus()
to common code in the context of the TDX series.

https://lore.kernel.org/all/Z-V0qyTn2bXdrPF7@google.com

> 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
>
>