Merge tag 'powerpc-4.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
Pull powerpc fixes from Michael Ellerman: - An implementation for the newly added hv_ops->flush() for the OPAL hvc console driver backends, I forgot to apply this after merging the hvc driver changes before the merge window. - Enable all PCI bridges at boot on powernv, to avoid races when multiple children of a bridge try to enable it simultaneously. This is a workaround until the PCI core can be enhanced to fix the races. - A fix to query PowerVM for the correct system topology at boot before initialising sched domains, seen in some configurations to cause broken scheduling etc. - A fix for pte_access_permitted() on "nohash" platforms. - Two commits to fix SIGBUS when using remap_pfn_range() seen on Power9 due to a workaround when using the nest MMU (GPUs, accelerators). - Another fix to the VFIO code used by KVM, the previous fix had some bugs which caused guests to not start in some configurations. - A handful of other minor fixes. Thanks to: Aneesh Kumar K.V, Benjamin Herrenschmidt, Christophe Leroy, Hari Bathini, Luke Dashjr, Mahesh Salgaonkar, Nicholas Piggin, Paul Mackerras, Srikar Dronamraju. * tag 'powerpc-4.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: powerpc/mce: Fix SLB rebolting during MCE recovery path. KVM: PPC: Book3S: Fix guest DMA when guest partially backed by THP pages powerpc/mm/radix: Only need the Nest MMU workaround for R -> RW transition powerpc/mm/books3s: Add new pte bit to mark pte temporarily invalid. powerpc/nohash: fix pte_access_permitted() powerpc/topology: Get topology for shared processors at boot powerpc64/ftrace: Include ftrace.h needed for enable/disable calls powerpc/powernv/pci: Work around races in PCI bridge enabling powerpc/fadump: cleanup crash memory ranges support powerpc/powernv: provide a console flush operation for opal hvc driver powerpc/traps: Avoid rate limit messages from show unhandled signals powerpc/64s: Fix PACA_IRQ_HARD_DIS accounting in idle_power4()
This commit is contained in:
@@ -3228,12 +3228,49 @@ static void pnv_pci_ioda_create_dbgfs(void)
|
||||
#endif /* CONFIG_DEBUG_FS */
|
||||
}
|
||||
|
||||
static void pnv_pci_enable_bridge(struct pci_bus *bus)
|
||||
{
|
||||
struct pci_dev *dev = bus->self;
|
||||
struct pci_bus *child;
|
||||
|
||||
/* Empty bus ? bail */
|
||||
if (list_empty(&bus->devices))
|
||||
return;
|
||||
|
||||
/*
|
||||
* If there's a bridge associated with that bus enable it. This works
|
||||
* around races in the generic code if the enabling is done during
|
||||
* parallel probing. This can be removed once those races have been
|
||||
* fixed.
|
||||
*/
|
||||
if (dev) {
|
||||
int rc = pci_enable_device(dev);
|
||||
if (rc)
|
||||
pci_err(dev, "Error enabling bridge (%d)\n", rc);
|
||||
pci_set_master(dev);
|
||||
}
|
||||
|
||||
/* Perform the same to child busses */
|
||||
list_for_each_entry(child, &bus->children, node)
|
||||
pnv_pci_enable_bridge(child);
|
||||
}
|
||||
|
||||
static void pnv_pci_enable_bridges(void)
|
||||
{
|
||||
struct pci_controller *hose;
|
||||
|
||||
list_for_each_entry(hose, &hose_list, list_node)
|
||||
pnv_pci_enable_bridge(hose->bus);
|
||||
}
|
||||
|
||||
static void pnv_pci_ioda_fixup(void)
|
||||
{
|
||||
pnv_pci_ioda_setup_PEs();
|
||||
pnv_pci_ioda_setup_iommu_api();
|
||||
pnv_pci_ioda_create_dbgfs();
|
||||
|
||||
pnv_pci_enable_bridges();
|
||||
|
||||
#ifdef CONFIG_EEH
|
||||
pnv_eeh_post_init();
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user