我开始为通过笔记本电脑的 PCIe 扩展槽连接的 PCI 设备开发 Linux 设备驱动程序。
在启动时,一切正常。但是,我正在尝试在线获得基本的 Hotplug 支持。当我弹出卡时,我可以看到 (in dmesg
) 调用了正确的删除内容。但是,当重新插入卡时,什么也没有发生。如果我手动移除模块,然后插入卡(或开机后插入卡),那么我可以看到模块init
被调用,但没有probe
。此外,该设备不会出现在lspci
输出中。
但是,如果 Iecho 1 > /sys/bus/pci/rescan
那么它出现在lspci
输出中,但模块无法加载并出现错误 ( pci_enable_device failed with code -22
)。
有什么想法可以从哪里开始诊断?执行失败.probe
是真正让我感到困惑的地方。
我应该提到这是一个连接在这里的 FPGA 板,所以设备本身可能有问题,但我仍然希望探针运行,然后稍后会出现奇怪的错误而失败。