【81】linux下PCI 子系统

PCIe代码比较分散,X86下PCIe相关代码主要分散在下面目录(其他CPU架构下,大部分都差不多,主要是arch层不太一样)

driver/acpi/pci*

drivers/pci/*

arch/x86/pci/*

(1)Arch PCIe driver:放一些和架构强相关的PCIe的函数实现,X86 CPU对应arch/x86/pci /*.c

(2)ACPI PCIe driver: ACPI扫描时所涉及到的PCIe代码,包括host bridge的解析初始化,PCIe bus的创建,ecam的映射等, 对应drivers/acpi/pci*.c

(3)PCIe core driver: PCIe的子系统核心代码,包括PCIe的枚举流程,资源分配流程,中断流程等,主要对应drivers/pci/*.c

(4)PCIe port bus driver: 是PCIe portservice代码注册的框架代码, 在框架代码之上是四个service主要指的是PCIe dpc/pme/hotplug/aer,对应的是drivers/pci/pcie/*

(5)PCIe EP driver:是EP节点的设备驱动,比如GPU,网卡,NVMe、FC、SAS等。

root@switch2:/boot# ls -l

total 25992

-rw-r--r-- 1 root root  2685171 Sep 24  2020 System.map-3.16.0-5-amd64

-rw-r--r-- 1 root root   158141 Sep 24  2020 config-3.16.0-5-amd64

-rw-r--r-- 1 root root 20626396 Sep 24  2020 initrd.img-3.16.0-5-amd64

-rw-r--r-- 1 root root  3138896 Sep 24  2020 vmlinuz-3.16.0-5-amd64

root@switch2:/boot#

root@switch2:/boot# uname -a

Linux switch2 3.16.0-5-amd64 #1 SMP Debian 3.16.51-3+deb8u1 (2015-12-19) x86_64 GNU/Linux

加载顺序如下:

root@switch2:/boot#  cat System.map-3.16.0-5-amd64 | grep pci | grep initcall            

ffffffff81a0eab0 t __initcall_pcibus_class_init2

ffffffff81a0eab8 t __initcall_pci_driver_init2

ffffffff81a0eb48 t __initcall_acpi_pci_init3

ffffffff81a0eb68 t __initcall_register_xen_pci_notifier3

ffffffff81a0eb88 t __initcall_pci_arch_init3

ffffffff81a0ec90 t __initcall_pci_slot_init4

ffffffff81a0eca0 t __initcall_acpi_init4

ffffffff81a0ed40 t __initcall_pci_subsys_init4

ffffffff81a0eef8 t __initcall_pcibios_assign_resources5

ffffffff81a0ef28 t __initcall_pci_apply_final_quirks5s

ffffffff81a0ef40 t __initcall_pci_iommu_initrootfs

ffffffff81a0f2b8 t __initcall_pci_proc_init6

ffffffff81a0f2c0 t __initcall_pcie_portdrv_init6

ffffffff81a0f2d0 t __initcall_pcie_pme_service_init6

ffffffff81a0f2e0 t __initcall_pci_hotplug_init6

ffffffff81a0f2e8 t __initcall_pcied_init6

ffffffff81a0f360 t __initcall_platform_pci_module_init6

ffffffff81a0f390 t __initcall_serial_pci_driver_init6

ffffffff81a0f580 t __initcall_pci_resource_alignment_sysfs_init7

ffffffff81a0f588 t __initcall_pci_sysfs_init7

ffffffff81a0f5c8 t __initcall_pci_mmcfg_late_insert_resources7

1、pcibus_class_init

linux\drivers\pci\probe.c

主要目的是注册名字为”pci_bus”的class,并在sys文件系统创建节点

未完,不知道接下来什么时候有时间写了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linjiasen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值