Linux kernel 从内核设备驱动程序重新扫描PCIe
我有一个PCIe板,带有FPGA和我自己的内核设备驱动程序 加载FPGA后,我需要重新扫描PCIe树。 我使用常规的/sys/bus/pci/devices/xxx/remove+/sys/bus/pci/rescan来实现这一点 对这些文件的访问必须以root权限完成,这可能会很痛苦 可以从我的内核设备驱动程序重新扫描吗 我试图在open调用中调用pci_remove_bus()+pci_rescan_bus(),但我遇到了内核死机 在哪里可以找到pci_remove_bus()+pci_rescan_bus()使用的示例 谢谢Linux kernel 从内核设备驱动程序重新扫描PCIe,linux-kernel,Linux Kernel,我有一个PCIe板,带有FPGA和我自己的内核设备驱动程序 加载FPGA后,我需要重新扫描PCIe树。 我使用常规的/sys/bus/pci/devices/xxx/remove+/sys/bus/pci/rescan来实现这一点 对这些文件的访问必须以root权限完成,这可能会很痛苦 可以从我的内核设备驱动程序重新扫描吗 我试图在open调用中调用pci_remove_bus()+pci_rescan_bus(),但我遇到了内核死机 在哪里可以找到pci_remove_bus()+pci_re
弗雷德你必须持有公共汽车锁。否则它会像您描述的那样工作。请检查
bus\u rescan\u store()
实现。非常感谢,它工作正常。我只是在这个顺序之前添加了<代码> PCIyStutySand和ReaveVBuxDeVice()/代码>。顺便说一下,考虑使用/实现来自FPGA侧的PCI交换机,这样您就可以利用PCI热插拔机制,而不必手动处理这个问题。我不知道这个机制,怎么办?您必须持有总线锁。否则它会像您描述的那样工作。请检查bus\u rescan\u store()
实现。非常感谢,它工作正常。我只是在这个顺序之前添加了<代码> PCIyStutySand和ReaveVBuxDeVice()/代码>。顺便说一下,考虑使用/实现FPGA侧的PCI交换机,这样您就可以利用PCI热插拔机制,而不需要手动处理这个问题。我不知道这个机制,怎么办?