From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: Crash of guest with nested vmx with Unknown nested vmexit reason 80000021. Date: Thu, 16 Oct 2014 07:41:49 +0100 Message-ID: <543F84CD020000780003F02A@mail.emea.novell.com> References: <542AD266.5030803@grosc.com> <5433B94E020000780003CBF0@mail.emea.novell.com> <5437B593.80702@grosc.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Yang Z Zhang Cc: Kevin Tian , Eddie Dong , Jeroen Groenewegen van der Weyden , Jun Nakajima , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org >>> On 16.10.14 at 08:18, wrote: > Sorry for the later reply. Yes, this is a known issue to me but I didn't > have time to cook a patch fix it. As Jan pointed out, the NMI handling logic > is wrong in current nested logic. But it is not a trivial task to fix them. I > will do it once I have the time or if you are interesting in it, a patch from > you is welcome. If you were to at least comment on the two possible routes I outlined (quoted below), I could see to get to this (considering that the issue - as you point out subsequently - got brought up more than half a year ago the first time, and is still unaddressed) at least if the vmx_idtv_reinject() related route would be a possible one. Jan >>>> From: Jan Beulich [mailto:JBeulich@suse.com] >>>> So the problem here is that >>>> >>>>> (XEN) Interruptibility=0008 ActivityState=0000 >>>> VMX_INTR_SHADOW_NMI is set while >>>> >>>>> (XEN) PinBased=0000003f CPUBased=b6b9e5fa SecondaryExec=000004eb >>>> PIN_BASED_VIRTUAL_NMIS is active and >>>> >>>>> (XEN) VMEntry: intr_info=80000202 errcode=5d021101 ilen=00000003 >>>>> (XEN) VMExit: intr_info=00000000 errcode=00000000 ilen=00000003 >>>>> (XEN) reason=80000021 qualification=00000000 >>>>> (XEN) IDTVectoring: info=80000202 errcode=00000000 >>>> an NMI is being injected. This case is explicitly mentioned in Vol >>>> 3 section 31.7.1.2 (Resuming Guest Software after Handling an >>>> Exception). Either there needs to be extra code in vvmx.c to clear >>>> VMX_INTR_SHADOW_NMI (as the second sub-bullet point of the last >>>> bullet point says), or the second half of vmx_idtv_reinject() needs >>>> to be done without regard to nestedhvm_vcpu_in_guestmode(v) (and >>>> maybe also without regard to EXIT_REASON_TASK_SWITCH). >>>> >>>> Speaking of SDM sections: There are quite a few references in the >>>> code that name just section numbers (in the case here, several >>>> references to sections 25.7.1.* exist). These numbers become stale >>>> quite quickly (here they're now 31.7.1.*), so in order to help >>>> digging through issues like the one here, can I please ask one of >>>> you to go through and replace (or at least amend) these numbers >>>> with the sections' titles (which I hope won't get altered that quickly)?