Thread (5 messages) 5 messages, 2 authors, 2014-06-06

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

From: Tejun Heo <tj@kernel.org>
Date: 2014-06-06 22:31:04
Also in: linux-arm-kernel, linux-devicetree, linux-scsi

On Sat, Jun 07, 2014 at 02:58:54AM +0530, Suman Tripathi wrote:
quoted hunk ↗ jump to 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