sata_sil: fix spurious IRQ handling
authorTejun Heo <htejun@gmail.com>
Fri, 7 Dec 2007 23:45:27 +0000 (08:45 +0900)
committerJeff Garzik <jeff@garzik.org>
Tue, 18 Dec 2007 01:33:11 +0000 (20:33 -0500)
commit8cf32ac6578a70025be1103466da9d1d6141429e
treeb77386f566db1d0a71bb0e7cbf2a69fd2ed9df5e
parent2cc3a8f6ac0fb1e6095a47001d31aadcf9722bde
sata_sil: fix spurious IRQ handling

Interestingly, sata_sil raises spurious interrupts if it's coupled
with Sil SATA_PATA bridge.  Currently, sata_sil interrupt handler is
strict about spurious interrupts and freezes the port when it occurs.
This patch makes it more forgiving.

* On SATA PHY event interrupt, serror value is checked to see whether
  it really is PHYRDY CHG event.  If not, SATA PHY event interrupt is
  ignored.

* If ATA interrupt occurs while no command is in progress, it's
  cleared and ignored.

This fixes bugzilla bug 9505.

  http://bugzilla.kernel.org/show_bug.cgi?id=9505

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/sata_sil.c