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)