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
最新文章
- 如何使用Python在Kaggle竞赛中成为Top15
- linux 命令行启动虚拟机
- JQuery获取元素本身HTML
- MS SQL Server2014链接MS SQL Server 2000
- js事件捕获,事件冒泡,事件委托以及DOM事件流
- Linux内核分析——操作系统是如何工作的
- AX 2012 EP服务器配置多个环境
- Delphi初学者,向万一老师致敬
- lei
- 如何在linux console中显示当前你在的branch?
- android138 360 小火箭
- 第十三章——表和索引分区(1)——使用Range Left进行表分区
- 学习CSS了解单位em和px的区别
- JWT 在前后端分离中的应用与实践
- hdu 5532(最长上升子序列)
- node npm --save,不同JS解析器的内置全局变量,PROMISE,CONST---ES6
- vue项目插入视频-mp4
- js-ES6学习笔记-module(4)
- MyEclipse中设置jsp页面为默认utf-8编码
- [LeetCode] 102. Binary Tree Level Order Traversal_Medium tag: BFS