[kernel] r16456 - in dists/sid/linux-2.6/debian: . patches/bugfix/all patches/series
Dann Frazier
dannf at alioth.debian.org
Tue Oct 19 01:27:03 UTC 2010
Author: dannf
Date: Tue Oct 19 01:26:57 2010
New Revision: 16456
Log:
Force enable DMA on MBP w/ MCP 7,1
Added:
dists/sid/linux-2.6/debian/patches/bugfix/all/ata_generic-drop-hard-coded-DMA-force-logic-for-CENATEK.patch
dists/sid/linux-2.6/debian/patches/bugfix/all/ata_generic-implement-ATA_GEN_-flags-and-force-enable-DMA-on-MBP-7,1.patch
Modified:
dists/sid/linux-2.6/debian/changelog
dists/sid/linux-2.6/debian/patches/series/26
Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog Sun Oct 17 20:29:07 2010 (r16455)
+++ dists/sid/linux-2.6/debian/changelog Tue Oct 19 01:26:57 2010 (r16456)
@@ -19,6 +19,9 @@
* debian/.../patches.py: Open files as needed, rather than all at once
(Closes: #600423)
+ [ dann frazier ]
+ * Force enable DMA on MBP w/ MCP 7,1
+
-- dann frazier <dannf at debian.org> Fri, 15 Oct 2010 16:03:12 +0100
linux-2.6 (2.6.32-25) unstable; urgency=high
Added: dists/sid/linux-2.6/debian/patches/bugfix/all/ata_generic-drop-hard-coded-DMA-force-logic-for-CENATEK.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/ata_generic-drop-hard-coded-DMA-force-logic-for-CENATEK.patch Tue Oct 19 01:26:57 2010 (r16456)
@@ -0,0 +1,38 @@
+commit 728e0eaf99631d197e5158e21b4a8c4335a39231
+Author: Tejun Heo <tj at kernel.org>
+Date: Fri Jul 2 14:41:24 2010 +0200
+
+ ata_generic: drop hard coded DMA force logic for CENATEK
+
+ Commit 1529c69adc (ata_generic: implement ATA_GEN_* flags and force
+ enable DMA on MBP 7,1) implemented ATA_GEN_FORCE_DMA for forcing DMA
+ mode and applied it to CENATEK but forgot to remove the original hard
+ coded logic. This is removal of redundant logic and doesn't affect
+ correctness.
+
+ Signed-off-by: Tejun Heo <tj at kernel.org>
+ Reported-by: Andy Whitcroft <apw at canonical.com>
+ Signed-off-by: Jeff Garzik <jgarzik at redhat.com>
+
+diff --git a/drivers/ata/ata_generic.c b/drivers/ata/ata_generic.c
+index 7107a69..cc5f772 100644
+--- a/drivers/ata/ata_generic.c
++++ b/drivers/ata/ata_generic.c
+@@ -54,7 +54,6 @@ static int generic_set_mode(struct ata_link *link, struct ata_device **unused)
+ const struct pci_device_id *id = ap->host->private_data;
+ int dma_enabled = 0;
+ struct ata_device *dev;
+- struct pci_dev *pdev = to_pci_dev(ap->host->dev);
+
+ if (id->driver_data & ATA_GEN_FORCE_DMA) {
+ dma_enabled = 0xff;
+@@ -63,9 +62,6 @@ static int generic_set_mode(struct ata_link *link, struct ata_device **unused)
+ dma_enabled = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_STATUS);
+ }
+
+- if (pdev->vendor == PCI_VENDOR_ID_CENATEK)
+- dma_enabled = 0xFF;
+-
+ ata_for_each_dev(dev, link, ENABLED) {
+ /* We don't really care */
+ dev->pio_mode = XFER_PIO_0;
Added: dists/sid/linux-2.6/debian/patches/bugfix/all/ata_generic-implement-ATA_GEN_-flags-and-force-enable-DMA-on-MBP-7,1.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/ata_generic-implement-ATA_GEN_-flags-and-force-enable-DMA-on-MBP-7,1.patch Tue Oct 19 01:26:57 2010 (r16456)
@@ -0,0 +1,108 @@
+[Backported to Debian's 2.6.32 by dann frazier <dannf at debian.org>]
+
+commit 1529c69adce1e95f7ae72f0441590c226bbac7fc
+Author: Tejun Heo <tj at kernel.org>
+Date: Tue Jun 22 12:27:26 2010 +0200
+
+ ata_generic: implement ATA_GEN_* flags and force enable DMA on MBP 7,1
+
+ IDE mode of MCP89 on MBP 7,1 doesn't set DMA enable bits in the BMDMA
+ status register. Make the following changes to work around the problem.
+
+ * Instead of using hard coded 1 in id->driver_data as class code
+ match, use ATA_GEN_CLASS_MATCH and carry the matched id in
+ host->private_data.
+
+ * Instead of matching PCI_VENDOR_ID_CENATEK, use ATA_GEN_FORCE_DMA
+ flag in id instead.
+
+ * Add ATA_GEN_FORCE_DMA to the id entry of MBP 7,1.
+
+ Signed-off-by: Tejun Heo <tj at kernel.org>
+ Cc: Peer Chen <pchen at nvidia.com>
+ Cc: stable at kernel.org
+ Reported-by: Anders Østhus <grapz666 at gmail.com>
+ Reported-by: Andreas Graf <andreas_graf at csgraf.de>
+ Reported-by: Benoit Gschwind <gschwind at gnu-log.net>
+ Reported-by: Damien Cassou <damien.cassou at gmail.com>
+ Reported-by: tixetsal at juno.com
+ Signed-off-by: Jeff Garzik <jgarzik at redhat.com>
+
+diff -urpN a/drivers/ata/ata_generic.c b/drivers/ata/ata_generic.c
+--- a/drivers/ata/ata_generic.c 2010-10-18 17:18:22.160591155 -0600
++++ b/drivers/ata/ata_generic.c 2010-10-18 17:28:35.700130856 -0600
+@@ -32,6 +32,11 @@
+ * A generic parallel ATA driver using libata
+ */
+
++enum {
++ ATA_GEN_CLASS_MATCH = (1 << 0),
++ ATA_GEN_FORCE_DMA = (1 << 1),
++};
++
+ /**
+ * generic_set_mode - mode setting
+ * @link: link to set up
+@@ -46,13 +51,17 @@
+ static int generic_set_mode(struct ata_link *link, struct ata_device **unused)
+ {
+ struct ata_port *ap = link->ap;
++ const struct pci_device_id *id = ap->host->private_data;
+ int dma_enabled = 0;
+ struct ata_device *dev;
+ struct pci_dev *pdev = to_pci_dev(ap->host->dev);
+
+- /* Bits 5 and 6 indicate if DMA is active on master/slave */
+- if (ap->ioaddr.bmdma_addr)
++ if (id->driver_data & ATA_GEN_FORCE_DMA) {
++ dma_enabled = 0xff;
++ } else if (ap->ioaddr.bmdma_addr) {
++ /* Bits 5 and 6 indicate if DMA is active on master/slave */
+ dma_enabled = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_STATUS);
++ }
+
+ if (pdev->vendor == PCI_VENDOR_ID_CENATEK)
+ dma_enabled = 0xFF;
+@@ -126,7 +135,7 @@ static int ata_generic_init_one(struct p
+ const struct ata_port_info *ppi[] = { &info, NULL };
+
+ /* Don't use the generic entry unless instructed to do so */
+- if (id->driver_data == 1 && all_generic_ide == 0)
++ if ((id->driver_data & ATA_GEN_CLASS_MATCH) && all_generic_ide == 0)
+ return -ENODEV;
+
+ /* Devices that need care */
+@@ -155,7 +164,7 @@ static int ata_generic_init_one(struct p
+ return rc;
+ pcim_pin_device(dev);
+ }
+- return ata_pci_sff_init_one(dev, ppi, &generic_sht, NULL);
++ return ata_pci_sff_init_one(dev, ppi, &generic_sht, (void *)id);
+ }
+
+ static struct pci_device_id ata_generic[] = {
+@@ -167,18 +176,21 @@ static struct pci_device_id ata_generic[
+ { PCI_DEVICE(PCI_VENDOR_ID_HINT, PCI_DEVICE_ID_HINT_VXPROII_IDE), },
+ { PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C561), },
+ { PCI_DEVICE(PCI_VENDOR_ID_OPTI, PCI_DEVICE_ID_OPTI_82C558), },
+- { PCI_DEVICE(PCI_VENDOR_ID_CENATEK,PCI_DEVICE_ID_CENATEK_IDE), },
++ { PCI_DEVICE(PCI_VENDOR_ID_CENATEK,PCI_DEVICE_ID_CENATEK_IDE),
++ .driver_data = ATA_GEN_FORCE_DMA },
+ /*
+ * For some reason, MCP89 on MacBook 7,1 doesn't work with
+ * ahci, use ata_generic instead.
+ */
+ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA,
+- PCI_VENDOR_ID_APPLE, 0xcb89, },
++ PCI_VENDOR_ID_APPLE, 0xcb89,
++ .driver_data = ATA_GEN_FORCE_DMA },
+ { PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO), },
+ { PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_1), },
+ { PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_2), },
+ /* Must come last. If you add entries adjust this table appropriately */
+- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE << 8, 0xFFFFFF00UL, 1},
++ { PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_IDE << 8, 0xFFFFFF00UL),
++ .driver_data = ATA_GEN_CLASS_MATCH },
+ { 0, },
+ };
+
Modified: dists/sid/linux-2.6/debian/patches/series/26
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/26 Sun Oct 17 20:29:07 2010 (r16455)
+++ dists/sid/linux-2.6/debian/patches/series/26 Tue Oct 19 01:26:57 2010 (r16456)
@@ -4,3 +4,5 @@
+ bugfix/x86/drm-radeon-kms-add-quirk-to-make-HP-DV5000-laptop-resume.patch
+ features/all/dm-crypt-add-plain64-iv.patch
+ bugfix/x86/ahci-ata_generic-let-ata_generic-handle-new-MBP-w-MCP89.patch
++ bugfix/all/ata_generic-implement-ATA_GEN_-flags-and-force-enable-DMA-on-MBP-7,1.patch
++ bugfix/all/ata_generic-drop-hard-coded-DMA-force-logic-for-CENATEK.patch
More information about the Kernel-svn-changes
mailing list