libata: no need to speed down if already at PIO0
authorTejun Heo <htejun@gmail.com>
Mon, 29 Oct 2007 07:45:05 +0000 (16:45 +0900)
committerJeff Garzik <jeff@garzik.org>
Mon, 29 Oct 2007 10:21:33 +0000 (06:21 -0400)
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>
drivers/ata/libata-eh.c

index b237ff18b39eb0fecb4e69a4de30adaf011ff88d..ec55d63cf20e5bde890640ee28b44cb29c99ca46 100644 (file)
@@ -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.
                         */