aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/ahci.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c
index d6894bd67980..35487e30b0ff 100644
--- a/drivers/scsi/ahci.c
+++ b/drivers/scsi/ahci.c
@@ -883,7 +883,18 @@ static void ahci_host_intr(struct ata_port *ap)
883 } 883 }
884 } 884 }
885 885
886 /* spurious interrupt */ 886 /* hmmm... a spurious interupt */
887
888 /* ignore interim PIO setup fis interrupts */
889 if (ata_tag_valid(ap->active_tag)) {
890 struct ata_queued_cmd *qc =
891 ata_qc_from_tag(ap, ap->active_tag);
892
893 if (qc && qc->tf.protocol == ATA_PROT_PIO &&
894 (status & PORT_IRQ_PIOS_FIS))
895 return;
896 }
897
887 if (ata_ratelimit()) 898 if (ata_ratelimit())
888 ata_port_printk(ap, KERN_INFO, "spurious interrupt " 899 ata_port_printk(ap, KERN_INFO, "spurious interrupt "
889 "(irq_stat 0x%x active_tag %d)\n", 900 "(irq_stat 0x%x active_tag %d)\n",