aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2005-08-17 00:08:47 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-08-17 00:51:50 -0400
commit3cc4571c4106735665e048850ff6656de9558d60 (patch)
treece7dc0f5d02af9b247a0a2867010e555dc26834c
parent1483467faa0170cf401955b3d8d3486ea0fe802d (diff)
[PATCH] sil24: remove irq disable code on spurious interrupt
02_sil24_remove-irq-disable-on-spurious-intr.patch If interrupt occurs on a disabled port, the driver used to mask the port's interrupt, but we don't know if such action is necessary yet and that's not what other drives do. So, just do nothing and tell IRQ subsystem that it's not our interrupt. Signed-off-by: Tejun Heo <htejun@gmail.com> sata_sil24.c | 15 +++++---------- 1 files changed, 5 insertions(+), 10 deletions(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
-rw-r--r--drivers/scsi/sata_sil24.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/scsi/sata_sil24.c b/drivers/scsi/sata_sil24.c
index 4868ad79b92e..0f810cdd3cc2 100644
--- a/drivers/scsi/sata_sil24.c
+++ b/drivers/scsi/sata_sil24.c
@@ -535,17 +535,12 @@ static irqreturn_t sil24_interrupt(int irq, void *dev_instance, struct pt_regs *
535 for (i = 0; i < host_set->n_ports; i++) 535 for (i = 0; i < host_set->n_ports; i++)
536 if (status & (1 << i)) { 536 if (status & (1 << i)) {
537 struct ata_port *ap = host_set->ports[i]; 537 struct ata_port *ap = host_set->ports[i];
538 if (ap && !(ap->flags & ATA_FLAG_PORT_DISABLED)) 538 if (ap && !(ap->flags & ATA_FLAG_PORT_DISABLED)) {
539 sil24_host_intr(host_set->ports[i]); 539 sil24_host_intr(host_set->ports[i]);
540 else { 540 handled++;
541 u32 tmp; 541 } else
542 printk(KERN_WARNING DRV_NAME 542 printk(KERN_ERR DRV_NAME
543 ": spurious interrupt from port %d\n", i); 543 ": interrupt from disabled port %d\n", i);
544 tmp = readl(hpriv->host_base + HOST_CTRL);
545 tmp &= ~(1 << i);
546 writel(tmp, hpriv->host_base + HOST_CTRL);
547 }
548 handled++;
549 } 544 }
550 545
551 spin_unlock(&host_set->lock); 546 spin_unlock(&host_set->lock);