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

Tejun Heo tj at kernel.org
Fri Jun 6 15:30:57 PDT 2014


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



More information about the linux-arm-kernel mailing list