summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Campbell <aaron@cvs.openbsd.org>2001-01-23 08:50:29 +0000
committerAaron Campbell <aaron@cvs.openbsd.org>2001-01-23 08:50:29 +0000
commitd3c93a1ce1379fb62c97c548e5e655dc14a07c86 (patch)
tree866dc3779819c460360ef922996bdd5a68f3c47c
parent4b54aeac5a27219f7c1a9a6c94a2dfc2d6812118 (diff)
Restore the WDCF_IRQ_WAIT flag if the lower-level interrupt handler rejects
the interrupt. Fixes hangs seen with CompactFlash cards in CardBus slots. Thanks to csapuntz@ for some pointers. Note: this was NetBSD PR/8639.
-rw-r--r--sys/dev/ic/wdc.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/sys/dev/ic/wdc.c b/sys/dev/ic/wdc.c
index cb2999bb538..e9775599c74 100644
--- a/sys/dev/ic/wdc.c
+++ b/sys/dev/ic/wdc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: wdc.c,v 1.23 2000/10/29 18:42:49 deraadt Exp $ */
+/* $OpenBSD: wdc.c,v 1.24 2001/01/23 08:50:28 aaron Exp $ */
/* $NetBSD: wdc.c,v 1.68 1999/06/23 19:00:17 bouyer Exp $ */
@@ -912,10 +912,8 @@ wdcintr(arg)
chp->ch_flags &= ~WDCF_IRQ_WAIT;
xfer = chp->ch_queue->sc_xfer.tqh_first;
ret = xfer->c_intr(chp, xfer, 1);
-#if notyet
- if (ret == 0)
+ if (ret == 0) /* irq was not for us, still waiting for irq */
chp->ch_flags |= WDCF_IRQ_WAIT;
-#endif
return (ret);
}