diff options
author | Kenneth R Westerback <krw@cvs.openbsd.org> | 2007-08-15 02:04:31 +0000 |
---|---|---|
committer | Kenneth R Westerback <krw@cvs.openbsd.org> | 2007-08-15 02:04:31 +0000 |
commit | 80d01810f68860055c71775bbb52a57169a45e9c (patch) | |
tree | d4401da212a75df6448b866704530580be659882 /sys/dev/isa | |
parent | 4d45c5178e9af23b72cb5bfb24642729b6fcbfb0 (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.c | 8 |
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 */ |