我有一个FPGA(就像大多数人问这个问题一样),在我的Linux内核执行了初始PCIe总线扫描和枚举之后就对其进行了配置。如您所料,FPGA实现了PCIe端点。
我想让PCIe核心重新枚举整个PCIe总线,这样我的FPGA就会显示出来,并且可以加载我的驱动程序模块。我还希望能够交换FPGA来加载不同的配置。我的意思是,我希望能够:

  • 引导Linux
  • 配置FPGA
  • 枚举PCIe端点并加载模块
  • 删除PCIe端点
  • 重新配置FPGA
  • 重新枚举PCIe端点

  • 全部无需重启Linux
    这里是在其他地方提出但不能解决问题的解决方案。echo 1 > /sys/bus/pci/rescan这似乎可行(仅在某些情况下可行),并且如果我想在首次枚举FPGA负载后热交换它,则无法正常工作。
    可以使用PCIe的热插拔/电源管理工具来完成这项工作吗?如果是这样,那么有什么好的资源可以将Hotplug系统与PCIe一起使用? (LDD并未完全涵盖它)

    最佳答案

    通过echo 1 > /sys/bus/pci/rescan重新枚举PCIe总线/树是正确的解决方案。我们使用的方式与您描述的相同。

    我们正在使用echo 1 > $pcidevice/remove断开驱动程序与设备的连接,并将设备与树分离。驱动程序(xillybus)不会卸载,只是断开连接。

    更好的解决方案是仅重新扫描与FPGA相连的节点。这减少了对系统的总体影响。

    该技术用于RC3E FPGA云系统。

    关于linux-kernel - 如何对PCIe总线进行真实的重新扫描,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32334870/

    10-16 06:40