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 <b...@kernel.crashing.org>
Signed-off-by: Sergey Miroshnichenko <s.miroshniche...@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

Reply via email to