linux/arch/powerpc/platforms/powermac
Oliver O'Halloran fbbefb3202 powerpc/pci: Move PHB discovery for PCI_DN using platforms
Make powernv, pseries, powermac and maple use ppc_mc.discover_phbs.
These platforms need to be done together because they all depend on
pci_dn's being created from the DT. The pci_dn contains a pointer to
the relevant pci_controller so they need to be created after the
pci_controller structures are available, but before PCI devices are
scanned. Currently this ordering is provided by initcalls and the
sequence is:

  1. PHBs are discovered (setup_arch) (early boot, pre-initcalls)
  2. pci_dn are created from the unflattended DT (core initcall)
  3. PHBs are scanned pcibios_init() (subsys initcall)

The new ppc_md.discover_phbs() function is also a core_initcall so we
can't guarantee ordering between the creation of pci_controllers and
the creation of pci_dn's which require a pci_controller. We could use
the postcore, or core_sync initcall levels, but it's cleaner to just
move the pci_dn setup into the per-PHB inits which occur inside of
.discover_phb() for these platforms. This brings the boot-time path in
line with the PHB hotplug path that is used for pseries DLPAR
operations too.

Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
[mpe: Squash powermac & maple in to avoid breakage those platforms,
      convert memblock allocs to use kmalloc to avoid warnings]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20201103043523.916109-2-oohall@gmail.com
2021-02-09 00:01:05 +11:00
..
Kconfig powerpc: enable a 30-bit ZONE_DMA for 32-bit pmac 2019-06-19 22:31:20 +10:00
Makefile kbuild: remove cc-option test of -fno-stack-protector 2020-07-07 11:13:10 +09:00
backlight.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
bootx_init.c powerpc: Replace _ALIGN() by ALIGN() 2020-05-11 23:15:16 +10:00
cache.S powerpc/powermac: Blacklist functions running with MMU disabled for kprobe 2020-06-02 20:59:09 +10:00
feature.c powerpc: Use fallthrough pseudo-keyword 2020-07-29 21:09:37 +10:00
low_i2c.c powerpc: use for_each_child_of_node() macro 2020-07-29 22:30:33 +10:00
nvram.c powerpc: Replace zero-length array with flexible-array 2020-05-15 11:58:54 +10:00
pci.c powerpc/pci: Move PHB discovery for PCI_DN using platforms 2021-02-09 00:01:05 +11:00
pfunc_base.c powerpc: use for_each_child_of_node() macro 2020-07-29 22:30:33 +10:00
pfunc_core.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
pic.c powerpc: Replace setup_irq() by request_irq() 2020-03-25 12:07:57 +11:00
pmac.h powerpc/smp: Move ppc_md.cpu_die() to smp_ops.cpu_offline_self() 2020-09-18 19:59:43 +10:00
setup.c powerpc/pci: Move PHB discovery for PCI_DN using platforms 2021-02-09 00:01:05 +11:00
sleep.S powerpc/powermac: Fix low_sleep_handler with CONFIG_VMAP_STACK 2020-12-08 21:41:03 +11:00
smp.c powerpc/64s: Trim offlined CPUs from mm_cpumasks 2020-11-27 00:10:39 +11:00
time.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
udbg_adb.c powerpc: Use device_type helpers to access the node type 2018-11-26 22:33:37 +11:00
udbg_scc.c powerpc: use for_each_child_of_node() macro 2020-07-29 22:30:33 +10:00