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
This commit is contained in:
parent
7b6edf5209
commit
d4ffeadd1a
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user