]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/ata/sata_sil.c
sata_sil: ignore and clear spurious IRQs while executing commands by polling
[karo-tx-linux.git] / drivers / ata / sata_sil.c
index 7808d0369d91e2a59907080c7372bd5c7b2b11c9..baeb34404dbeb1e3caf69f0ee1d632616745d8ca 100644 (file)
@@ -383,9 +383,15 @@ static void sil_host_intr(struct ata_port *ap, u32 bmdma2)
                goto freeze;
        }
 
-       if (unlikely(!qc || qc->tf.ctl & ATA_NIEN))
+       if (unlikely(!qc))
                goto freeze;
 
+       if (unlikely(qc->tf.flags & ATA_TFLAG_POLLING)) {
+               /* this sometimes happens, just clear IRQ */
+               ata_chk_status(ap);
+               return;
+       }
+
        /* Check whether we are expecting interrupt in this state */
        switch (ap->hsm_task_state) {
        case HSM_ST_FIRST: