我使用的是 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 阻止之前加载这些驱动程序?