mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
PCI: Assign resources before drivers claim devices (pci_scan_bus())
Previously, pci_scan_bus() created a root PCI bus, enumerated the devices on it, and called pci_bus_add_devices(), which made the devices available for drivers to claim them. Most callers assigned resources to devices after pci_scan_bus() returns, which may be after drivers have claimed the devices. This is incorrect; the PCI core should not change device resources while a driver is managing the device. Remove pci_bus_add_devices() from pci_scan_bus() and do it after any resource assignment in the callers. [bhelgaas: changelog, check for failure in mcf_pci_init()] Signed-off-by: Yijing Wang <[email protected]> Signed-off-by: Bjorn Helgaas <[email protected]> CC: "David S. Miller" <[email protected]> CC: Geert Uytterhoeven <[email protected]> CC: Guan Xuetao <[email protected]> CC: Richard Henderson <[email protected]> CC: Ivan Kokshaysky <[email protected]> CC: Matt Turner <[email protected]>
This commit is contained in:
parent
c517d838eb
commit
c90570d951
6 changed files with 19 additions and 11 deletions
|
|
@ -207,6 +207,9 @@ nautilus_init_pci(void)
|
|||
|
||||
/* Scan our single hose. */
|
||||
bus = pci_scan_bus(0, alpha_mv.pci_ops, hose);
|
||||
if (!bus)
|
||||
return;
|
||||
|
||||
hose->bus = bus;
|
||||
pcibios_claim_one_bus(bus);
|
||||
|
||||
|
|
@ -253,6 +256,7 @@ nautilus_init_pci(void)
|
|||
for the root bus, so just clear it. */
|
||||
bus->self = NULL;
|
||||
pci_fixup_irqs(alpha_mv.pci_swizzle, alpha_mv.pci_map_irq);
|
||||
pci_bus_add_devices(bus);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in a new issue