(description is for 5.4-STABLE, applies to -current as well) In ips/ips.c, the Morpheus-specific function ips_morpheus_intr(): mtx_lock(&sc->queue_mtx); ips_morpheus_check_intr(sc); mtx_unlock(&sc->queue_mtx); Yet ips_morpheus_check_intr() does the same mtx_unlock(): if(!(oisr & MORPHEUS_BIT_CMD_IRQ)){ DEVICE_PRINTF(2,sc->dev, "got a non-command irq\n"); mtx_unlock(&sc->queue_mtx); return (0); } causing a panic. Fix: The attached patch to src/sys/dev/ips/ips.c removes the mtx_unlock in ips.c::ips_morpheus_check_intr(). However, looking at the diff between revision 1.15 and 1.16 of ips.c in ips_morpheus_intr(), other changes may be necesary.. How-To-Repeat: Inititialize the ips driver when using a Morpheus card.
State Changed From-To: open->closed Fixed by scottl on May 6, Thanks for reporting!