diff --git a/[refs] b/[refs] index ee10f65336a6..b5489e6e1751 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 78cd52d02fa0735949a9fa30a6b79bf02c94c250 +refs/heads/master: 2a3917a8bb40a2cb75b458da9c356e8557e8fbed diff --git a/trunk/drivers/scsi/ahci.c b/trunk/drivers/scsi/ahci.c index d6894bd67980..35487e30b0ff 100644 --- a/trunk/drivers/scsi/ahci.c +++ b/trunk/drivers/scsi/ahci.c @@ -883,7 +883,18 @@ static void ahci_host_intr(struct ata_port *ap) } } - /* spurious interrupt */ + /* hmmm... a spurious interupt */ + + /* ignore interim PIO setup fis interrupts */ + if (ata_tag_valid(ap->active_tag)) { + struct ata_queued_cmd *qc = + ata_qc_from_tag(ap, ap->active_tag); + + if (qc && qc->tf.protocol == ATA_PROT_PIO && + (status & PORT_IRQ_PIOS_FIS)) + return; + } + if (ata_ratelimit()) ata_port_printk(ap, KERN_INFO, "spurious interrupt " "(irq_stat 0x%x active_tag %d)\n",