Problem: - With 2.6.17, some PIO-only devices are given DMA commands. Changes: - Do not clear the ATA_DFLAG_PIO flag in ata_dev_configure(). Original patch by Tejun. Signed-off-by: Albert Lee <albertcc@xxxxxxxxxx> -- The patch is done by Tejun and already in libata-dev upstream. Maybe we also need this for 2.6.17. For your review, thanks. albert diff -Nrup linux-2.6.17-0/drivers/scsi/libata-core.c linux-2.6.17-1/drivers/scsi/libata-core.c --- linux-2.6.17-0/drivers/scsi/libata-core.c 2006-06-18 09:49:35.000000000 +0800 +++ linux-2.6.17-1/drivers/scsi/libata-core.c 2006-06-20 16:56:14.000000000 +0800 @@ -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; diff -Nrup linux-2.6.17-0/include/linux/libata.h linux-2.6.17-1/include/linux/libata.h --- linux-2.6.17-0/include/linux/libata.h 2006-06-18 09:49:35.000000000 +0800 +++ linux-2.6.17-1/include/linux/libata.h 2006-06-20 16:55:41.000000000 +0800 @@ -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 */ - : 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