diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-04-25 15:26:28 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-04-25 15:26:28 -0700 |
commit | 393db0324a430e100971ead4210d1c7870509b7c (patch) | |
tree | 10a2cded9e03b7ea51fdac154328cde938e411aa /pci | |
parent | efe9e8261c1359bdb9ae90661eff88c8e740d3f9 (diff) | |
download | patches-393db0324a430e100971ead4210d1c7870509b7c.tar.gz |
more patches added
Diffstat (limited to 'pci')
-rw-r--r-- | pci/pci-reverse-pci-config-space-restore-order.patch | 47 |
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 " |