PCI: Call pci_read_bridge_bases() from core instead of arch code

When we scan a PCI bus, we read PCI-PCI bridge window registers with
pci_read_bridge_bases() so we can validate the resource hierarchy.  Most
architectures call pci_read_bridge_bases() from pcibios_fixup_bus(), but
PCI-PCI bridges are not arch-specific, so this doesn't need to be in
arch-specific code.

Call pci_read_bridge_bases() directly from the PCI core instead of from
arch code.

For alpha and mips, we now call pci_read_bridge_bases() always; previously
we only called it if PCI_PROBE_ONLY was set.

[bhelgaas: changelog]
Signed-off-by: Lorenzo Pieralisi <[email protected]>
Signed-off-by: Bjorn Helgaas <[email protected]>
CC: Ralf Baechle <[email protected]>
CC: James E.J. Bottomley <[email protected]>
CC: Michael Ellerman <[email protected]>
CC: Bjorn Helgaas <[email protected]>
CC: Richard Henderson <[email protected]>
CC: Benjamin Herrenschmidt <[email protected]>
CC: David Howells <[email protected]>
CC: Russell King <[email protected]>
CC: Tony Luck <[email protected]>
CC: David S. Miller <[email protected]>
CC: Ingo Molnar <[email protected]>
CC: Guenter Roeck <[email protected]>
CC: Michal Simek <[email protected]>
CC: Chris Zankel <[email protected]>
This commit is contained in:
Lorenzo Pieralisi 2015-07-09 11:59:16 +01:00 • committed by Bjorn Helgaas
commit dff22d2054
12 changed files with 11 additions and 42 deletions

View file

@ -242,12 +242,7 @@ pci_restore_srm_config(void)
void pcibios_fixup_bus(struct pci_bus *bus)
{
struct pci_dev *dev = bus->self;
if (pci_has_flag(PCI_PROBE_ONLY) && dev &&
(dev->class >> 8) == PCI_CLASS_BRIDGE_PCI) {
pci_read_bridge_bases(bus);
}
struct pci_dev *dev;
list_for_each_entry(dev, &bus->devices, bus_list) {
pdev_save_srm_config(dev);