Originally queue_lock was an LWKT reader-writer locks, which permitted
multiple locks by the same thread, and in fact there are few code paths
where such multiple locking is used. Doing the similar thing with lockmgr
lock without either LK_NOWAIT or LK_CANRECURSE triggers a panic.
sc->ips_ich.ich_func = ips_intrhook;
sc->ips_ich.ich_arg = sc;
sc->ips_ich.ich_desc = "ips";
- lockinit(&sc->queue_lock, "ipslk", 0, 0);
+ lockinit(&sc->queue_lock, "ipslk", 0, LK_CANRECURSE);
bioq_init(&sc->bio_queue);
if (config_intrhook_establish(&sc->ips_ich) != 0) {
kprintf("IPS can't establish configuration hook\n");