[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