Index: sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c =================================================================== --- sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c +++ sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c @@ -382,8 +382,12 @@ #ifdef HYPERV extern inthand_t IDTVEC(rsvd), IDTVEC(hv_vmbus_callback); +#define VMBUS_IDT_START IDT_DTRACE_RET +#define VMBUS_IDT_END APIC_TIMER_INT + /** * @brief Find a free IDT slot and setup the interrupt handler. + * range: (VMBUS_IDT_START, VMBUS_IDT_END) */ static int vmbus_vector_alloc(void) @@ -397,8 +401,8 @@ * as vmbus channel callback vector. We install 'hv_vmbus_callback' * handler at that vector and use it to interrupt vcpus. */ - vector = APIC_SPURIOUS_INT; - while (--vector >= APIC_IPI_INTS) { + vector = VMBUS_IDT_END; + while (--vector > VMBUS_IDT_START) { ip = &idt[vector]; func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset); if (func == (uintptr_t)&IDTVEC(rsvd)) { @@ -428,7 +432,7 @@ if (vector == 0) return; - KASSERT(vector >= APIC_IPI_INTS && vector < APIC_SPURIOUS_INT, + KASSERT(vector > VMBUS_IDT_START && vector < VMBUS_IDT_END, ("invalid vector %d", vector)); ip = &idt[vector];