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