summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorKenneth R Westerback <krw@cvs.openbsd.org>2007-11-05 20:50:21 +0000
committerKenneth R Westerback <krw@cvs.openbsd.org>2007-11-05 20:50:21 +0000
commit6e70dfc6c61a685f54939def68b7b56cae62fd42 (patch)
tree46d2109993cf76c06f2168eaf520fe8eb1bb763a /sys/dev
parent6f256e16a311079a70cd9106105a42b0871601dd (diff)
More scsi_done() at SPLBIO. Wrap more interrupt function calls while
polling in splbio/splx.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ic/adv.c5
-rw-r--r--sys/dev/ic/adw.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/sys/dev/ic/adv.c b/sys/dev/ic/adv.c
index b241a5d85fd..4cdd07f6882 100644
--- a/sys/dev/ic/adv.c
+++ b/sys/dev/ic/adv.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: adv.c,v 1.17 2006/11/29 01:00:47 grange Exp $ */
+/* $OpenBSD: adv.c,v 1.18 2007/11/05 20:50:20 krw Exp $ */
/* $NetBSD: adv.c,v 1.6 1998/10/28 20:39:45 dante Exp $ */
/*
@@ -883,10 +883,13 @@ adv_poll(sc, xs, count)
struct scsi_xfer *xs;
int count;
{
+ int s;
/* timeouts are in msec, so we loop in 1000 usec cycles */
while (count) {
+ s = splbio();
adv_intr(sc);
+ splx(s);
if (xs->flags & ITSDONE)
return (0);
delay(1000); /* only happens in boot so ok */
diff --git a/sys/dev/ic/adw.c b/sys/dev/ic/adw.c
index f0b2a23cc8b..f499600532e 100644
--- a/sys/dev/ic/adw.c
+++ b/sys/dev/ic/adw.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: adw.c,v 1.31 2006/11/28 23:59:45 dlg Exp $ */
+/* $OpenBSD: adw.c,v 1.32 2007/11/05 20:50:20 krw Exp $ */
/* $NetBSD: adw.c,v 1.23 2000/05/27 18:24:50 dante Exp $ */
/*
@@ -969,10 +969,13 @@ adw_poll(sc, xs, count)
struct scsi_xfer *xs;
int count;
{
+ int s;
/* timeouts are in msec, so we loop in 1000 usec cycles */
while (count > 0) {
+ s = splbio();
adw_intr(sc);
+ splx(s);
if (xs->flags & ITSDONE) {
if ((xs->cmd->opcode == INQUIRY)
&& (xs->sc_link->lun == 0)