linux/arch/mips/pci
Yijing Wang b97ea289cf PCI: Assign resources before drivers claim devices (pci_scan_root_bus())
Previously, pci_scan_root_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_root_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_root_bus() and do it after any
resource assignment in the callers.

Note that ARM's pci_common_init_dev() already called pci_bus_add_devices()
after pci_scan_root_bus(), so we only need to remove the first call:

  pci_common_init_dev
    pcibios_init_hw
      pci_scan_root_bus
        pci_bus_add_devices        # first call
    pci_bus_assign_resources
    pci_bus_add_devices            # second call

[bhelgaas: changelog, drop "root_bus" var in alpha common_init_pci(),
return failure earlier in mn10300, add "return" in x86 pcibios_scan_root(),
return early if xtensa platform_pcibios_fixup() fails]
Signed-off-by: Yijing Wang <wangyijing@huawei.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
CC: Richard Henderson <rth@twiddle.net>
CC: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
CC: Matt Turner <mattst88@gmail.com>
CC: David Howells <dhowells@redhat.com>
CC: Tony Luck <tony.luck@intel.com>
CC: Michal Simek <monstr@monstr.eu>
CC: Ralf Baechle <ralf@linux-mips.org>
CC: Koichi Yasutake <yasutake.koichi@jp.panasonic.com>
CC: Sebastian Ott <sebott@linux.vnet.ibm.com>
CC: "David S. Miller" <davem@davemloft.net>
CC: Chris Metcalf <cmetcalf@ezchip.com>
CC: Chris Zankel <chris@zankel.net>
CC: Max Filippov <jcmvbkbc@gmail.com>
CC: Thomas Gleixner <tglx@linutronix.de>
2015-03-19 10:17:13 -05:00
..
fixup-bcm63xx.c
fixup-capcella.c
fixup-cobalt.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fixup-emma2rh.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fixup-fuloong2e.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fixup-ip32.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fixup-jmr3927.c
fixup-lantiq.c of/irq: Create of_irq_parse_and_map_pci() to consolidate arch code. 2013-10-24 11:50:36 +01:00
fixup-lemote2f.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fixup-loongson3.c MIPS: Loongson 3: Add HT-linked PCI support 2014-03-31 18:17:12 +02:00
fixup-malta.c MIPS: Malta: Let PIIX4 respond to PCI special cycles 2014-05-30 21:01:09 +02:00
fixup-mpc30x.c mips: mark const init data with __initconst instead of __initdata 2012-07-19 11:23:43 +02:00
fixup-pmcmsp.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fixup-rbtx4927.c
fixup-rbtx4938.c
fixup-rc32434.c mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
fixup-sb1250.c mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
fixup-sni.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fixup-tb0219.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fixup-tb0226.c
fixup-tb0287.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
Makefile MIPS: ath25: add AR2315 PCI host controller driver 2014-11-24 07:45:28 +01:00
msi-octeon.c PCI/MSI: Rename write_msi_msg() to pci_write_msi_msg() 2014-11-23 13:01:45 +01:00
msi-xlp.c Merge branch 'irq-irqdomain-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-12-10 09:01:01 -08:00
ops-bcm63xx.c MIPS: Remove useless parentheses 2014-11-24 07:44:49 +01:00
ops-bonito64.c mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
ops-bridge.c MIPS: IP27: Correct fucked grammar in ops-bridge.c 2012-12-13 18:15:28 +01:00
ops-emma2rh.c
ops-gt64xxx_pci0.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
ops-lantiq.c mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
ops-loongson2.c mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
ops-loongson3.c MIPS: Loongson 3: Add HT-linked PCI support 2014-03-31 18:17:12 +02:00
ops-mace.c mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
ops-msc.c mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
ops-nile4.c MIPS: NILE4: Remove odd locking in PCI config space access code 2014-11-24 07:44:49 +01:00
ops-pmcmsp.c MIPS: MSP71xx: remove odd locking in PCI config space access code 2014-11-24 07:44:50 +01:00
ops-rc32434.c mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
ops-sni.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
ops-tx3927.c mips: Update the email address of Geert Uytterhoeven 2014-06-02 16:34:41 +02:00
ops-tx4927.c MIPS: TXx9: Delete an unused variable in tx4927_pcibios_setup 2014-07-30 15:58:39 +02:00
ops-vr41xx.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
pci-alchemy.c mips: pci: drop owner assignment from platform_drivers 2014-10-20 16:20:08 +02:00
pci-ar71xx.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
pci-ar724x.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
pci-ar2315.c MIPS: ath25: add AR2315 PCI host controller driver 2014-11-24 07:45:28 +01:00
pci-bcm47xx.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
pci-bcm63xx.c MIPS: BCM63XX: add support for BCM3368 Cable Modem 2013-07-01 15:10:53 +02:00
pci-bcm63xx.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
pci-bcm1480.c MIPS: Add struct pci_ops member names to initialization 2015-01-16 15:04:38 +01:00
pci-bcm1480ht.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
pci-emma2rh.c
pci-ip27.c mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
pci-ip32.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
pci-lantiq.c Merge branch 'platform/remove_owner' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux into driver-core-next 2014-11-03 19:53:56 -08:00
pci-lantiq.h
pci-lasat.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
pci-malta.c MIPS: Malta: Make use of generic CM support 2014-03-26 23:09:06 +01:00
pci-octeon.c MIPS: Add struct pci_ops member names to initialization 2015-01-16 15:04:38 +01:00
pci-rc32434.c MIPS: RC32434: fix broken PCI resource initialization 2014-05-26 09:02:06 +02:00
pci-rt2880.c MIPS: ralink: add rt2880 pci driver 2014-11-24 07:45:25 +01:00
pci-rt3883.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
pci-sb1250.c TTY:vt: convert remain take_over_console's users to do_take_over_console 2013-05-20 22:29:27 -07:00
pci-tx4927.c
pci-tx4938.c
pci-tx4939.c mips: Convert pr_warning to pr_warn 2014-11-24 07:44:51 +01:00
pci-virtio-guest.c MIPS: paravirt: Add pci controller for virtio 2014-06-02 12:34:20 +02:00
pci-vr41xx.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
pci-vr41xx.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
pci-xlp.c MIPS: PCI: Netlogic XLP9XX support 2014-01-24 22:39:49 +01:00
pci-xlr.c PCI/MSI: Rename write_msi_msg() to pci_write_msi_msg() 2014-11-23 13:01:45 +01:00
pci.c PCI: Assign resources before drivers claim devices (pci_scan_root_bus()) 2015-03-19 10:17:13 -05:00
pcie-octeon.c MIPS: Add struct pci_ops member names to initialization 2015-01-16 15:04:38 +01:00