From d4ffeadd1a4bd2a93e693204596fa5057d738f0a Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Fri, 15 Jan 2010 02:56:39 +0000 Subject: [PATCH] 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. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35083 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/generic/ata_adapter/ata_adapter.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/add-ons/kernel/generic/ata_adapter/ata_adapter.c b/src/add-ons/kernel/generic/ata_adapter/ata_adapter.c index 3a399568de..088a196f31 100644 --- a/src/add-ons/kernel/generic/ata_adapter/ata_adapter.c +++ b/src/add-ons/kernel/generic/ata_adapter/ata_adapter.c @@ -201,14 +201,6 @@ ata_adapter_inthand(void *arg) 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