Andrew Lyon wrote:
> Hi,
>
> My system is gigabyte ds3 motherboard with onboard SATA JMicron
> 20360/20363 AHCI Controller (rev 02), drive connected is WDC
> WD740ADFD-00 20.0, I am running 2.6.18.6 32 bit, under heavy i/o I get
> the following messaegs:
>
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x0)
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x0)
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x0)
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x0)
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x0)
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x0)
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x0)
> ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x0)
>
> Is this condition dangerous?
Not usually. Might indicate something is going wrong in some really
rare cases. I think vendors are getting NCQ right these days. Maybe
it's time to remove that printk.
> I plan to upgrade to 2.6.19 soon as I have problems with a sata dvd
> writer but I have to wait for a driver that I need to catch up, this
> system cannot be down for long as it runs mythtv.
Can you apply the attached patch and report what the kernel says?
Please include full dmesg.
Thanks.
--
tejun
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index b517d24..13f5853 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -1162,10 +1162,21 @@ static void ahci_host_intr(struct ata_port *ap)
if (ata_tag_valid(ap->active_tag) && (status & PORT_IRQ_PIOS_FIS))
return;
- if (ata_ratelimit())
+ if (ata_ratelimit()) {
+ struct ahci_port_priv *pp = ap->private_data;
+ const u32 *f = pp->rx_fis + 0x58;
+
ata_port_printk(ap, KERN_INFO, "spurious interrupt "
- "(irq_stat 0x%x active_tag %d sactive 0x%x)\n",
+ "(irq_stat 0x%x active_tag 0x%x sactive 0x%x)\n",
status, ap->active_tag, ap->sactive);
+ if (status & PORT_IRQ_SDB_FIS) {
+ ata_port_printk(ap, KERN_INFO, "issue=0x%x SAct=0x%x "
+ "SDB_FIS=%08x:%08x\n",
+ readl(port_mmio + PORT_CMD_ISSUE),
+ readl(port_mmio + PORT_SCR_ACT),
+ f[0], f[1]);
+ }
+ }
}
static void ahci_irq_clear(struct ata_port *ap)
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]