summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorscottl <scottl@FreeBSD.org>2005-03-02 15:56:42 +0000
committerscottl <scottl@FreeBSD.org>2005-03-02 15:56:42 +0000
commitcee9e98f0ee1c954b22e9d755db15444797bf2ee (patch)
treec48910c2d463cee7ac6f508575d350d63e417ac7
parent0724297b39f19c3ae6a3f32a46052298f4fff0a8 (diff)
downloadFreeBSD-src-cee9e98f0ee1c954b22e9d755db15444797bf2ee.zip
FreeBSD-src-cee9e98f0ee1c954b22e9d755db15444797bf2ee.tar.gz
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.
-rw-r--r--sys/dev/esp/esp_sbus.c2
-rw-r--r--sys/dev/esp/ncr53c9x.c2
2 files changed, 1 insertions, 3 deletions
diff --git a/sys/dev/esp/esp_sbus.c b/sys/dev/esp/esp_sbus.c
index 95b2ceb..0567938 100644
--- a/sys/dev/esp/esp_sbus.c
+++ b/sys/dev/esp/esp_sbus.c
@@ -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;
}
diff --git a/sys/dev/esp/ncr53c9x.c b/sys/dev/esp/ncr53c9x.c
index a222f3e..cecd1b4 100644
--- a/sys/dev/esp/ncr53c9x.c
+++ b/sys/dev/esp/ncr53c9x.c
@@ -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
OpenPOWER on IntegriCloud