diff options
-rw-r--r-- | drivers/scsi/ahci.c | 13 |
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", |