About a year ago my primary gaming PC was replaced by a workstation, an Intel Xeon processor running CentOS as a hypervisor. Now available as an additional worker node on my network – my GTX1080 can be allocated to either my Windows gaming VM when there are games to be played, or to any other VM when not.
This setup has proved to work great for several months, however as I continue to add IO – I seemed to overwhelm the USB/PCI card which was passed into the machine. After ordering newer cards and replacing them to achieve higher bandwidth, I learned more about PCI and how devices enumerate with the PC. After reconfiguring and rebooting the Windows VM, I could not understand why only a portion of my USB devices were being detected.
After additional probing and discovery, I found that while the old card had 2x high-speed USB ports available, they were both exposed through the same hub using just a single PHY on the card; I was not saturating any single USB port, but the PHY itself. The new cards that I had just installed, actually register 4x individual PHYs, one for each of the USB ports; each of these devices must be passed to the VM individually.