]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
libata to properly handle ATA DMA flags with PIO-only devices, fwd from
authorChris Wright <chrisw@sous-sol.org>
Fri, 23 Jun 2006 18:56:54 +0000 (11:56 -0700)
committerChris Wright <chrisw@sous-sol.org>
Fri, 23 Jun 2006 18:56:54 +0000 (11:56 -0700)
Albert Lee.

queue-2.6.17/libata-minor-patch-for-ata_dflag_pio.patch [new file with mode: 0644]
queue-2.6.17/series

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 (file)
index 0000000..4d8561a
--- /dev/null
@@ -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 <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 */
index 28e02c51a4c3207bc97bc6aafecc9a5681c075af..b1910dcc5c9cd99713214437e6769ab16be27412 100644 (file)
@@ -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