diff options
author | scottl <scottl@FreeBSD.org> | 2003-02-19 21:58:34 +0000 |
---|---|---|
committer | scottl <scottl@FreeBSD.org> | 2003-02-19 21:58:34 +0000 |
commit | 6ececd4417e9635c5b55583283f2640c2fb05a6b (patch) | |
tree | 25035399bc17c6c584e99655dd9114daacea575c /sys/dev/aac/aac_pci.c | |
parent | e7c18881a0bf0ba8620d4b0347f9acf5623ff365 (diff) | |
download | FreeBSD-src-6ececd4417e9635c5b55583283f2640c2fb05a6b.zip FreeBSD-src-6ececd4417e9635c5b55583283f2640c2fb05a6b.tar.gz |
Make the aac driver be INTR_MPSAFE. Once the interrupt handler determines
that a command completion happened, all further processing is deferred to
a taskqueue. The taskqueue itself runs implicetely under Giant, but we
already used a taskqueue for the biodone() processing, so this at least
saves the contesting of Giant in the interrupt handler.
Diffstat (limited to 'sys/dev/aac/aac_pci.c')
-rw-r--r-- | sys/dev/aac/aac_pci.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/dev/aac/aac_pci.c b/sys/dev/aac/aac_pci.c index 6f6b7e3..85bd529 100644 --- a/sys/dev/aac/aac_pci.c +++ b/sys/dev/aac/aac_pci.c @@ -223,8 +223,9 @@ aac_pci_attach(device_t dev) #ifndef INTR_ENTROPY #define INTR_ENTROPY 0 #endif - if (bus_setup_intr(sc->aac_dev, sc->aac_irq, INTR_TYPE_BIO|INTR_ENTROPY, - aac_intr, sc, &sc->aac_intr)) { + if (bus_setup_intr(sc->aac_dev, sc->aac_irq, + INTR_MPSAFE|INTR_TYPE_BIO|INTR_ENTROPY, aac_intr, + sc, &sc->aac_intr)) { device_printf(sc->aac_dev, "can't set up interrupt\n"); goto out; } |