LINUX内核PCI扫描过程
LINUX内核PCI扫描过程
内核版本 3.10.103
1. ACPI热插拔扫描
subsys_initcall(acpi_init)@drivers/acpi/bus.c
|-acpi_scan_init@drivers/acpi/scan.c
|->acpi_pci_root_init@drivers/acpi/pci_root.c
| |->acpi_scan_add_handler(&pci_root_handler)@drivers/acpi/scan.c
| |->list_add_tail(&handler->list_node, &acpi_scan_handlers_list);
|->acpi_pci_link_init@drivers/acpi/pci_link.c
| |->acpi_scan_add_handler(&pci_link_handler);
|->acpi_bus_scan(ACPI_ROOT_OBJECT)
|->acpi_bus_scan@drivers/acpi/scan.c
|->acpi_walk_namespace@drivers/acpi/acpica/nsxfeval.c
|->acpi_ns_walk_namespace@drivers/acpi/acpica/nswalk.c
|->acpi_bus_device_attach(即post_order_visit)
|->acpi_scan_attach_handler
|->acpi_scan_match_handler
|->handler->attach(即acpi_pci_root_add)
|->pci_acpi_scan_root@arch/x86/pci/probe.c
|->probe_pci_root_info
|->pci_scan_child_bus@drivers/pci/probe.c
|->pci_scan_slot
2. 传统扫描
subsys_initcall(pci_subsys_init)@arch/x86/pci/legacy.c
|->pci_legacy_init
|->pcibios_scan_root@arch/x86/pci/common.c
|->pci_scan_bus_on_node
|->pci_scan_root_bus
|->pci_scan_root_bus@drivers/pci/probe.c
|->pci_create_root_bus
|->pci_scan_child_bus
|->pci_scan_slot
更多相关文章
- 第一次发帖望各位大神帮顶啊!mini2440上的Linux2.6.32.2内核中含
- [置顶] Linux 内核学习(1)
- linux内核段属性机制(以subsys_initcall和module_init为例)
- 【Linxu内核设计与实现】-第7章 中断和中断处理
- Linux2.6内核调度器介绍
- iptables:传统的Linux防火墙管理程序
- Linux 3.4.39内核编译配置选项介绍
- ubuntu14.04下qemu调试linux内核
- ATT汇编与Intel汇编的区别,摘自《深入分析linux内核源码》一书