Proxmox. USB passthrough. Zmiana sterownika na vfio-pci.
Jeśli chcemy dołączyć do maszyny wirtualnej kontroler usb, który jest w oddzielej grupie iommu a pomimo tego nadal występuję problem to najprawdopodobniej sterownik xhci_hcd przejął kontroler USB zamiast vfio-pci.
Sprawdzamy jaki sterownik jest podpięty pod nasz kontroler usb
lspci -v
W moim przypadku kontroler usb jest pod adresem 0000:0c:00.3 i używa xhci_hcd
0c:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller (prog-if 30 [XHCI])
Subsystem: Gigabyte Technology Co., Ltd Matisse USB 3.0 Host Controller
Flags: bus master, fast devsel, latency 0, IRQ 121, IOMMU group 20
Memory at fc800000 (64-bit, non-prefetchable) [size=1M]
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
Capabilities: [64] Express Endpoint, MSI 00
Capabilities: [a0] MSI: Enable+ Count=1/8 Maskable- 64bit+
Capabilities: [c0] MSI-X: Enable- Count=8 Masked-
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [150] Advanced Error Reporting
Capabilities: [2a0] Access Control Services
Capabilities: [370] Transaction Processing Hints
Kernel driver in use: xhci_hcd
Kernel modules: xhci_pci
Problem można rozwiązać w prosty sposób używając narzędzia driverctl:
Jeśli proxmox nie posiada driverctl to doinstalowujemy
apt install driverctl
Wprowadzamy komendę
driverctl set-override 0000:0c:00.3 vfio-pci
Po restarcie jest już vfio-pci.
0c:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller (prog-if 30 [XHCI])
Subsystem: Gigabyte Technology Co., Ltd Matisse USB 3.0 Host Controller
Flags: bus master, fast devsel, latency 0, IRQ 121, IOMMU group 20
Memory at fc800000 (64-bit, non-prefetchable) [size=1M]
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
Capabilities: [64] Express Endpoint, MSI 00
Capabilities: [a0] MSI: Enable+ Count=1/8 Maskable- 64bit+
Capabilities: [c0] MSI-X: Enable- Count=8 Masked-
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [150] Advanced Error Reporting
Capabilities: [2a0] Access Control Services
Capabilities: [370] Transaction Processing Hints
Kernel driver in use: vfio-pci
Kernel modules: xhci_pci
Teraz można już dodać kontroler do maszyny wirtualnej