From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [PATCH] KVM: nVMX: Fix injection of PENDING_INTERRUPT and NMI_WINDOW exits to L1 Date: Sat, 16 Feb 2013 13:08:43 +0100 Message-ID: <511F76CB.2000405@web.de> References: <511F72B8.6060305@web.de> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="----enig2MDXUXHHQBWCHTMFGLWVN" Cc: kvm , Nadav Har'El , "Nakajima, Jun" To: Gleb Natapov , Marcelo Tosatti Return-path: Received: from mout.web.de ([212.227.17.12]:53568 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752949Ab3BPMIx (ORCPT ); Sat, 16 Feb 2013 07:08:53 -0500 In-Reply-To: <511F72B8.6060305@web.de> Sender: kvm-owner@vger.kernel.org List-ID: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) ------enig2MDXUXHHQBWCHTMFGLWVN Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 2013-02-16 12:51, Jan Kiszka wrote: > From: Jan Kiszka >=20 > The comment was wrong: enable_irq_window might be called after > prepare_vmcs02 when we left L2 to prepare IRQ injecting for L1. Same fo= r > NMIs. >=20 > Signed-off-by: Jan Kiszka > --- > arch/x86/kvm/vmx.c | 10 +++------- > 1 files changed, 3 insertions(+), 7 deletions(-) >=20 > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > index 81a25de..68a045ae 100644 > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -6113,14 +6113,10 @@ static bool nested_vmx_exit_handled(struct kvm_= vcpu *vcpu) > case EXIT_REASON_TRIPLE_FAULT: > return 1; > case EXIT_REASON_PENDING_INTERRUPT: > + return nested_cpu_has(vmcs12, CPU_BASED_VIRTUAL_INTR_PENDING); > case EXIT_REASON_NMI_WINDOW: > - /* > - * prepare_vmcs02() set the CPU_BASED_VIRTUAL_INTR_PENDING bit > - * (aka Interrupt Window Exiting) only when L1 turned it on, > - * so if we got a PENDING_INTERRUPT exit, this must be for L1. > - * Same for NMI Window Exiting. > - */ > - return 1; > + return vmcs12->pin_based_vm_exec_control & > + PIN_BASED_NMI_EXITING; > case EXIT_REASON_TASK_SWITCH: > return 1; > case EXIT_REASON_CPUID: >=20 No, this is wrong. I first wrote a patch that ignored enable_irq_window when the guest is not interested in external IRQs. But then I thought that wasn't correct. I tend to believe now my first idea was better. Need to rethink. Jan ------enig2MDXUXHHQBWCHTMFGLWVN Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlEfdtAACgkQitSsb3rl5xSUxACeKRHLqxosj9pq1jbchNjXTnWJ RWkAniaymrOTJwP98DQfcEjwOcB//kSG =0Q3E -----END PGP SIGNATURE----- ------enig2MDXUXHHQBWCHTMFGLWVN--