我正在为必须可热插拔的 PCIe 设备编写 Linux PCI 驱动程序。
该设备通过电缆连接到适合 PCIe 插槽的 PCIe 转接驱动卡。
当设备在启动时插入时,我可以找到它lspci
,并且驱动程序探测成功。但是,如果在运行时拔下电缆,lspci
仍然显示设备存在,并且remove
即使在将“1”回显到 后,也不会调用驱动程序的 PCI 方法/sys/bus/pci/rescan
。
lspci
如果设备在启动时未插入,则此问题会自行反转:即使在连接电缆后也不会显示,并且probe
不会调用该方法。
我的模块使用pci_register_driver()
andpci_unregister_driver()
库;驱动程序仅使用probe
andremove
方法(no suspend
or resume
),并id_table
初始化vendor id
and device id
。
Linux 内核中是否有需要调用的函数来注册 PCI 设备以进行热插拔?