On (21/06/05 11:15), Marc Zyngier wrote: > > For the time being kvm_set_guest_paused() errors out when > > !vcpu->arch.pv_time_enabled, but this probably can change in the > > future (who knows?). So shall I check vcpu->arch.pv_time_enabled in > > kvm_arch_suspend_notifier()? > > That, or check for the -EINVAL return value. I suppose this should do the trick then (hate to do `int ret = 0`, but we can have no VCPUs with enabled pv_time) --- +static int kvm_arch_suspend_notifier(struct kvm *kvm) +{ + struct kvm_vcpu *vcpu; + int i, ret = 0; + + mutex_lock(&kvm->lock); + kvm_for_each_vcpu(i, vcpu, kvm) { + if (!vcpu->arch.pv_time_enabled) + continue; + + ret = kvm_set_guest_paused(vcpu); + if (ret) { + pr_err("Failed to pause guest VCPU%d: %d\n", + vcpu->vcpu_id, ret); + break; + } + } + mutex_unlock(&kvm->lock); + + return ret ? NOTIFY_BAD : NOTIFY_DONE; +}