文章目录 背景 何时如何被绑定到一起 调用时机 关于insmod和rmmod 关于driver和device匹配上 设备和驱动指定vendor id和device id方式 设备的vendor id和device id 驱动 其他 热插拔几个打印 【pcieport】pciehp: Slot(1): Card present 【pci】 Max Payload Size set to 【probe】 关于pci_device_id的数据结构 综述 背景 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