From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [PATCH 2/3] KVM: nVMX: Fix conditions for NMI and interrupt injection Date: Thu, 14 Mar 2013 16:33:28 +0100 Message-ID: <5141EDC8.7090607@siemens.com> References: <20130314135951.GT11223@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Marcelo Tosatti , kvm , Paolo Bonzini , "Nadav Har'El" To: Gleb Natapov Return-path: Received: from thoth.sbs.de ([192.35.17.2]:27532 "EHLO thoth.sbs.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755785Ab3CNPdk (ORCPT ); Thu, 14 Mar 2013 11:33:40 -0400 In-Reply-To: <20130314135951.GT11223@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 2013-03-14 14:59, Gleb Natapov wrote: > On Wed, Mar 13, 2013 at 05:53:45PM +0100, Jan Kiszka wrote: >> If we are in guest mode, L0 can only inject events into L2 if L1 has >> nothing pending. Otherwise, L0 would overwrite L1's events and they >> would get lost. This check is conceptually independent of >> nested_exit_on_intr. >> >> If L1 traps external interrupts, then we also need to look at L1's >> idt_vectoring_info_field. If it is empty, we can kick the guest from L2 >> to L1, just like the previous code worked. >> >> Finally, the logic for checking interrupt has to be applied also on NMIs >> in an analogous way. This enables NMI interception for nested guests. >> >> Signed-off-by: Jan Kiszka >> --- >> arch/x86/kvm/vmx.c | 59 ++++++++++++++++++++++++++++++++++++++++++++------- >> 1 files changed, 51 insertions(+), 8 deletions(-) >> >> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c >> index b50174d..10de336 100644 >> --- a/arch/x86/kvm/vmx.c >> +++ b/arch/x86/kvm/vmx.c >> @@ -4211,6 +4211,12 @@ static bool nested_exit_on_intr(struct kvm_vcpu *vcpu) >> PIN_BASED_EXT_INTR_MASK; >> } >> >> +static bool nested_exit_on_nmi(struct kvm_vcpu *vcpu) >> +{ >> + return get_vmcs12(vcpu)->pin_based_vm_exec_control & >> + PIN_BASED_NMI_EXITING; >> +} >> + > It will take me some time to review this, but I have a small nit now. > You open code checking of this bit in your previous patch, why not move > this hunk there? True. Patch 1 is several weeks older, and I didn't recheck this. Will clean it up. Jan -- Siemens AG, Corporate Technology, CT RTC ITP SDP-DE Corporate Competence Center Embedded Linux