I am trying to passthrough a USB card to a guest, but I can't seem to make the VFIO driver stick, instead it seems that the host loads and takes over the card. I have a GPU successfully passed through, so I am sure that vfio/IOMMU are working.
card: Sonnet Allegro USB 3.1, Two-Port USB-C 10Gb PCIe Card (USB3C-2PM-E) motherboard: ASRock x399 Taichi CPU: Threadripper 1950x I tried following the same procedure that I used to passthrough a GPU, which I mostly learned here:
First, get the ID of the card:
~ lspci | grep USB
01:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] Device 43ba (rev 02)
0a:00.0 USB controller: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller
0b:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) USB 3.0 Host Controller
45:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) USB 3.0 Host Controller
Next. get the vendor, product ID, and an alias, then modify system files accordingly in hopes that it will prevent the card from being grabbed by the host:
~ lspci -nn | grep 0a:00
0a:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller [1b21:1242]
cat /sys/bus/pci/devices/0000:0a:00.0/modalias
pci:v00001B21d00001242sv000016B8sd00007230bc0Csc03i30
~ sudo nano /etc/modprobe.d/local.conf
paste at end:
alias pci:v00001B21d00001242sv000016B8sd00007230bc0Csc03i30 vfio-pci
options vfio-pci ids=1b21:1242
then:
~ sudo update-initramfs -u
and reboot and check if the card is using the vfio driver:
~ lspci -kn | grep -A 2 0a
0a:00.0 0c03: 1b21:1242
Subsystem: 16b8:7230
Kernel driver in use: xhci_hcd
I also tried making an override script as per the same blog mentioned above:
sudo nano /sbin/vfio-pci-override-usb.sh
#!/bin/sh
DEVS="0000:0a:00.0"
for DEV in $DEVS; do
echo "vfio-pci" > /sys/bus/pci/devices/$DEV/driver_override
done
modprobe -i vfio-pci
#####
sudo chmod 755 /sbin/vfio-pci-override-usb.sh
sudo nano /etc/modprobe.d/local.conf
commented out previous entry and added:
install vfio-pci /sbin/vfio-pci-override-usb.sh
sudo update-initramfs -u
reboot
but still no good:
~ lspci -kn | grep -A 2 0a:00
0a:00.0 0c03: 1b21:1242
Subsystem: 16b8:7230
Kernel driver in use: xhci_hcd
also: When I look for the driver, in lspci (to see what else is using it), it brings up a bunch of devices but not 0a:00.
~ lspci -kn | grep -A 2 xhci
Kernel driver in use: xhci_hcd
01:00.1 0106: 1022:43b6 (rev 02)
Subsystem: 1b21:1062
--
Kernel driver in use: xhci_hcd
0b:00.0 1300: 1022:145a
Subsystem: 1022:145a
--
Kernel driver in use: xhci_hcd
0c:00.0 1300: 1022:1455
Subsystem: 1022:1455
--
Kernel driver in use: xhci_hcd
46:00.0 1300: 1022:1455
Subsystem: 1022:1455
Next I tried Tried blacklisting the driver:
sudo nano /etc/default/grub
# original: GRUB_CMDLINE_LINUX_DEFAULT=”amd_iommu=on”
# to:
GRUB_CMDLINE_LINUX_DEFAULT=”modprobe.blacklist=xhci_hcd amd_iommu=on”
##then:
sudo update-grub
##Uncomment in local.conf:
# options vfio-pci ids=1b21:1242
sudo update-initramfs -u
still no:
lspci -kn | grep -A 2 0a:00
0a:00.0 0c03: 1b21:1242
Subsystem: 16b8:7230
Kernel driver in use: xhci_hcd
What else might I try? Am I correct that the kernel driver in use for that device must be vfio-pci?