summaryrefslogtreecommitdiffstats
path: root/sys/amd64/vmm/intel
diff options
context:
space:
mode:
authortychon <tychon@FreeBSD.org>2014-06-16 22:59:18 +0000
committertychon <tychon@FreeBSD.org>2014-06-16 22:59:18 +0000
commitbb415f07f03c465a3d6adf758dcbdfc35357027d (patch)
tree58b447d5992db5c5766e22dd4906cac8ced81cdd /sys/amd64/vmm/intel
parentb7f08781d9c1141aeb22240403f1506138b43b5a (diff)
downloadFreeBSD-src-bb415f07f03c465a3d6adf758dcbdfc35357027d.zip
FreeBSD-src-bb415f07f03c465a3d6adf758dcbdfc35357027d.tar.gz
Bring an overly enthusiastic KASSERT inline with the Intel SDM.
Reviewed by: neel
Diffstat (limited to 'sys/amd64/vmm/intel')
-rw-r--r--sys/amd64/vmm/intel/vmx.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/sys/amd64/vmm/intel/vmx.c b/sys/amd64/vmm/intel/vmx.c
index ec62854..2cbb159 100644
--- a/sys/amd64/vmm/intel/vmx.c
+++ b/sys/amd64/vmm/intel/vmx.c
@@ -1258,12 +1258,28 @@ vmx_inject_interrupts(struct vmx *vmx, int vcpu, struct vlapic *vlapic)
/* Ask the local apic for a vector to inject */
if (!vlapic_pending_intr(vlapic, &vector))
return;
+
+ /*
+ * From the Intel SDM, Volume 3, Section "Maskable
+ * Hardware Interrupts":
+ * - maskable interrupt vectors [16,255] can be delivered
+ * through the local APIC.
+ */
+ KASSERT(vector >= 16 && vector <= 255,
+ ("invalid vector %d from local APIC", vector));
} else {
/* Ask the legacy pic for a vector to inject */
vatpic_pending_intr(vmx->vm, &vector);
- }
- KASSERT(vector >= 32 && vector <= 255, ("invalid vector %d", vector));
+ /*
+ * From the Intel SDM, Volume 3, Section "Maskable
+ * Hardware Interrupts":
+ * - maskable interrupt vectors [0,255] can be delivered
+ * through the INTR pin.
+ */
+ KASSERT(vector >= 0 && vector <= 255,
+ ("invalid vector %d from INTR", vector));
+ }
/* Check RFLAGS.IF and the interruptibility state of the guest */
rflags = vmcs_read(VMCS_GUEST_RFLAGS);
OpenPOWER on IntegriCloud