From: Jeff Garzik Date: Wed, 14 Jun 2006 00:29:04 +0000 (-0400) Subject: Merge branch 'master' into upstream X-Git-Tag: v2.6.18-rc1~1115^2~1 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5ed7639c9f502898af4109e778f5613dacbfd9c;hp=-c;p=linux-2.6 Merge branch 'master' into upstream --- b5ed7639c9f502898af4109e778f5613dacbfd9c diff --combined drivers/pci/pci.c index 8d107c6c2c,12286275b1..fde41cc147 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@@ -164,6 -164,7 +164,6 @@@ int pci_bus_find_capability(struct pci_ return __pci_bus_find_cap(bus, devfn, hdr_type & 0x7f, cap); } -#if 0 /** * pci_find_ext_capability - Find an extended capability * @dev: PCI device to query @@@ -211,7 -212,7 +211,7 @@@ int pci_find_ext_capability(struct pci_ return 0; } -#endif /* 0 */ +EXPORT_SYMBOL_GPL(pci_find_ext_capability); /** * pci_find_parent_resource - return resource region of parent bus of given region @@@ -460,9 -461,23 +460,23 @@@ in pci_restore_state(struct pci_dev *dev) { int i; + int val; - for (i = 0; i < 16; i++) - pci_write_config_dword(dev,i * 4, dev->saved_config_space[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 " + "device %s at offset %x (was %x, writing %x)\n", + pci_name(dev), i, + val, (int)dev->saved_config_space[i]); + pci_write_config_dword(dev,i * 4, + dev->saved_config_space[i]); + } + } pci_restore_msi_state(dev); pci_restore_msix_state(dev); return 0;