The existing locking in the esp driver appears to be fairly adequate, so
set the interrupt handler to be INTR_MPSAFE now that xpt_done() can be called without Giant. Giant is still on the top half of the driver and the timeout handlers.
This commit is contained in:
parent
bf7c33df9c
commit
a6b86949fc
@ -434,7 +434,7 @@ espattach(struct esp_softc *esc, struct ncr53c9x_glue *gluep)
|
||||
return;
|
||||
}
|
||||
if (bus_setup_intr(esc->sc_dev, esc->sc_irqres,
|
||||
INTR_TYPE_BIO|INTR_ENTROPY, ncr53c9x_intr, sc, &esc->sc_irq)) {
|
||||
INTR_TYPE_BIO|INTR_MPSAFE, ncr53c9x_intr, sc, &esc->sc_irq)) {
|
||||
device_printf(esc->sc_dev, "Cannot set up interrupt\n");
|
||||
return;
|
||||
}
|
||||
|
@ -1289,9 +1289,7 @@ ncr53c9x_done(struct ncr53c9x_softc *sc, struct ncr53c9x_ecb *ecb)
|
||||
|
||||
ncr53c9x_free_ecb(sc, ecb);
|
||||
ti->cmds++;
|
||||
mtx_unlock(&sc->sc_lock);
|
||||
xpt_done(ccb);
|
||||
mtx_lock(&sc->sc_lock);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user