Linux kernel 多次加载和卸载PCI驱动程序会导致其/sys/bus/PCI/devices/xxx目录消失

Linux kernel 多次加载和卸载PCI驱动程序会导致其/sys/bus/PCI/devices/xxx目录消失,linux-kernel,linux-device-driver,pci,Linux Kernel,Linux Device Driver,Pci,我有一个用于FPGA卡的PCI驱动程序,可以安装并正常工作。但是,我们需要在不重新启动的情况下清理系统,包括卸载此驱动程序 重新启动而不重新启动时,将重新安装驱动程序。我发现,当我多次安装/卸载这个过程时,在第5次卸载驱动程序时,与设备关联的目录就消失了 由于链接错误,lspci命令无法再找到我的设备。我必须重新启动才能再次显示设备目录/sys/bus/pci/devices/00000:04:00.0 通过一些实验并将驱动程序减少到最低限度,我发现如果我不调用pci_enable_设备。。在我

我有一个用于FPGA卡的PCI驱动程序,可以安装并正常工作。但是,我们需要在不重新启动的情况下清理系统,包括卸载此驱动程序

重新启动而不重新启动时,将重新安装驱动程序。我发现,当我多次安装/卸载这个过程时,在第5次卸载驱动程序时,与设备关联的目录就消失了

由于链接错误,lspci命令无法再找到我的设备。我必须重新启动才能再次显示设备目录/sys/bus/pci/devices/00000:04:00.0

通过一些实验并将驱动程序减少到最低限度,我发现如果我不调用pci_enable_设备。。在我的pci_probe_方法中运行,然后我可以多次安装/卸载驱动程序而不会出错

当然,我需要先调用这个方法,然后才能对设备执行任何操作,但我想确定这不是我正在执行的更复杂的初始化导致的问题


我已验证在pci_remove_方法中调用了我对pci_disable_设备的调用。我应该能够无限期地启用和禁用PCI设备,对吗?如果您能帮我弄清楚发生了什么,我们将不胜感激

这个问题的实际解决方案是消除我不得不给pci_dev_put打的一个无关的电话。。。我以前在提交问题时没有注意到这一点。这是此驱动程序未使用pci_probe方法发现此设备时留下的。因此,在退出例程中执行此调用会导致此设备的结构在5次调用后消失。所以现在这个问题已经解决了