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