Windows GPU passthrough with proxmox

This post will serve as a reference for myself and maybe also others. After successfully setting up PCI (GPU) passthrough on a Ubuntu virtual machine I wanted to see if it would also work with a Windows virtual machine. During this process I ran into some challenges that are documented below:

After setting up the Windows virtual machine I found that it did not correctly identify the graphics card. Device manager showed that a device was found but it did not recognize it as a NVIDIA GeForce GTX 1070. This meant that the NVIDIA driver installer was unable to determine there was an NVIDIA card present in the system and therefore would return an error. I resolved this issue by retrieving the hardware id for the graphics card (PCI\VEN_10DE&DEV_1BE&SUBSYS_1CB01043&REV_A1) and adding this information to the PCI device options in proxmox. At this point the card was properly identified by device manager and I was able to install the drivers with the NVIDIA driver installer.

However, Windows would now report the device as not functioning (error 43). After researching this error I found multiple possible solutions for this issue. Some were more complex then others but I set out to try them all and see which would solve my issue. After a lot of trial and error, recreating virtual machines, omitting options and adding options I found that setting the machine type to Q35 and changing the PCI device to a PCIe device in the PCI devices options would result in a working graphics card.



The graphics card is not recognized
Device details as reported by Windows, the SUBSYS info is completely blank
Added the device IDs to the PCI Device
The graphics card is now recognized and the drivers can be installed
The infamous error 43
Set the PCI-Express option
Device manager reports the card as working
Nvidia config menu reports the card as working

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.