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

最新文章

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

热门文章

  1. Oracle中hex和raw的相互转换
  2. 2017-2018_OCR_papers汇总
  3. delphi 的一些注意点和知识点
  4. 用Python3实现的Mycin专家系统简单实例
  5. Windows Server 2012安装IIS 8.0
  6. oracle 两张关联表执行更新update
  7. Vue入门:Vue项目创建及启动
  8. xtrabackup 2.4.3 BUG
  9. php 使用代理IP进行数据抓取
  10. golang设置title并获取窗口句柄