Good 8-Port USB PCIe card for passthrough?

Came along this card

Was thinking how well it would work when it comes to passthrough/IOMMU grouping etc…

The specs say that it has 4 controllers.

  • 4x Renesas μPD720202 Host Controllers
  • Compliant with Universal Serial Bus 3.0 specification Revision 1.0
  • Compliant with Intel® xHCI specification Revision 1.0

So, Can I assume we would easily get 2 ports per VM without much fiddling around ?

I dont think so. I’m not an expert on the subject as I have not set up passthrough myself but from what I understand of the theory, you can either pass the card or not. You cant just pass 2 ports on the card. Its an all or nothing thing.

I should have recalled that PCI passthrough is at PCI ‘function’ level :man_facepalming:
Unless the card portrays itself as 4 virtual PCI USB cards(or functions) to the OS, we might not be getting what we thought of.:expressionless:

1 Like

I’ve got a bit of experience with situations like this.

You won’t be able to pass it through to different VMs, unless it supports SR-IOV.

The reason for that is that even if each controller shows up as an individual PCI device, it’s going to wind up in the same IOMMU group. ACS patch may help in that situation, but it’s highly unlikely.

1 Like

I have had experience with passing controllers through to different VMs. If it has 4 different controllers that show up as different /dev/sys/usb devices, then you can pass that through. That is a big if though as you will probably have to buy it to find out. It would not be IOMMU but the overhead would not matter much as USB is mostly a CPU bound protocol anyway.

1 Like

I was looking to use a similar card that had 4 Renesas controllers on it but post on a forum somewhere said it didn’t work. Apparently the 4 controllers could be passed through to separate VM’s without problems and they would show up in the guests. The problem was that no USB devices would be detected. I think in theory it could work but it comes down to implementation. The card was very expensive too so I wasn’t will to gamble that I could get it to work. I really wish it would work because after stuffing 3x dual slot GPU’s in there isn’t much room for USB cards.

The card I was thinking about was the StarTech PEXUSB3S44V. It’s only 4 ports but each port is on it’s own controller so you could connect a hub to each port if needed.

I would like to take a moment to understand what the ACS patch really does & how does it magically enable favorable IOMMU grouping ?
From what I can understand… ACS stands for Access Control Services & Then, PCIe cards seems to work like Computers in a network & communicate in packets with source & destination addresses. Then they say that it is possible for 2 PCIe devices to get cozy with each other & communicate in a P2P fashion. (Check this ppt, slide 33) I assume that it may be via the dumb PCIe switch.
Then they say using ACS, they can make the P2P communication go via the Root Complex, inside which, where they can possibly intercept the packets …sort of like a router doing inter-vlan routing.

Now that they can route PCI communications through the Root Complex circuitry(using ACS), they can do some thing called ATS or Address Translation Service.
In slide 35, they say "ATS provides a mechanism allowing a virtual machine to perform DMA transaction directly to and from a PCIe endpoint."
So it looks like the ACS patch helps in enabling ATS for devices of interest, so that VMs can do DMA to the PCIe endpoint !!???


I wrote something on ACS, IOMMU and IOVA here, if you’d like to read the “conceptual discussion” segment of the OP, it will likely answer your question.

As far as your “From what I understand”, you’re pretty much spot on with the exception of the mention of a dumb switch. Certain smart switches can use ARP to detect where a device is and not make the packets go all the way back to the router (root port). Apply this thinking to the PCIe fabric.


I don’t think this is accurate.

My understanding is the patch will fake ACS capability for devices that don’t support it. This allows each device to have it’s own group when they wouldn’t normally. However it is still possible for these devices to perform DMA transactions directly with each other. This is what makes the patch dangerous and why it will never make it to the mainline kernel. Of course it is not common for devices to perform these transactions or even support them, but it is possible.

1 Like

Yes. That’s true. Let me fix that, thanks!

Changed that paragraph to this: