[PATCH v4 5/5] x86: KVM: SEV: implement kvm_lock_all_vcpus and use it
Peter Zijlstra
peterz at infradead.org
Sat May 3 03:08:20 PDT 2025
On Fri, May 02, 2025 at 01:57:13PM -0700, Sean Christopherson wrote:
> int kvm_lock_all_vcpus(struct kvm *kvm)
> {
> struct kvm_vcpu *vcpu;
> unsigned long i, j;
> int r;
>
> lockdep_assert_held(&kvm->lock);
So I agree that having this assertion here is probably good from a
read-code pov, however, strictly speaking, it is redundant in that:
> kvm_for_each_vcpu(i, vcpu, kvm) {
> r = mutex_lock_killable_nest_lock(&vcpu->mutex, &kvm->lock);
will implicitly assert kvm->lock is held. If you try to use an unheld
lock as nest lock, it will complain loudly :-)
(my inner pendant had to reply, ignore at will :-)
> if (r)
> goto out_unlock;
> }
> return 0;
>
> out_unlock:
> kvm_for_each_vcpu(j, vcpu, kvm) {
> if (i == j)
> break;
> mutex_unlock(&vcpu->mutex);
> }
> return r;
> }
> EXPORT_SYMBOL_GPL(kvm_lock_all_vcpus);
More information about the linux-arm-kernel
mailing list