Thread (1 message) 1 message, 1 author, 2014-06-06

[PATCH v0 2/2] ata: Fix the dma state machine lockup for the PIO mode commands.

From: tj@kernel.org (Tejun Heo)
Date: 2014-06-06 22:31:04
Also in: linux-devicetree, linux-ide, linux-scsi

On Sat, Jun 07, 2014 at 02:58:54AM +0530, Suman Tripathi wrote:
quoted hunk
@@ -5072,6 +5072,16 @@ int ata_qc_complete_multiple(struct ata_port *ap, u32 qc_active)
 		if (qc) {
 			ata_qc_complete(qc);
 			nr_done++;
+			/*
+			 * Some controller unable to clear the BSY bit after
+			 * receiving the PIO Setup FIS from device resulting
+			 * the DMA state to go into CMFatalErrorUpdate state.
+			 * So need to restart the dma engine to get the
+			 * controller out of this state.
+			 */
+			if ((ap->flags & ATA_HORKAGE_BROKEN_PIO_CMD) &&
+			    (qc->tf.protocol == ATA_PROT_PIO))
+				ap->ops->restart_engine(ap);
Why aren't you doing this by wrapping irq handler?

Thanks.

-- 
tejun
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help