如何防止 USB 驱动程序 (EHCI) 在特定 USB 控制器(PCIe 卡)上加载?

如何防止 USB 驱动程序 (EHCI) 在特定 USB 控制器(PCIe 卡)上加载?

我使用的是 Debian 10.8 和 Linux 内核 4.19.0-14。

我正在尝试使用 IOMMU 传递整个 USB 控制器(PCI Express 卡),但遇到问题。内核正在加载 ohci_pci 和 ehci_pci 驱动程序,我似乎无法阻止它或取消绑定它们。

我尝试删除它们(echo 1 > /sys/bus/pci/devices/...),但它冻结了系统。 (内核通过堆栈跟踪等显示内核 BUG)

因此,我试图阻止内核绑定 ohci 和 ehci 驱动程序,以便 VFIO 可以使用它们而无需先解除绑定。

我尝试了几件事:

  • 将 pci-stub.ids vfio-pci.ids 添加到 GRUB 内核命令行。
  • 将 PCI 设备别名为虚拟驱动程序 (/etc/modprobe.d/vfio-pci.conf)
  • 将 ohci_pci 和 ehci_pci 列入黑名单 (/etc/modprobe.d/blacklist.conf)
  • 使用 /sys/bus/pci/devices/.../unbind 取消绑定驱动程序(但这会冻结系统)

我认为内核正在使用内置的 ohci/ehci 驱动程序(而不是模块),因此也许它会在 pci-stub 或 vfio 阻止之前加载这些驱动程序?

相关内容