On Sun, Feb 24, 2013 at 03:08:53PM +0100, Jan Kiszka wrote:
> From: Jan Kiszka <[email protected]>

> @@ -2390,6 +2390,21 @@ static int nested_svm_vmexit(struct vcpu_svm *svm)
>       return 0;
>  }
>  +static bool nested_svm_handle_init_received(struct kvm_vcpu *vcpu)
> +{
> +     struct vcpu_svm *svm = to_svm(vcpu);
> +
> +     if (!is_guest_mode(vcpu) ||
> +         !(svm->nested.intercept & (1ULL << INTERCEPT_INIT)))
> +             return false;
> +
> +     svm->vmcb->control.exit_code     = SVM_EXIT_INIT;
> +     svm->vmcb->control.exit_int_info = 0;
> +     nested_svm_vmexit(svm);
> +
> +     return true;
> +}

[...]

> +     if (vcpu->arch.mp_state == KVM_MP_STATE_INIT_RECEIVED &&
> +         kvm_x86_ops->handle_init_received(vcpu)) {
> +             /* nested vmexit, L1 is runnable now */
> +             vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE;
> +             return 1;
> +     }

Hmm, looks like the INIT signal is lost after the VMEXIT. But on SVM the
INIT signal is still pending an will be delivered when GIF becomes one
again. Do I miss anything?


        Joerg


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to