![如何防止 USB 驱动程序 (EHCI) 在特定 USB 控制器(PCIe 卡)上加载?](https://linux22.com/image/188622/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%20USB%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%20(EHCI)%20%E5%9C%A8%E7%89%B9%E5%AE%9A%20USB%20%E6%8E%A7%E5%88%B6%E5%99%A8%EF%BC%88PCIe%20%E5%8D%A1%EF%BC%89%E4%B8%8A%E5%8A%A0%E8%BD%BD%EF%BC%9F.png)
我使用的是 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 阻止之前加载这些驱动程序?