Index: sys/dev/ioat/ioat.c =================================================================== --- sys/dev/ioat/ioat.c +++ sys/dev/ioat/ioat.c @@ -220,8 +220,6 @@ goto err; ioat->version = ioat_read_cbver(ioat); - ioat_interrupt_setup(ioat); - if (ioat->version < IOAT_VER_3_0) { error = ENODEV; goto err; @@ -407,6 +405,10 @@ ioat_write_chancmp(ioat, ioat->comp_update_bus_addr); ioat_write_chainaddr(ioat, ring[0]->hw_desc_bus_addr); + error = ioat_interrupt_setup(ioat); + if (error != 0) + return (error); + error = ioat3_selftest(ioat); if (error != 0) return (error); Index: sys/dev/ioat/ioat_hw.h =================================================================== --- sys/dev/ioat/ioat_hw.h +++ sys/dev/ioat/ioat_hw.h @@ -39,6 +39,7 @@ #define IOAT_INTRCTRL_OFFSET 0x03 #define IOAT_INTRCTRL_MASTER_INT_EN 0x01 +#define IOAT_INTRCTRL_MSIX_VECTOR_CONTROL 0x08 #define IOAT_ATTNSTATUS_OFFSET 0x04