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

LINUX内核PCI扫描过程的更多相关文章

  1. Linux内核启动分析过程-《Linux内核分析》week3作业

    环境搭建 环境的搭建参考课件,主要就是编译内核源码和生成镜像 start_kernel 从start_kernel开始,才真正进入了Linux内核的启动过程.我们可以把start_kernel看做平时 ...

  2. 跟踪分析Linux内核的启动过程--实验报告 分析 及知识重点

    跟踪分析Linux内核的启动过程 攥写人:杨光  学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.stud ...

  3. 20135202闫佳歆--week3 跟踪分析Linux内核的启动过程--实验及总结

    实验三:跟踪分析Linux内核的启动过程 一.调试步骤如下: 使用gdb跟踪调试内核 qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd r ...

  4. 跟踪分析Linux内核的启动过程小解

    跟踪分析Linux内核的启动过程 “20135224陈实  + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029 ...

  5. 作业三:LINUX内核的启动过程

    作业三:LINUX内核的启动过程 一.使用GDB跟踪内核从start_kernel到init进程启动(附实验截图) (一)使用自己的Linux系统环境搭建MenuOS的过程 下载内核源代码编译内核 c ...

  6. 实验三:跟踪分析Linux内核的启动过程

    实验三:跟踪分析Linux内核的启动过程 学号:20135114 姓名:王朝宪 注: 原创作品转载请注明出处   <Linux内核分析>MOOC课程http://mooc.study.16 ...

  7. 跟踪调试Linux内核的启动过程

    跟踪调试Linux内核的启动过程---使用gdb 符钰婧 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/UST ...

  8. 20135239 益西拉姆 linux内核分析 跟踪分析Linux内核的启动过程

    回顾 1.中断上下文的切换——保存现场&恢复现场 本节主要课程内容 Linux内核源代码简介 1.打开内核源代码页面 arch/目录:支持不同CPU的源代码:其中的X86是重点 init/目录 ...

  9. Linux内核分析第三周学习博客——跟踪分析Linux内核的启动过程

    Linux内核分析第三周学习博客--跟踪分析Linux内核的启动过程 实验过程截图: 过程分析: 在Linux内核的启动过程中,一共经历了start_kernel,rest_init,kernel_t ...

随机推荐

  1. python小程序--Two

    一.程序需求 1.启动程序后,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4.可随时退出,退出时,打印已购买商品和 ...

  2. 【转】jenkins+gitlab配置遇到问题

    搭建jenkins+gitlab拉取代码失败,日志如下: ERROR: Error fetching remote repo 'origin'hudson.plugins.git.GitExcepti ...

  3. js数组创建两种方法

    一.数组直接量形式创建数组 var arr=[];//空数组 ,,,,,]; ,,,],{x:,y:}]; ; ,x+,x+]; console.log(arr3); //[1,3,3,4] ,,]; ...

  4. laravel composer

    composer config -g repo.packagist composer https://packagist.phpcomposer.com 改安装包的全局镜像网址

  5. Hunspell介绍及试用

    1.简介 Hunspell是一个为拥有多态和复杂组合词的语言所设计的拼写检查器,原本为匈牙利语设计. Hunspell是一个自由软件,在GPL.LGPL和MPL三许可证下发行. Hunspell对主要 ...

  6. kibana查询语法 使用教程

    1. 使用双引号包起来作为一个短语搜索: "like Gecko" 2. ? 匹配单个字符; * 匹配0到多个字符 例如:kiba?a, el*search ? * 不能用作第一个 ...

  7. mysql:数据库备份方案

    1. 数据库备份方案     1)没备份,跑路~     2)全量备份+增量备份 如果不小心“删库”,可以这么恢复: a. 将最近一次全量备份的全库找到,拷贝回来(文件一般比较大),解压,应用: b. ...

  8. vue单文件组件实例1:简单单文件组件

    ​ HelloWorld.vue: <template> <div class="hello"> <h1>{{msg}}</h1> ...

  9. shell编辑器vi的常用命令

    一:翻页 ctrl+u向上翻半页 ctrl+f向上翻一页 ctrl+d 向下翻半页 ctrl+b 向下翻一页 二:移动光标指令 0: 光标移至当前行首 $: 光标移至当前行尾 三:常用插入.删除指令 ...

  10. Sql Server语句大全

    T-SQL语句大全 --跳转到SQL myDemo USE [SQL myDemo] go --声明变量id declare @id int --为变量赋值:直接赋值 --将cid为3的cname值赋 ...