aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Long <scottl@FreeBSD.org>2005-03-02 15:56:42 +0000
committerScott Long <scottl@FreeBSD.org>2005-03-02 15:56:42 +0000
commita6b86949fc76b7c8e1979818e74ff2b153e90bab (patch)
treec48910c2d463cee7ac6f508575d350d63e417ac7
parentbf7c33df9c0b7ef6028a1e5c13d3cbaf5323ecdf (diff)
downloadsrc-a6b86949fc76b7c8e1979818e74ff2b153e90bab.tar.gz
src-a6b86949fc76b7c8e1979818e74ff2b153e90bab.zip
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.
Notes
Notes: svn path=/head/; revision=143041
-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 95b2cebf3bc4..056793841678 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 a222f3e366a8..cecd1b49a47c 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