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가 먼저 바인딩을 해제하지 않고도 사용할 수 있도록 노력하고 있습니다.

나는 몇 가지를 시도했습니다:

  • GRUB 커널 명령줄에 pci-stub.ids vfio-pci.ids를 추가합니다.
  • 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 블록 이전에 해당 드라이버를 로드할 수도 있습니까?

관련 정보