summaryrefslogtreecommitdiff
path: root/sys/dev/isa
diff options
context:
space:
mode:
authorKenneth R Westerback <krw@cvs.openbsd.org>2007-08-15 02:04:31 +0000
committerKenneth R Westerback <krw@cvs.openbsd.org>2007-08-15 02:04:31 +0000
commit80d01810f68860055c71775bbb52a57169a45e9c (patch)
treed4401da212a75df6448b866704530580be659882 /sys/dev/isa
parent4d45c5178e9af23b72cb5bfb24642729b6fcbfb0 (diff)
When polling call ahaintr() at splbio(). Noticed by and fix tested by
todd@.
Diffstat (limited to 'sys/dev/isa')
-rw-r--r--sys/dev/isa/aha.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/isa/aha.c b/sys/dev/isa/aha.c
index 11213ef4a07..dcfa5cd344a 100644
--- a/sys/dev/isa/aha.c
+++ b/sys/dev/isa/aha.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: aha.c,v 1.56 2006/11/28 23:59:45 dlg Exp $ */
+/* $OpenBSD: aha.c,v 1.57 2007/08/15 02:04:30 krw Exp $ */
/* $NetBSD: aha.c,v 1.11 1996/05/12 23:51:23 mycroft Exp $ */
#undef AHADIAG
@@ -1413,6 +1413,7 @@ aha_poll(sc, xs, count)
int count;
{
int iobase = sc->sc_iobase;
+ int s;
/* timeouts are in msec, so we loop in 1000 usec cycles */
while (count) {
@@ -1420,8 +1421,11 @@ aha_poll(sc, xs, count)
* If we had interrupts enabled, would we
* have got an interrupt?
*/
- if (inb(iobase + AHA_INTR_PORT) & AHA_INTR_ANYINTR)
+ if (inb(iobase + AHA_INTR_PORT) & AHA_INTR_ANYINTR) {
+ s = splbio();
ahaintr(sc);
+ splx(s);
+ }
if (xs->flags & ITSDONE)
return (0);
delay(1000); /* only happens in boot so ok */