Alan Cox wrote:
From: Alan Cox <alan@xxxxxxxxxx> If the device is signalling that there is data to drain after an error we should read the bytes out and throw them away. Without this some devices and controllers get wedged and don't recover. Based on earlier work by Mark Lord Signed-off-by: Alan Cox <alan@xxxxxxxxxx>
..
+ /* Drain up to 64K of data before we give up this recovery method */ + for (count = 0; (ap->ops->sff_check_status(ap) & ATA_DRQ) + && count < 65536;) + ioread8(ap->ioaddr.data_addr);
.. I'm just catching up on a few things here now that holiday season is over. In the above loop, I wonder if it might be better to only check status every NN iterations, where NN > 1 (say, 16), to speed things up a fair amount (?). Sure it's rare, but when it happens the entire system is probably stopped waiting for us to recover, so speed might matter some. Cheers -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html