summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2005-08-17 06:08:52 +0200
committerJeff Garzik <jgarzik@pobox.com>2005-08-17 06:51:50 +0200
commit06460aeaa26ed4a86b92c8451365d3f48abd3786 (patch)
tree050791de806b74054f760b9debbddb7cac9caf75 /drivers
parent[PATCH] sil24: remove irq disable code on spurious interrupt (diff)
downloadlinux-06460aeaa26ed4a86b92c8451365d3f48abd3786.tar.xz
linux-06460aeaa26ed4a86b92c8451365d3f48abd3786.zip
[PATCH] sil24: add testing for PCI fault
03_sil24_add-pci-fault-check.patch On entry to interrupt handler, PORT_SLOT_STAT register is read first. Check if PCI fault or device removal has occurred by testing the value for 0xffffffff. Signed-off-by: Tejun Heo <htejun@gmail.com> sata_sil24.c | 6 ++++++ 1 files changed, 6 insertions(+) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/sata_sil24.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/scsi/sata_sil24.c b/drivers/scsi/sata_sil24.c
index 0f810cdd3cc2..c9318bda46a3 100644
--- a/drivers/scsi/sata_sil24.c
+++ b/drivers/scsi/sata_sil24.c
@@ -527,6 +527,12 @@ static irqreturn_t sil24_interrupt(int irq, void *dev_instance, struct pt_regs *
status = readl(hpriv->host_base + HOST_IRQ_STAT);
+ if (status == 0xffffffff) {
+ printk(KERN_ERR DRV_NAME ": IRQ status == 0xffffffff, "
+ "PCI fault or device removal?\n");
+ goto out;
+ }
+
if (!(status & IRQ_STAT_4PORTS))
goto out;