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", |
