/* arch_initcall has too random ordering, so call the initializers in the right sequence from here. */ static __init int pci_access_init(void) { int type = 0; #ifdef CONFIG_PCI_DIRECT type = pci_direct_probe(); #endif #ifdef CONFIG_PCI_MMCONFIG pci_mmcfg_init(type); #endif if (raw_pci_ops) return 0; #ifdef CONFIG_PCI_BIOS pci_pcbios_init(); #endif /* * 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(type); #endif if (!raw_pci_ops) printk(KERN_ERR "PCI: Fatal: No config space access function found\n"); return 0; }
/* arch_initcall has too random ordering, so call the initializers in the right sequence from here. */ static __init int pci_access_init(void) { #ifdef CONFIG_PCI_MMCONFIG pci_mmcfg_init(); #endif if (raw_pci_ops) return 0; #ifdef CONFIG_PCI_BIOS pci_pcbios_init(); #endif if (raw_pci_ops) return 0; #ifdef CONFIG_PCI_DIRECT pci_direct_init(); #endif return 0; }
/**ltl 功能:初始化PCI设备配置的访问方式 */ static __init int pci_access_init(void) { #ifdef CONFIG_PCI_MMCONFIG pci_mmcfg_init();/*初始化增强配置访问方式*/ #endif if (raw_pci_ops) return 0; #ifdef CONFIG_PCI_BIOS pci_pcbios_init();/* 利用bios接口提供API来访问配置 */ #endif /* * 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();/* 利用config1或者config2访问 */ #endif return 0; }
static int __init jailhouse_pci_arch_init(void) { pci_direct_init(1); /* * There are no bridges on the virtual PCI root bus under Jailhouse, * thus no other way to discover all devices than a full scan. * Respect any overrides via the command line, though. */ if (pcibios_last_bus < 0) pcibios_last_bus = 0xff; #ifdef CONFIG_PCI_MMCONFIG if (setup_data.pci_mmconfig_base) { pci_mmconfig_add(0, 0, pcibios_last_bus, setup_data.pci_mmconfig_base); pci_mmcfg_arch_init(); } #endif return 0; }
/* arch_initcall has too random ordering, so call the initializers in the right sequence from here. */ int __init pci_arch_init(void) { #ifdef CONFIG_PCI_DIRECT int type = 0; type = pci_direct_probe(); #endif if (!(pci_probe & PCI_PROBE_NOEARLY)) pci_mmcfg_early_init(); #if 0 if (x86_init.pci.arch_init && !x86_init.pci.arch_init()) return 0; #endif #ifdef CONFIG_PCI_BIOS pci_pcbios_init(); #endif /* * 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(type); #endif if (!raw_pci_ops && !raw_pci_ext_ops) printk(KERN_ERR "PCI: Fatal: No config space access function found\n"); dmi_check_pciprobe(); dmi_check_skip_isa_align(); return 0; }
/* arch_initcall has too random ordering, so call the initializers in the right sequence from here. */ static __init int pci_access_init(void) { #ifdef CONFIG_PCI_DIRECT int type = 0; type = pci_direct_probe(); #endif pci_mmcfg_early_init(); #ifdef CONFIG_PCI_OLPC if (!pci_olpc_init()) return 0; /* skip additional checks if it's an XO */ #endif #ifdef CONFIG_PCI_BIOS pci_pcbios_init(); #endif /* * 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(type); #endif if (!raw_pci_ops && !raw_pci_ext_ops) printk(KERN_ERR "PCI: Fatal: No config space access function found\n"); dmi_check_pciprobe(); dmi_check_skip_isa_align(); return 0; }
/* arch_initcall has too random ordering, so call the initializers in the right sequence from here. */ static __init int pci_access_init(void) { #ifdef CONFIG_PCI_MMCONFIG pci_mmcfg_init(); #endif dmi_check_pciprobe(); if (raw_pci_ops) return 0; #ifdef CONFIG_PCI_BIOS pci_pcbios_init(); #endif /* * 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(); #endif return 0; }