Proxmox GPU Passthrough Error Code 10

Last edited:
Is there a chance to use Passthrough with seabios so that I can install Windows XP?

When I change to seabios I get this error message and my VM doesnt start:

Code:
kvm: -device vfio-pci,host=0000:02:00.0,id=hostpci0.0,bus=ich9-pcie-port-1,addr=0x0.0,x-vga=on,multifunction=on: vfio 0000:02:00.0: failed getting region info for VGA region index 8: Invalid argument
device does not support requested feature x-vga
TASK ERROR: start failed: QEMU exited with code 1
 
Is there a chance to use Passthrough with seabios so that I can install Windows XP?
I think so and have done so in the distant past, but they finally updated the old Wiki entry that described both OVMF and SeaBIOS and both PCIe and PCI.
When I change to seabios I get this error message and my VM doesnt start:

Code:
kvm: -device vfio-pci,host=0000:02:00.0,id=hostpci0.0,bus=ich9-pcie-port-1,addr=0x0.0,x-vga=on,multifunction=on: vfio 0000:02:00.0: failed getting region info for VGA region index 8: Invalid argument
device does not support requested feature x-vga
TASK ERROR: start failed: QEMU exited with code 1
You could try without Primary GPU (which is x-vga=on but I don't know how well that works with NVidia GPUs.
 
I have already tryed without primary but the I wont get any output of the card.

But let us first try to get my RX running.. First I have installed vendor-reset and prepared a VM.

I will get an output on my screen via the RX 570. But The an output like this with dmseg doesnt appear in shell:

Code:
vfio-pci 0000:03:00.0: AMD_POLARIS10: version 1.0
vfio-pci 0000:03:00.0: AMD_POLARIS10: performing pre-reset
vfio-pci 0000:03:00.0: AMD_POLARIS10: performing reset
vfio-pci 0000:03:00.0: AMD_POLARIS10: GPU pci config reset
vfio-pci 0000:03:00.0: AMD_POLARIS10: performing post-reset
vfio-pci 0000:03:00.0: AMD_POLARIS10: reset result = 0

mine:

Code:
[   32.369358] vfio-pci 0000:01:00.0: vfio_ecap_init: hiding ecap 0x19@0x270
[   32.369369] vfio-pci 0000:01:00.0: vfio_ecap_init: hiding ecap 0x1b@0x2d0
[   32.369375] vfio-pci 0000:01:00.0: vfio_ecap_init: hiding ecap 0x1e@0x370
[   32.501549] vfio-pci 0000:00:1d.0: vfio_cap_init: hiding cap 0xa@0x58
 
Last edited:
But let us first try to get my RX running.. First I have installed vendor-reset and prepared a VM.

I will get an output on my screen via the RX 570. But The an output like this with dmseg doesnt appear in shell:
After rebooting Proxmox and before starting the VM. What is the output of lsmod | grep vendor and cat '/sys/bus/pci/devices/0000:01:00.0/reset_method' on the Proxmox host?
 
lsmod | grep vendor
Code:
vendor_reset          122880  0

cat '/sys/bus/pci/devices/0000:01:00.0/reset_method'
Code:
bus
 
lsmod | grep vendor
Code:
vendor_reset          122880  0
Good, the module is loaded.
cat '/sys/bus/pci/devices/0000:01:00.0/reset_method'
Code:
bus
It looks like you did not activate vendor-reset for the GPU (maybe I sent the wrong link before?). Perform a echo device_specific >'/sys/bus/pci/devices/0000:01:00.0/reset_method' after each Proxmox reboot before starting the VM. Check with cat '/sys/bus/pci/devices/0000:01:00.0/reset_method' before starting the VM; it should show device_specific.
 
ok this I will get out:

Code:
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: version 1.1
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing pre-reset
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing reset
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: CLOCK_CNTL: 0x0, PC: 0x20564
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: Performing BACO reset
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing post-reset
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: reset result = 0
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: version 1.1
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing pre-reset
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing reset
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: CLOCK_CNTL: 0x0, PC: 0x2c8c
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing post-reset
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: reset result = 0
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: version 1.1
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing pre-reset
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing reset
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: CLOCK_CNTL: 0x0, PC: 0x28dc
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing post-reset
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: reset result = 0

do I have to type in echo device_specific >'/sys/bus/pci/devices/0000:01:00.0/reset_method' after every reboot or is there an automatic way?
 
ok this I will get out:

Code:
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: version 1.1
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing pre-reset
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing reset
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: CLOCK_CNTL: 0x0, PC: 0x20564
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: Performing BACO reset
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing post-reset
Jul 26 19:11:04 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: reset result = 0
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: version 1.1
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing pre-reset
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing reset
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: CLOCK_CNTL: 0x0, PC: 0x2c8c
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing post-reset
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: reset result = 0
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: version 1.1
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing pre-reset
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing reset
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: CLOCK_CNTL: 0x0, PC: 0x28dc
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: performing post-reset
Jul 26 19:11:06 proxmox kernel: vfio-pci 0000:01:00.0: AMD_POLARIS10: reset result = 0
That looks good.
do I have to type in echo device_specific >'/sys/bus/pci/devices/0000:01:00.0/reset_method' after every reboot or is there an automatic way?
You need to do it after every reboot of the Proxmox host, which you can automate with crontab and a @reboot or any other way you prefer with GNU/Linux. Or do it before starting the VM using a hookscript (which also supports bash scripts if you don't know perl).
 
ah yeah I forgot that I can use crontab for this. I have already used it in my truenas setup.

An other question. If I want to the third PCIe slot that has the same IOMMU group like the RX570, do I have to use unsafe interrupts?
 
An other question. If I want to the third PCIe slot that has the same IOMMU group like the RX570, do I have to use unsafe interrupts?
No you need pcie_acs_override to make Proxmox ignore the IOMMU groups. It breaks security isolation and allows the VMs to read and write each others memory completely. I advise you to use another slot. Or put a USB controller PCIe card for the VM with the RX570 in there, then it goes to the same VM and you don't need pcie_acs_override.
 
O sorry i forgot to write: I want to put in a third gpu for a third vm.
According to the manual (page 35), the x4 slot (x16 physically) not only shares an IOMMU group but also the IRQ. Maybe that's where your questions about options vfio_iommu_type1 allow_unsafe_interrupts=1 came from?
If you insist on using that slot, you'll need as least pcie_acs_override=downstream or maybe pcie_acs_override=downstream,multifunction. No guarantees that it will work and be aware that that VM and the one in the first x8 slot (x16 physically) are not isolated.
(You can always swap the GPUs and VMs between the two x8 slots if you think that's better, for example when two of the three VMs are for the same user or similar purpose.)
 
When we started, the RX570 was in first and the gtx in the second pcie slot. There we have had the situation that they were in the same iommu group.

After that I switched the GTX to the third slot and now it has the same irq like the RX. So should I already use unsafe interrupt?

Maybe its better to explain what I want do do.
I want to play old games and use old programs on the vms

Rx 570 for Windows 7
GTX 750 ti for windows xp
Another card for windows 98. At the moment I have an radeon x800 that should work. But I would test it first.

They should start all together and I want to stream the screen with my capture card that is already in my NAS to play inhome.
 
Last edited:
When we started, the RX570 was in first and the gtx in the second pcie slot. There we have had the situation that they were in the same iommu group.

After that I switched the GTX to the third slot and now it has the same irq like the RX. So should I already use unsafe interrupt?
Ah right, I did not realize that. If you don't have any problems, I would not use unsafe interrupts. It is a work-around for problems, not good practice.
Maybe its better to explain what I want do do.
I want to play old games and use old programs on the vms

Rx 570 for Windows 7
GTX 750 ti for windows xp
Another card for windows 98. At the moment I have an radeon x800 that should work. But I would test it first.

They should start all together and I want to stream the screen with my capture card that is already in my NAS to play inhome.
Interesting project. If you trust the software, don't connect them to the internet and use the VMs yourself, just try it with pcie_acs_overrise?
Do they all really need to run at the same time? Otherwise you could share the same GPU with multiple VMs one at a time. But you might need different GPU because of the driver support of the old operating systems. You probably already thought this all through and don't need me to second guess it.
For best performance I would try putting the GTX750 back in the previous PCIe slot, after enabling pcie_acs_override. Be aware that PCI IDs can change because of this (and please don't automatically start VMs with passthrough until it's stable).
 
Yeah I have blocked internet access through my router.
Exactly what you said was my imagine.

Pcie 1 RX 570
Pcie 2 gtx 750
Pcie 3 Radeon X800

They dont need to run at the same time. Great would be if there would be a method to send a signal via script to start and stop a vm without login via browser.
Because my wife will also play old games it should be as userfriendly as possible.

At the moment it looks like the gtx wont work without primary GPU und seabios. And Windows XP cant install because of OVMF
 
Last edited:
At the moment it looks like the gtx wont work without primary GPU und seabios. And Windows XP cant install because of OVMF
You'll have to search the forum for people having similar issues to see if there are work-around. I have very little experience NVidia or Windows because AMD and Linux work much better with passthrough, sorry.
 
Ok i will search for. If I dont get a ressult, I will change the setup and put the gtx to another machine for nativ windows xp and put one the rx und the x800 in the proxmox setup.

Thank you very mich for your help
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!