]> git.baikalelectronics.ru Git - kernel.git/commit
sata_sil24: fix IRQ clearing race when PCIX_IRQ_WOC is used
authorTejun Heo <htejun@gmail.com>
Sun, 23 Sep 2007 03:37:05 +0000 (12:37 +0900)
committerJeff Garzik <jeff@garzik.org>
Wed, 26 Sep 2007 01:30:56 +0000 (21:30 -0400)
commit9de4d9223d8f891238e2e6aa79b11712551f609b
tree06c5b45c34f59b70aa7266e0c84bf3c1b1283c7f
parent644a6d2487161f49b7672817aece56188bb12721
sata_sil24: fix IRQ clearing race when PCIX_IRQ_WOC is used

When PCIX_IRQ_WOC is used, sil24 has an inherent race condition
between clearing IRQ pending and reading IRQ status.  If IRQ pending
is cleared after reading IRQ status, there's possibility of lost IRQ.
If IRQ pending is cleared before reading IRQ status, spurious IRQs
will occur.

sata_sil24 till now cleared IRQ pending after reading IRQ status thus
losing IRQs on machines where PCIX_IRQ_WOC was used.  Reverse the
order and ignore spurious IRQs if PCIX_IRQ_WOC.

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