I have gotten my system finally running and configured for PCI passthrough. However, I am struggling to passthrough the proper amount of USB devices without passing an entire USB controller. Unfortunatley my IOMMU groups are as such: https://pastebin.com/P7XGTmUA
I have applied the ACS patch, (using the linux-vfio kernel from AUR) but still virt-manager prevents me from creating a virtual machine with individual devices from a IOMMU group, reporting that
Please ensure all devices within the iommu_group are bound to their vfio bus driver.
Is there something I am doing incorrectly?
Relevant info:
Processor: AMD Ryzen 1800X
Motherboard: ASRock X370 Taichi
Host GPU: AMD Radeon Rx 580
Guest GPU: AMD Radeon Rx Vega 64
Host OS: Arch Linux
Guest OS: Windows 10
Kernel Version: 4.14.9-1-vfio (From AUR)
/etc/default/grub.cfg: https://pastebin.com/UxHXXDta
/etc/mkinitcpio.conf: https://pastebin.com/gGbG6x02
/etc/modprobe.d/vfio.conf: https://pastebin.com/NxPFSrFs
Grub checked to make sure options are being loaded at kernel runtime
Any other info I can offer I would be happy to provide. Thanks in advance everyone!
Seems I fundamnetally misunderstood the ACS patch then. Is there any workaround for this? If there isn’t, I am SOL. The majority of my gaming at this point makes use of greater than 4 USB devices. In the Arch wiki, it shows some additional ACS options, using
pcie_acs_override = id:nnnn:nnnn
Could I use this to further break out my IOMMU groups?
The ACS override patch tries to separate devices into their own IOMMU group. Doesn’t always work.
What USB controller are you trying to pass through? the ones at 12:00.3 and 03:00.0 cannot be passed through.
If I understand correctly, the one at 0c:00.0 is attached to a PCIe slot? If so, what slot? You may want to try switching it around. (if it shows up with the Vega 64, that will be fine as well)
You could try pcie_acs_override=downstream as well, but that gets into dangerous territory.
On the Taichi, have you updated the BIOS? I’ve got the Taichi as well, but with the 1700 instead. My IOMMU groups look significantly different. Later BIOS revisions have better IOMMU groupings.
I’l check again on the bios. I have actually now switched to pcie_acs_override=downstream,multifunction and I have all the iommu groups I could ever need . Whats particularly dangerous about downstream? I had already had that enabled, as that’s how the arch wiki describes setting it up.
The ACS override patch doesn’t actually change the groupings. It just changes how they appear to Linux.
This means that on an electrical level, the devices are still grouped and can communicate with each other. This can play havoc on stability.
For example: If you have two AMD cards in the same electrical IOMMU group and you apply the ACS patch, when you load the guest GPU driver, both the host and guest will crash because the GPU looks in the IOMMU group, sees the other GPU (for the host) and tries to communicate with it. Because the host GPU is running a different driver (Linux), they can’t properly communicate and they both get corrupt and crash.
For the record, it’s not dangerous in a permenant fashion, just dangerous as far as stability goes. While I don’t know enough about PCIe standards, protocols and protections go, I don’t think this could cause you to fry a device.
I’m using my Taichi without the ACS override patch, but I’m not passing through USB. I’d give a bios update a try first. Don’t use ACS override if you can help it.
Seems to be about what I had experiences, no USB devices in individual groupings unless im missing something. Also, I found that the top and bottom PCI slots are in the same IOMMU grouping.
Theoretically, the ACS patch should solve this, but let me put a bit of work into this and see if I can get it to work before I start making lofty claims.
The ACS patch does at least split it from group 11, but I am unsure if it makes them into individual groups. I don’t have another PCI card to test with at the moment, so I cannot see for sure if it groups itself separate. At this point, I have everything working flawlessly and was even able to play some Robo Recall on my Rift from withing the Guest system (part of why I need so many USB devices and why they needed to be passed through).
I was also having trouble with not having enough IOMMU groups. I needed to passthrough a PCI USB 3.0 card for my VM.
adding pcie_acs_override=downstream,multifunction + enabling ACS from BIOS menu gave me enough IOMMU groups to satisfy my req. Fedora 36, Ryzen 7 2700 and Gigabyte Aorus B450 Wifi.
Please keep in mind that this doesn’t actually change the IOMMU groups, it only allows you to jump the fence, so to speak.
The IOMMU groups are still there, and P2P communication could happen, causing corruption and issues, but this is a rarely-used feature of the PCIe fabric.
I used to use it a lot back when I was running passthrough, and it always worked fine, it’s just one of those things that I believe should come with a bold-font asterisk.