[libata] PCI IDE command-end/irq-acknowledge cleanup
Restruct default irq handler (used for many PCI IDE-like SATA controllers) to obtain device status and acknowledge interrupts a bit differently. In an attempt to better attack the "ich5 screaming interrupt" problem, acknowledge and clear the device's INTRQ by reading the Status register _before_ ack'ing the controller's irq status. This is a deviation from how the Linux IDE driver acknowledges interrupts, but it may be the best method, since the ICH5 appears to continue to assert the interrupt bit in the BMDMA until the device INTRQ line is cleared. Of course, SATA has no INTRQ line per se, so ICH5 essentially has new interrupt behavior not seen before in the PCI IDE world, while pretending that it's compatible with PCI IDE. Sigh. This change affects all SATA controllers (for which there are libata drivers) except for sata_promise and sata_sx4.
Showing
Please register or sign in to comment