Guide: PCIe Graphics Card (nVidia GTX 660) Passthrough with AMD IOMMU

alax

New Member
Mar 11, 2015
2
0
1
Hey guys,

I've just successfully setup a system running a GTX 660 in a Windows 8.1 VM. There are a few specific settings needed that eventually got everything to work, so I figured I'd post them here.

First and foremost, here is what my hardware looks like:

Processor: AMD FX8370
Motherboard: ASUS M5A97 LE 2.0
Primary GPU: nVidia GT 210
Secondary GPU: nVidia GTX 660

I'm running Proxmox kernel pve-kernel-3.10.0-7-pve_3.10.0-29, which can be downloaded from the pve-test repository.

The relevant settings are:

/etc/default/grub
Code:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt iommu=1"

(make sure you run update-grub after changing the file). This was the biggest factor in making everything work, adding just amd_iommu=on to grub didn't cause my system to actually initialize IOMMU.

Also, I had to blacklist nouveau, which can be done by creating a file under /etc/modprobe.d/ and adding the text
Code:
blacklist nouveau

Once I did that, and added the correct PCI device using the instructions specified in the official guide ( https://pve.proxmox.com/wiki/Pci_passthrough ) the machine booted just fine. However, installing the latest nVidia drivers required some additional tweaks, otherwise they would report Code 43 and not enable the GPU.

Those changes are:

1. Make sure you change the CPU to host under the Hardware tab. This will cause Proxmox to set the kvm=off value (at least on the latest Proxmox version) which will prevent the nVidia driver from detecting the presence of KVM.
2. Change the OS type under the Options tab to other, which will disable the HyperV enlightenments, preventing the nVidia driver from detecting that the system is virtualized at all.

Then, if you've already installed the nVidia drivers, you need to REBOOT (not shutdown and power on) the VM, as that seems to be the only time the nVidia drivers check for proper hardware. If you shutdown and power the machine back on instead of rebooting, you will still receive the Code 43 error.

Once you've done that, the drivers should detect the card properly and everything should be set to go! Note that for my system, I did NOT need to run:

Code:
echo "options kvm allow_unsafe_assigned_interrupts=1" > /etc/modprobe.d/kvm_iommu_map_guest.conf

As specified in the guide, although I suspect that is only for older systems, since that option isn't even present in the latest kvm module in the latest proxmox kernel and will prevent the module from loading at all.

I also did not need to run:

Code:
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf

Nor did I need to add any modules to /etc/modules.

All in all, save for a few mistakes on my end, the Proxmox team has made PCI passthrough (especially for graphics) a VERY smooth experience.
 

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!