微代码-Linux pcie驱动是如何将driver和device绑定到一起,以及何时调用的?(pci_device_id table、配置空间)

背景

linux pcie设备驱动框架主体框架分为device和driver两部分。
driver通过指定vendorid和deviceid告诉内核pci子模块,该驱动支持的绑定的设备有哪些,以便有对应设备的时候可以直接调用。
device是bios期间通过ACPI扫描预留资源或者开启pci=realloc之后动态创建的pcie设备,是一棵树,包括了bus和id。
本文主要介绍这里提到的他们两个何时如何被绑定到一起,以及这里提到的关键vendorid和deviceid如何指定

何时如何被绑定到一起

调用时机

预览图:

insmod
rmmod
insmod
rmmod
hotplug
hotunplug
调用时机
Event:插入卸载驱动
Event: 设备热插拔
设备已经存在
可能是bios扫描
可能是hotplug
设备不存在
驱动已经存在
驱动不存在
调用init注册pci_register_driver
如果存在进一步调用probe
调用exit注销pci_unregister_driver
如果存在进一步调用remove
只调用init注册pci_register_driver
不触发probe
调用exit注销pci_unregister_driver
不触发probe
触发linuxpcie子模块pcieport模块hotplug
触发pciehpplug事件
触发linuxpcie子模块pcieport模块hotpunlug
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值