diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2013-05-16 06:31:51 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2013-05-16 06:31:51 +0000 |
commit | da62f7b2f76553baad775458cdff748622164daf (patch) | |
tree | e9f41c1bac1e70c4e599ace59e0554b368cf467c /sys/arch/sparc64/dev | |
parent | 5dd7ac28141e59628398542da509a2f0efdbecb1 (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.c | 8 |
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; |