[PATCH v6 30/30] Revert "powerpc/powernv/pci: Work around races in PCI bridge enabling"
Sergey Miroshnichenko
s.miroshnichenko at yadro.com
Fri Oct 25 04:12:28 AEDT 2019
This reverts commit db2173198b9513f7add8009f225afa1f1c79bcc6.
The root cause of this bug is fixed by the following two commits:
1. "PCI: Fix race condition in pci_enable/disable_device()"
2. "PCI: Enable bridge's I/O and MEM access for hotplugged devices"
The x86 is also affected by this bug if a PCIe bridge has been hotplugged
without pre-enabling by the BIOS.
CC: Benjamin Herrenschmidt <benh at kernel.crashing.org>
Signed-off-by: Sergey Miroshnichenko <s.miroshnichenko at yadro.com>
---
arch/powerpc/platforms/powernv/pci-ioda.c | 37 -----------------------
1 file changed, 37 deletions(-)
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
index 33d5ed8c258f..f12f3a49d3bb 100644
--- a/arch/powerpc/platforms/powernv/pci-ioda.c
+++ b/arch/powerpc/platforms/powernv/pci-ioda.c
@@ -3119,49 +3119,12 @@ 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
--
2.23.0
More information about the Linuxppc-dev
mailing list