> + /* Read command completed register */ > + done_mask = ioread32(hcr_base + CC); > + > + if (host_priv->quirks & SATA_FSL_QUIRK_V2_ERRATA) { > + if (unlikely(hstatus & INT_ON_DATA_LENGTH_MISMATCH)) { > + for (tag = 0; tag < ATA_MAX_QUEUE; tag++) { > + qc = ata_qc_from_tag(ap, tag); > + if (qc && ata_is_atapi(qc->tf.protocol)) { > + atapi_flag = 1; > + break; > + } > + } > + } > + } > + > + /* Workaround for data length mismatch errata */ > + if (atapi_flag) { Seems to me like the conditionals for this code are all in the wrong order - adding code to the normal path. The whole lot should probably be inside: if (unlikely(hstatus & INT_ON_DATA_LENGTH_MISMATCH)) { and the 'atapi_flag' boolean removed. I also wonder it this is worthy of an actual quirk? Might be worth doing anyway. David -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html