1 #include <linux/pci.h> 2 #include <linux/init.h> 3 #include "pci.h" 4 5 /* arch_initcall has too random ordering, so call the initializers 6 in the right sequence from here. */ 7 static __init int pci_arch_init(void) 8 { 9 #ifdef CONFIG_PCI_DIRECT 10 int type = 0; 11 12 type = pci_direct_probe(); 13 #endif 14 15 pci_mmcfg_early_init(); 16 17 #ifdef CONFIG_PCI_OLPC 18 if (!pci_olpc_init()) 19 return 0; /* skip additional checks if it's an XO */ 20 #endif 21 #ifdef CONFIG_PCI_BIOS 22 pci_pcbios_init(); 23 #endif 24 /* 25 * don't check for raw_pci_ops here because we want pcbios as last 26 * fallback, yet it's needed to run first to set pcibios_last_bus 27 * in case legacy PCI probing is used. otherwise detecting peer busses 28 * fails. 29 */ 30 #ifdef CONFIG_PCI_DIRECT 31 pci_direct_init(type); 32 #endif 33 if (!raw_pci_ops && !raw_pci_ext_ops) 34 printk(KERN_ERR 35 "PCI: Fatal: No config space access function found\n"); 36 37 dmi_check_pciprobe(); 38 39 dmi_check_skip_isa_align(); 40 41 return 0; 42 } 43 arch_initcall(pci_arch_init); 44