VFIO USB controller doesn't pass through usb devices

I have an AsRock X570D4U and I’m trying to passthrough the onboard USB ports to a vritual machine. I have checked IOMMU and their seperate on their own group

IOMMU Group 30 30:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 [1022:1639]
IOMMU Group 31 30:00.4 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 [1022:1639]

and when I pass them through to the virtual machine the vfio-pci driver is loaded on the USB controllers and they show up inside the VM using lspci

30:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 [1022:1639]
	Subsystem: ASRock Incorporation Device [1849:149c]
	Kernel driver in use: vfio-pci
	Kernel modules: xhci_pci
30:00.4 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 [1022:1639]
	Subsystem: ASRock Incorporation Device [1849:149c]
	Kernel driver in use: vfio-pci
	Kernel modules: xhci_pci

however all of the usb devices that I plug in are still bound to the host system and not the virtual machine, they show up in lsusb and work as if they were never passedthrough to the VM at all.

Does anyone have an idea what is going on here? from the looks of it everything should just work with the groups being seperate and even the vfio driver loading into the controllers.

There’s another controller.

1 Like

through further looking you are correct, I assumed the wrong controller since they are usb 3.2 gen 2 ports and gussed the “USB 3.1” controller in lspci were these but are in fact listed as 3.0 controller which I thought were the front panel ports.

WIth this is looks like I’m out of luck passing them through since they aren’t on an entirely seperate IOMMU group and it looks like the virtual USB from the IPMI interface also uses this controller.

This was one of my many frustrations with this board. I put a USB3 controller card in the x1 slot, but that won’t work for you if you have a two-slot GPU and can’t hang it off the bottom edge of the board or need to run it at x16.