Pull thermal into release branch
[linux-drm-fsl-dcu.git] / arch / i386 / pci / init.c
index c7650a7e0b077b0c482d9a7f759982c40abb4a72..3de9f9ba2da6aed8be73921f3f416ed8af444a49 100644 (file)
@@ -6,19 +6,32 @@
    in the right sequence from here. */
 static __init int pci_access_init(void)
 {
+       int type __maybe_unused = 0;
+
+#ifdef CONFIG_PCI_DIRECT
+       type = pci_direct_probe();
+#endif
 #ifdef CONFIG_PCI_MMCONFIG
-       pci_mmcfg_init();
+       pci_mmcfg_init(type);
 #endif
        if (raw_pci_ops)
                return 0;
 #ifdef CONFIG_PCI_BIOS
        pci_pcbios_init();
 #endif
-       if (raw_pci_ops)
-               return 0;
+       /*
+        * don't check for raw_pci_ops here because we want pcbios as last
+        * fallback, yet it's needed to run first to set pcibios_last_bus
+        * in case legacy PCI probing is used. otherwise detecting peer busses
+        * fails.
+        */
 #ifdef CONFIG_PCI_DIRECT
-       pci_direct_init();
+       pci_direct_init(type);
 #endif
+       if (!raw_pci_ops)
+               printk(KERN_ERR
+               "PCI: Fatal: No config space access function found\n");
+
        return 0;
 }
 arch_initcall(pci_access_init);