summaryrefslogtreecommitdiff
path: root/sys/arch/sparc64/dev
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2013-05-16 06:31:51 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2013-05-16 06:31:51 +0000
commitda62f7b2f76553baad775458cdff748622164daf (patch)
treee9f41c1bac1e70c4e599ace59e0554b368cf467c /sys/arch/sparc64/dev
parent5dd7ac28141e59628398542da509a2f0efdbecb1 (diff)
Run audio interrupts without grabbing the kernel lock. While IPL_SERIAL is
higher than IPL_AUDIO on sparc64, and interrupt handlers running at IPL_SERIAL still grab the kernel lock, this isn't a problem as machines with audioce(4) are guaranteed not to have zs(4) (the only driver that uses IPL_SERIAL).
Diffstat (limited to 'sys/arch/sparc64/dev')
-rw-r--r--sys/arch/sparc64/dev/ce4231.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/arch/sparc64/dev/ce4231.c b/sys/arch/sparc64/dev/ce4231.c
index f5db2c691e0..a86d1192246 100644
--- a/sys/arch/sparc64/dev/ce4231.c
+++ b/sys/arch/sparc64/dev/ce4231.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ce4231.c,v 1.29 2013/05/15 08:29:23 ratchov Exp $ */
+/* $OpenBSD: ce4231.c,v 1.30 2013/05/16 06:31:50 kettenis Exp $ */
/*
* Copyright (c) 1999 Jason L. Wright (jason@thought.net)
@@ -240,13 +240,15 @@ ce4231_attach(parent, self, aux)
}
sc->sc_cih = bus_intr_establish(sc->sc_bustag, ea->ea_intrs[0],
- IPL_AUDIO, 0, ce4231_cintr, sc, self->dv_xname);
+ IPL_AUDIO, BUS_INTR_ESTABLISH_MPSAFE, ce4231_cintr,
+ sc, self->dv_xname);
if (sc->sc_cih == NULL) {
printf(": couldn't establish capture interrupt\n");
return;
}
sc->sc_pih = bus_intr_establish(sc->sc_bustag, ea->ea_intrs[1],
- IPL_AUDIO, 0, ce4231_pintr, sc, self->dv_xname);
+ IPL_AUDIO, BUS_INTR_ESTABLISH_MPSAFE, ce4231_pintr,
+ sc, self->dv_xname);
if (sc->sc_pih == NULL) {
printf(": couldn't establish play interrupt1\n");
return;