linux/arch/tile/kernel
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
..
vdso tile: add clock_gettime support to vDSO 2014-10-02 13:56:07 -04:00
asm-offsets.c tile: check for correct compiler earlier in asm-offsets.c 2013-09-03 14:53:09 -04:00
backtrace.c
compat_signal.c tile: Use get_signal() signal_setup_done() 2014-08-06 13:03:20 +02:00
compat.c tile: remove stray blank space 2013-09-16 15:47:32 -04:00
early_printk.c printk: remove used-once early_vprintk 2014-12-10 17:41:10 -08:00
entry.S tile: implement gettimeofday() via vDSO 2013-08-13 16:26:21 -04:00
ftrace.c ftrace: Do not pass data to ftrace_dyn_arch_init 2014-03-07 10:06:14 -05:00
hardwall.c tile: use %*pb[l] to print bitmaps including cpumasks and nodemasks 2015-02-13 21:21:37 -08:00
head_32.S tile: parameterize VA and PA space more cleanly 2013-09-03 14:47:34 -04:00
head_64.S tile: parameterize VA and PA space more cleanly 2013-09-03 14:47:34 -04:00
hvglue_trace.c tile: provide traceability for hypervisor calls 2013-08-13 16:26:31 -04:00
hvglue.S tile: provide traceability for hypervisor calls 2013-08-13 16:26:31 -04:00
intvec_32.S tile: Enable NMIs on return from handle_nmi() without errors 2014-03-07 11:19:48 -05:00
intvec_64.S tile: Enable NMIs on return from handle_nmi() without errors 2014-03-07 11:19:48 -05:00
irq.c tile: Use the more common pr_warn instead of pr_warning 2014-11-11 15:51:42 -05:00
kgdb.c arch: tile: kernel: kgdb.c: Use memcpy() instead of pointer copy one by one 2014-11-12 14:27:10 -05:00
kprobes.c tile: Use the more common pr_warn instead of pr_warning 2014-11-11 15:51:42 -05:00
machine_kexec.c tile: Use the more common pr_warn instead of pr_warning 2014-11-11 15:51:42 -05:00
Makefile tile/perf: Support perf_events on tilegx and tilepro 2014-03-07 11:19:48 -05:00
mcount_64.S tile: ftrace: Remove check of obsolete variable function_trace_stop 2014-07-18 13:57:03 -04:00
messaging.c tile: Use the more common pr_warn instead of pr_warning 2014-11-11 15:51:42 -05:00
module.c module: remove mod arg from module_free, rename module_memfree(). 2015-01-20 11:38:33 +10:30
pci_gx.c PCI: Assign resources before drivers claim devices (pci_scan_root_bus()) 2015-03-19 10:17:13 -05:00
pci-dma.c tile PCI RC: make default consistent DMA mask 32-bit 2013-09-03 14:53:37 -04:00
pci.c PCI: Assign resources before drivers claim devices (pci_scan_root_bus()) 2015-03-19 10:17:13 -05:00
perf_event.c tile: Use this_cpu_ptr() for hardware counters 2014-08-26 13:45:55 -04:00
pmc.c tile: Add support for handling PMC hardware 2014-03-07 11:19:47 -05:00
proc.c tile: use %*pb[l] to print bitmaps including cpumasks and nodemasks 2015-02-13 21:21:37 -08:00
process.c tile: Use the more common pr_warn instead of pr_warning 2014-11-11 15:51:42 -05:00
ptrace.c tile: correct r1 value during syscall tracing 2013-08-30 11:56:20 -04:00
reboot.c tile: various console improvements 2013-08-12 14:46:18 -04:00
regs_32.S tile: change <asm/system.h> to <asm/switch_to.h> in comments 2013-09-03 14:53:17 -04:00
regs_64.S tile: change <asm/system.h> to <asm/switch_to.h> in comments 2013-09-03 14:53:17 -04:00
relocate_kernel_32.S tile: remove support for TILE64 2013-09-03 14:53:29 -04:00
relocate_kernel_64.S tile: remove support for TILE64 2013-09-03 14:53:29 -04:00
setup.c tile: use %*pb[l] to print bitmaps including cpumasks and nodemasks 2015-02-13 21:21:37 -08:00
signal.c all arches, signal: move restart_block to struct task_struct 2015-02-12 18:54:12 -08:00
single_step.c tile: Use the more common pr_warn instead of pr_warning 2014-11-11 15:51:42 -05:00
smp.c Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2014-10-15 07:48:18 +02:00
smpboot.c tile: Use the more common pr_warn instead of pr_warning 2014-11-11 15:51:42 -05:00
stack.c tile: Use the more common pr_warn instead of pr_warning 2014-11-11 15:51:42 -05:00
sys.c tile: support CONFIG_PREEMPT 2013-08-13 16:26:01 -04:00
sysfs.c tile: support reporting Tilera hypervisor statistics 2013-09-03 14:51:36 -04:00
tile-desc_32.c
tile-desc_64.c
time.c tile: Use the more common pr_warn instead of pr_warning 2014-11-11 15:51:42 -05:00
tlb.c tile: do less L1 I-cache eviction 2013-08-30 11:56:34 -04:00
traps.c tile: Use the more common pr_warn instead of pr_warning 2014-11-11 15:51:42 -05:00
unaligned.c tile: Use the more common pr_warn instead of pr_warning 2014-11-11 15:51:42 -05:00
usb.c
vdso.c arm64,ia64,ppc,s390,sh,tile,um,x86,mm: remove default gate area 2014-08-08 15:57:27 -07:00
vmlinux.lds.S tile: Remove tile-specific _sinitdata and _einitdata 2014-10-02 10:19:33 -04:00