Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Jun 2014 01:38:03 +0000 (UTC)
From:      Neel Natu <neel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r267311 - head/sys/amd64/vmm/intel
Message-ID:  <201406100138.s5A1c3Ge059420@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: neel
Date: Tue Jun 10 01:38:02 2014
New Revision: 267311
URL: http://svnweb.freebsd.org/changeset/base/267311

Log:
  Turn on interrupt window exiting unconditionally when an ExtINT is being
  injected into the guest. This allows the hypervisor to inject another
  ExtINT or APIC vector as soon as the guest is able to process interrupts.
  
  This change is not to address any correctness issue but to guarantee that
  any pending APIC vector that was preempted by the ExtINT will be injected
  as soon as possible. Prior to this change such pending interrupts could be
  delayed until the next VM exit.

Modified:
  head/sys/amd64/vmm/intel/vmx.c

Modified: head/sys/amd64/vmm/intel/vmx.c
==============================================================================
--- head/sys/amd64/vmm/intel/vmx.c	Tue Jun 10 01:19:48 2014	(r267310)
+++ head/sys/amd64/vmm/intel/vmx.c	Tue Jun 10 01:38:02 2014	(r267311)
@@ -1311,9 +1311,13 @@ vmx_inject_interrupts(struct vmx *vmx, i
 		 * have posted another one.  If that is the case, set
 		 * the Interrupt Window Exiting execution control so
 		 * we can inject that one too.
+		 *
+		 * Also, interrupt window exiting allows us to inject any
+		 * pending APIC vector that was preempted by the ExtINT
+		 * as soon as possible. This applies both for the software
+		 * emulated vlapic and the hardware assisted virtual APIC.
 		 */
-		if (vm_extint_pending(vmx->vm, vcpu))
-			vmx_set_int_window_exiting(vmx, vcpu);
+		vmx_set_int_window_exiting(vmx, vcpu);
 	}
 
 	VCPU_CTR1(vmx->vm, vcpu, "Injecting hwintr at vector %d", vector);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406100138.s5A1c3Ge059420>