--- /dev/null
+From stable-bounces@linux.kernel.org Thu Jun 22 21:50:52 2006
+Date: Fri, 23 Jun 2006 12:49:52 +0800
+From: Albert Lee <albertcc@tw.ibm.com>
+To: stable@kernel.org
+Cc: Tejun Heo <htejun@gmail.com>, Jeff Garzik <jgarzik@pobox.com>
+Subject: libata: minor patch for ATA_DFLAG_PIO
+
+From: Tejun Heo <htejun@gmail.com>
+
+Problem:
+ - With 2.6.17 libata, some PIO-only devices are given DMA commands.
+
+Changes:
+ - Do not clear the ATA_DFLAG_PIO flag in ata_dev_configure().
+
+Signed-off-by: Tejun Heo <htejun@gmail.com>.
+Signed-off-by: Albert Lee <albertcc@tw.ibm.com>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/scsi/libata-core.c | 2 +-
+ include/linux/libata.h | 9 ++++++---
+ 2 files changed, 7 insertions(+), 4 deletions(-)
+
+--- linux-2.6.17.1.orig/drivers/scsi/libata-core.c
++++ linux-2.6.17.1/drivers/scsi/libata-core.c
+@@ -1229,7 +1229,7 @@ static int ata_dev_configure(struct ata_
+ id[84], id[85], id[86], id[87], id[88]);
+
+ /* initialize to-be-configured parameters */
+- dev->flags = 0;
++ dev->flags &= ~ATA_DFLAG_CFG_MASK;
+ dev->max_sectors = 0;
+ dev->cdb_len = 0;
+ dev->n_sectors = 0;
+--- linux-2.6.17.1.orig/include/linux/libata.h
++++ linux-2.6.17.1/include/linux/libata.h
+@@ -120,9 +120,12 @@ enum {
+ ATA_SHT_USE_CLUSTERING = 1,
+
+ /* struct ata_device stuff */
+- ATA_DFLAG_LBA48 = (1 << 0), /* device supports LBA48 */
+- ATA_DFLAG_PIO = (1 << 1), /* device currently in PIO mode */
+- ATA_DFLAG_LBA = (1 << 2), /* device supports LBA */
++ ATA_DFLAG_LBA = (1 << 0), /* device supports LBA */
++ ATA_DFLAG_LBA48 = (1 << 1), /* device supports LBA48 */
++
++ ATA_DFLAG_CFG_MASK = (1 << 8) - 1,
++
++ ATA_DFLAG_PIO = (1 << 8), /* device currently in PIO mode */
+
+ ATA_DEV_UNKNOWN = 0, /* unknown device */
+ ATA_DEV_ATA = 1, /* ATA device */