Re: ata_sff_drain_fifo

From: Pascal GREGIS
Date: Wed Aug 18 2010 - 12:23:37 EST


Alan Cox a écrit, le mer 18 aoû 2010 à 12:44:12 :
> > so I guess when status is 0xD0, ATA_DRQ is not set but ATA_BUSY is.
> > It would explain why in my case it doesn't drain anything before trying to reset.
> >
> > Would it be of any interest to drain the fifo also when the ATA_BUSY flag is on, not only the ATA_DRQ ?
>
> If the drive has the busy flag set it is busy, all we can do is wait for
> it and if that fails try to reset it. The FIFO drain handles a specific
> case where the two ends disagree about the amount of data expected, and
> often lets us avoid a reset.
Ok. I also noticed that qc->dma_dir=DMA_TO_DEVICE which also prevents the draining.
I thought it could be a solution for certain problems like mine where the device is busy but the reset doesn't work which brings to a blocking point, but no.

Pascal

>
> Alan
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/