diff options
author | Alexander Yurchenko <grange@cvs.openbsd.org> | 2003-10-17 08:14:10 +0000 |
---|---|---|
committer | Alexander Yurchenko <grange@cvs.openbsd.org> | 2003-10-17 08:14:10 +0000 |
commit | 6dbc421deb21d25ce2935f847921dc56a8399cbb (patch) | |
tree | dc0980203c1dd3c84fe617bd090ac4259903d662 /sys/dev/atapiscsi | |
parent | dc1014eb963fbe3c6148ff2c44c5843259f66b55 (diff) |
Merge an old fix from NetBSD:
- do not stop/unload current DMA operation if an IRQ was not detected
by DMA engine unless the force flag was given, fixes DMA problems
in shared IRQ setups;
- ack interrupt before entering DMA codepath
Tested by many.
Work by niklas@ but he doesn't want to commit it for some reason.
Diffstat (limited to 'sys/dev/atapiscsi')
-rw-r--r-- | sys/dev/atapiscsi/atapiscsi.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/sys/dev/atapiscsi/atapiscsi.c b/sys/dev/atapiscsi/atapiscsi.c index ae8ab9f5beb..78e7f3417c4 100644 --- a/sys/dev/atapiscsi/atapiscsi.c +++ b/sys/dev/atapiscsi/atapiscsi.c @@ -1,4 +1,4 @@ -/* $OpenBSD: atapiscsi.c,v 1.65 2003/10/16 11:30:00 grange Exp $ */ +/* $OpenBSD: atapiscsi.c,v 1.66 2003/10/17 08:14:09 grange Exp $ */ /* * This code is derived from code with the copyright below. @@ -1101,11 +1101,6 @@ wdc_atapi_intr_complete(chp, xfer, timeout, ret) int retry; if (timeout) { - chp->wdc->dma_status = - (*chp->wdc->dma_finish) - (chp->wdc->dma_arg, chp->channel, - xfer->drive); - sc_xfer->error = XS_TIMEOUT; ata_dmaerr(drvp); @@ -1127,7 +1122,7 @@ wdc_atapi_intr_complete(chp, xfer, timeout, ret) chp->wdc->dma_status = (*chp->wdc->dma_finish) (chp->wdc->dma_arg, chp->channel, - xfer->drive); + xfer->drive, 1); if (chp->wdc->dma_status & WDC_DMAST_UNDER) xfer->c_bcount = 1; |