Can't pass AMD RX 460 GPU to VM

So I’m trying to pass a RX 460 to a windows 10 qemu/kvm vm and no matter what I do it won’t start the vm when I have the PCI devices added.

When I type sudo lspci -nnk it says the device is still using amdgpu kernel models.

I added the variables to the mkinitcpio.conf file too.

Output from sudo dmesg | grep -i -e DMAR -e IOMMU looks like this…

Blockquote
[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=d123083d-59d3-470e-9849-79cb9c9948fe rw loglevel=3 iommu=1 amd_iommu=on iommu=pt quiet
[ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=d123083d-59d3-470e-9849-79cb9c9948fe rw loglevel=3 iommu=1 amd_iommu=on iommu=pt quiet
[ 0.195070] iommu: Default domain type: Passthrough (set via kernel command line)
[ 0.286530] pci 0000:00:00.2: AMD-Vi: IOMMU performance counters supported
[ 0.286573] pci 0000:00:01.0: Adding to iommu group 0
[ 0.286579] pci 0000:00:01.1: Adding to iommu group 0
[ 0.286584] pci 0000:00:01.2: Adding to iommu group 0
[ 0.286593] pci 0000:00:02.0: Adding to iommu group 1
[ 0.286604] pci 0000:00:03.0: Adding to iommu group 2
[ 0.286610] pci 0000:00:03.1: Adding to iommu group 2
[ 0.286619] pci 0000:00:04.0: Adding to iommu group 3
[ 0.286628] pci 0000:00:05.0: Adding to iommu group 4
[ 0.286637] pci 0000:00:07.0: Adding to iommu group 5
[ 0.286644] pci 0000:00:07.1: Adding to iommu group 6
[ 0.286654] pci 0000:00:08.0: Adding to iommu group 7
[ 0.286661] pci 0000:00:08.1: Adding to iommu group 8
[ 0.286673] pci 0000:00:14.0: Adding to iommu group 9
[ 0.286678] pci 0000:00:14.3: Adding to iommu group 9
[ 0.286707] pci 0000:00:18.0: Adding to iommu group 10
[ 0.286713] pci 0000:00:18.1: Adding to iommu group 10
[ 0.286719] pci 0000:00:18.2: Adding to iommu group 10
[ 0.286725] pci 0000:00:18.3: Adding to iommu group 10
[ 0.286731] pci 0000:00:18.4: Adding to iommu group 10
[ 0.286737] pci 0000:00:18.5: Adding to iommu group 10
[ 0.286743] pci 0000:00:18.6: Adding to iommu group 10
[ 0.286749] pci 0000:00:18.7: Adding to iommu group 10
[ 0.286751] pci 0000:01:00.0: Adding to iommu group 0
[ 0.286754] pci 0000:20:00.0: Adding to iommu group 0
[ 0.286757] pci 0000:21:00.0: Adding to iommu group 0
[ 0.286759] pci 0000:21:01.0: Adding to iommu group 0
[ 0.286762] pci 0000:21:03.0: Adding to iommu group 0
[ 0.286765] pci 0000:21:04.0: Adding to iommu group 0
[ 0.286767] pci 0000:21:05.0: Adding to iommu group 0
[ 0.286770] pci 0000:21:08.0: Adding to iommu group 0
[ 0.286772] pci 0000:21:09.0: Adding to iommu group 0
[ 0.286776] pci 0000:21:0a.0: Adding to iommu group 0
[ 0.286779] pci 0000:22:00.0: Adding to iommu group 0
[ 0.286803] pci 0000:23:00.0: Adding to iommu group 0
[ 0.286805] pci 0000:23:00.1: Adding to iommu group 0
[ 0.286808] pci 0000:25:00.0: Adding to iommu group 0
[ 0.286810] pci 0000:26:00.0: Adding to iommu group 0
[ 0.286813] pci 0000:27:00.0: Adding to iommu group 0
[ 0.286815] pci 0000:2a:00.0: Adding to iommu group 0
[ 0.286818] pci 0000:2a:00.1: Adding to iommu group 0
[ 0.286821] pci 0000:2a:00.3: Adding to iommu group 0
[ 0.286823] pci 0000:2b:00.0: Adding to iommu group 0
[ 0.286825] pci 0000:2c:00.0: Adding to iommu group 0
[ 0.286828] pci 0000:2d:00.0: Adding to iommu group 2
[ 0.286830] pci 0000:2d:00.1: Adding to iommu group 2
[ 0.286837] pci 0000:2e:00.0: Adding to iommu group 11
[ 0.286846] pci 0000:2f:00.0: Adding to iommu group 12
[ 0.286854] pci 0000:2f:00.3: Adding to iommu group 13
[ 0.286863] pci 0000:2f:00.4: Adding to iommu group 14
[ 0.287338] pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40
[ 0.287666] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).
[ 0.297285] AMD-Vi: AMD IOMMUv2 driver by Joerg Roedel [email protected]
Blockquote

This is what I get when I try and bot the VM…

I’m not really sure why this isn’t working. Any suggestions?

The error message tells you what is wrong. There are other devices in group 0 that are not being passed through, an IOMMU group is all or nothing for pass through. Since this is an AMD platform its probably because you’re using the chipset slot on a non-x570 chipset motherboard for your passed through graphics card.

Your solutions are to relocate the GPU to a slot that is separated into its own group (typically the first GPU slot is) or use the ACS override patch.

2 Likes

So it turned out that it was because I had the GPU in a chipset slot but I am on an X-570 board. To my knowledge I should be able to pass that slot but maybe not. After I moved the GPU to a different slot (top cpu slot) it worked fine but I would prefer it in the bottom slot as my more powerful GPU can only run at 4x off the chipset.