]> err.no Git - linux-2.6/commitdiff
[PATCH] sil24: remove irq disable code on spurious interrupt
authorTejun Heo <htejun@gmail.com>
Wed, 17 Aug 2005 04:08:47 +0000 (13:08 +0900)
committerJeff Garzik <jgarzik@pobox.com>
Wed, 17 Aug 2005 04:51:50 +0000 (00:51 -0400)
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>
drivers/scsi/sata_sil24.c

index 4868ad79b92e7d15e7de6021c40aff670274a911..0f810cdd3cc22288e2fd99e87e4d015e29e19884 100644 (file)
@@ -535,17 +535,12 @@ static irqreturn_t sil24_interrupt(int irq, void *dev_instance, struct pt_regs *
        for (i = 0; i < host_set->n_ports; i++)
                if (status & (1 << i)) {
                        struct ata_port *ap = host_set->ports[i];
-                       if (ap && !(ap->flags & ATA_FLAG_PORT_DISABLED))
+                       if (ap && !(ap->flags & ATA_FLAG_PORT_DISABLED)) {
                                sil24_host_intr(host_set->ports[i]);
-                       else {
-                               u32 tmp;
-                               printk(KERN_WARNING DRV_NAME
-                                      ": spurious interrupt from port %d\n", i);
-                               tmp = readl(hpriv->host_base + HOST_CTRL);
-                               tmp &= ~(1 << i);
-                               writel(tmp, hpriv->host_base + HOST_CTRL);
-                       }
-                       handled++;
+                               handled++;
+                       } else
+                               printk(KERN_ERR DRV_NAME
+                                      ": interrupt from disabled port %d\n", i);
                }
 
        spin_unlock(&host_set->lock);