提交 3cc4571c 编写于 作者: T Tejun Heo 提交者: Jeff Garzik

[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: NTejun Heo <htejun@gmail.com>

 sata_sil24.c |   15 +++++----------
 1 files changed, 5 insertions(+), 10 deletions(-)
Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
上级 1483467f
...@@ -535,17 +535,12 @@ static irqreturn_t sil24_interrupt(int irq, void *dev_instance, struct pt_regs * ...@@ -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++) for (i = 0; i < host_set->n_ports; i++)
if (status & (1 << i)) { if (status & (1 << i)) {
struct ata_port *ap = host_set->ports[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]); sil24_host_intr(host_set->ports[i]);
else { handled++;
u32 tmp; } else
printk(KERN_WARNING DRV_NAME printk(KERN_ERR DRV_NAME
": spurious interrupt from port %d\n", i); ": interrupt from disabled port %d\n", i);
tmp = readl(hpriv->host_base + HOST_CTRL);
tmp &= ~(1 << i);
writel(tmp, hpriv->host_base + HOST_CTRL);
}
handled++;
} }
spin_unlock(&host_set->lock); spin_unlock(&host_set->lock);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册