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