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