From: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>

The problem is that hwif->ide_dma_on() is in the wrong place in
piix_config_drive_xfer_rate() (btw. this problem is present not only in piix
driver because of sick code duplication) and will be called for devices which
don't support IORDY flow control for PIO (thus only PIO0/1/2 available).



 25-akpm/drivers/ide/pci/piix.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)

diff -puN drivers/ide/pci/piix.c~ide-piix-fallback-fix drivers/ide/pci/piix.c
--- 25/drivers/ide/pci/piix.c~ide-piix-fallback-fix	Mon Oct 13 14:15:56 2003
+++ 25-akpm/drivers/ide/pci/piix.c	Mon Oct 13 14:15:56 2003
@@ -588,13 +588,15 @@ try_dma_modes:
 		} else {
 			goto fast_ata_pio;
 		}
+		return hwif->ide_dma_on(drive);
 	} else if ((id->capability & 8) || (id->field_valid & 2)) {
 fast_ata_pio:
 no_dma_set:
 		hwif->tuneproc(drive, 255);
 		return hwif->ide_dma_off_quietly(drive);
 	}
-	return hwif->ide_dma_on(drive);
+	/* IORDY not supported */
+	return 0;
 }
 
 /**

_