From: Tejun Heo <htejun@gmail.com>
Date: Mon, 29 Oct 2007 07:45:05 +0000 (+0900)
Subject: libata: no need to speed down if already at PIO0
X-Git-Tag: firefly_0821_release~24565^2~3
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4fb4615bc9465e7098665fa9616b6ac1f495f895;p=firefly-linux-kernel-4.4.55.git

libata: no need to speed down if already at PIO0

After reset, transfer mode is always PIO0 regardless of
dev->xfer_mask.  Check dev->pio_mode before trying to slow down after
configuration failure.  This prevents bogus speed down before device
is actually configured.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Acked-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
---

diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index b237ff18b39e..ec55d63cf20e 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2437,7 +2437,7 @@ static int ata_eh_handle_dev_fail(struct ata_device *dev, int err)
 		/* give it just one more chance */
 		ehc->tries[dev->devno] = min(ehc->tries[dev->devno], 1);
 	case -EIO:
-		if (ehc->tries[dev->devno] == 1) {
+		if (ehc->tries[dev->devno] == 1 && dev->pio_mode > XFER_PIO_0) {
 			/* This is the last chance, better to slow
 			 * down than lose it.
 			 */