[haiku-commits] r35083 - haiku/trunk/src/add-ons/kernel/generic/ata_adapter

  • From: mmlr@xxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 15 Jan 2010 03:56:39 +0100 (CET)

Author: mmlr
Date: 2010-01-15 03:56:39 +0100 (Fri, 15 Jan 2010)
New Revision: 35083
Changeset: http://dev.haiku-os.org/changeset/35083/haiku

Modified:
   haiku/trunk/src/add-ons/kernel/generic/ata_adapter/ata_adapter.c
Log:
Don't return early when we're not DMAing. This causes the bus master status
to be read/acknowledged (new) and the status to be read (like before in that
case) which helps discarding spurious interrupts on one controller I have that
would otherwise cause an interrupt storm as the bus master interrupt would never
be acknowledged. The ATA stack will discard the interrupt if it's not expecting
a transfer, so no real harm done.


Modified: haiku/trunk/src/add-ons/kernel/generic/ata_adapter/ata_adapter.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/generic/ata_adapter/ata_adapter.c    
2010-01-14 23:40:13 UTC (rev 35082)
+++ haiku/trunk/src/add-ons/kernel/generic/ata_adapter/ata_adapter.c    
2010-01-15 02:56:39 UTC (rev 35083)
@@ -201,14 +201,6 @@
 
        TRACE_INT("ata_adapter_inthand\n");
 
-       if (!channel->dmaing) {
-               // this could be a spurious interrupt, so read status
-               // register unconditionally to acknowledge those
-               TRACE_INT("ata_adapter_inthand: not DMA\n");
-               pci->read_io_8(device, channel->command_block_base + 7);
-               return B_UNHANDLED_INTERRUPT;
-       }
-
        // need to read bus master status first, because some controllers
        // will clear the interrupt status bit once ATA status is read
        statusBM = pci->read_io_8(device, channel->bus_master_base


Other related posts:

  • » [haiku-commits] r35083 - haiku/trunk/src/add-ons/kernel/generic/ata_adapter - mmlr