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
(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
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:
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:
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.
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.