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
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:
@@ -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