diff options
author | Aaron Campbell <aaron@cvs.openbsd.org> | 2001-01-23 08:50:29 +0000 |
---|---|---|
committer | Aaron Campbell <aaron@cvs.openbsd.org> | 2001-01-23 08:50:29 +0000 |
commit | d3c93a1ce1379fb62c97c548e5e655dc14a07c86 (patch) | |
tree | 866dc3779819c460360ef922996bdd5a68f3c47c | |
parent | 4b54aeac5a27219f7c1a9a6c94a2dfc2d6812118 (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.c | 6 |
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); } |