From: Chris Wright Date: Fri, 23 Jun 2006 18:56:54 +0000 (-0700) Subject: libata to properly handle ATA DMA flags with PIO-only devices, fwd from X-Git-Tag: v2.6.17.2~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6273f12fcab575ab9a4a1a05460050d46f5c1690;p=thirdparty%2Fkernel%2Fstable-queue.git libata to properly handle ATA DMA flags with PIO-only devices, fwd from Albert Lee. --- diff --git a/queue-2.6.17/libata-minor-patch-for-ata_dflag_pio.patch b/queue-2.6.17/libata-minor-patch-for-ata_dflag_pio.patch new file mode 100644 index 00000000000..4d8561a3bbf --- /dev/null +++ b/queue-2.6.17/libata-minor-patch-for-ata_dflag_pio.patch @@ -0,0 +1,53 @@ +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 +To: stable@kernel.org +Cc: Tejun Heo , Jeff Garzik +Subject: libata: minor patch for ATA_DFLAG_PIO + +From: Tejun Heo + +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 . +Signed-off-by: Albert Lee +Signed-off-by: Chris Wright +--- + + 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 */ diff --git a/queue-2.6.17/series b/queue-2.6.17/series index 28e02c51a4c..b1910dcc5c9 100644 --- a/queue-2.6.17/series +++ b/queue-2.6.17/series @@ -16,3 +16,4 @@ uml-fix-uptime.patch ipv6-fix-source-address-selection.patch ipv6-addrconf-fix-default-source-address-selection-without-config_ipv6_privacy.patch ohci1394-fix-broken-suspend-resume-in-ohci1394.patch +libata-minor-patch-for-ata_dflag_pio.patch