aboutsummaryrefslogtreecommitdiffstats
path: root/pci
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2006-04-25 15:26:28 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2006-04-25 15:26:28 -0700
commit393db0324a430e100971ead4210d1c7870509b7c (patch)
tree10a2cded9e03b7ea51fdac154328cde938e411aa /pci
parentefe9e8261c1359bdb9ae90661eff88c8e740d3f9 (diff)
downloadpatches-393db0324a430e100971ead4210d1c7870509b7c.tar.gz
more patches added
Diffstat (limited to 'pci')
-rw-r--r--pci/pci-reverse-pci-config-space-restore-order.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/pci/pci-reverse-pci-config-space-restore-order.patch b/pci/pci-reverse-pci-config-space-restore-order.patch
new file mode 100644
index 0000000000000..b7772c3b04b1e
--- /dev/null
+++ b/pci/pci-reverse-pci-config-space-restore-order.patch
@@ -0,0 +1,47 @@
+From akpm@osdl.org Tue Apr 25 14:58:32 2006
+Message-Id: <200604250701.k3P71orx015389@shell0.pdx.osdl.net>
+Subject: PCI: reverse pci config space restore order
+To: luming.yu@intel.com, greg@kroah.com, mm-commits@vger.kernel.org
+From: akpm@osdl.org
+Date: Tue, 25 Apr 2006 00:00:34 -0700
+
+From: "Yu, Luming" <luming.yu@intel.com>
+
+According to Intel ICH spec, there are several rules that Base Address
+should be programmed before IOSE (PCICMD register ) enabled.
+
+For example ICH7:
+
+12.1.3 SATA : the base address register for the bus master register
+ should be programmed before this bit is set.
+
+11.1.3: PCICMD (USB): The base address register for USB should be
+ programmed before this bit is set.
+....
+
+To make sure kernel code follow this rule , and prevent unnecessary
+confusion. I proposal this patch.
+
+Signed-off-by: Luming Yu <luming.yu@intel.com>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pci.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- gregkh-2.6.orig/drivers/pci/pci.c
++++ gregkh-2.6/drivers/pci/pci.c
+@@ -463,7 +463,11 @@ pci_restore_state(struct pci_dev *dev)
+ int i;
+ int val;
+
+- for (i = 0; i < 16; i++) {
++ /*
++ * The Base Address register should be programmed before the command
++ * register(s)
++ */
++ for (i = 15; i >= 0; i--) {
+ pci_read_config_dword(dev, i * 4, &val);
+ if (val != dev->saved_config_space[i]) {
+ printk(KERN_DEBUG "PM: Writing back config space on "