diff options
author | Tejun Heo <htejun@gmail.com> | 2005-08-17 06:08:52 +0200 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-08-17 06:51:50 +0200 |
commit | 06460aeaa26ed4a86b92c8451365d3f48abd3786 (patch) | |
tree | 050791de806b74054f760b9debbddb7cac9caf75 /drivers | |
parent | [PATCH] sil24: remove irq disable code on spurious interrupt (diff) | |
download | linux-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.c | 6 |
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; |