From 80d01810f68860055c71775bbb52a57169a45e9c Mon Sep 17 00:00:00 2001 From: Kenneth R Westerback Date: Wed, 15 Aug 2007 02:04:31 +0000 Subject: When polling call ahaintr() at splbio(). Noticed by and fix tested by todd@. --- sys/dev/isa/aha.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'sys/dev/isa') 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 */ -- cgit v1.2.3