diff options
author | tychon <tychon@FreeBSD.org> | 2014-06-16 22:59:18 +0000 |
---|---|---|
committer | tychon <tychon@FreeBSD.org> | 2014-06-16 22:59:18 +0000 |
commit | bb415f07f03c465a3d6adf758dcbdfc35357027d (patch) | |
tree | 58b447d5992db5c5766e22dd4906cac8ced81cdd /sys/amd64 | |
parent | b7f08781d9c1141aeb22240403f1506138b43b5a (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/amd64/vmm/intel/vmx.c | 20 |
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); |