Nvidia Driver v376.33 Fails to Install - Windows Reverts back to Generic Display Driver
Decided to make another topic, as it wouldn't have been relevant to the last one I made.
System Specs:
- CPU: Intel i7 6700k
- RAM: 16GB DDR4
- HDD: 1TB (Host) | 500GB Virtual QCOW for Guest
- GPU: Intel HD 530 (Host) | EVGA GTX 970 (Guest)
- Motherboard: MSI B150M Mortar
- Host OS: Manjaro w/Kernel Version 4.4.39-1-MANJARO
- Guest OS: Windows 10 Pro
Configuration:
- iGPU for Host/GTX 970 for Guest
- IOMMU Enabled
- VFIO Enabled/Virtio Drivers installed on Guest
- libvirt 2.4.0
- virt-manager 1.4.0
- Created virtual interface w/NAT in Virt-Manager for network to Guest
- OVMF for UEFI capability on Guest
- No ACS Patch installed on first attempt | ACS Patch being installed for 2nd attempt
- Nvidia workarounds implemented in the /etc/libvirt/qemu/win10.xml file
I am running libvirt 2.4.0, virt-manager 1.4.0 and VFIO. VFIO drivers are installed on the Guest VM.
The issue I'm having at the moment is installing the 376.33 Nvidia drivers on Windows 10, Version 1607, Build 14393.576
The Nvidia installer doesn't throw up the usual errors that it would make if you didn't properly use the workaround. It installs just fine and then I get a notification on Windows 10 saying:
"Display Driver Updated: Please restart your system for full functionality"
I restarted, and it still uses the default, while the GPU is still showing up with an exclamation point in Device Manager. Has anyone encountered this or know a workaround for this? I will try playing with older driver versions, but I'm starting to think I am missing something on the host side. I've also checked Event Viewer, but I am finding no entries on failures from the Nvidia installer or from Windows about this issue.
For clarification, I am outputting from the GPU on the virtual machine, but it's stuck at 800x600 resolution without the ability to change the resolution at all (options are greyed out).
==========================================================================
Image of the Nvidia installer after it's finished installing the drivers (Notification about Display Driver Updated appears): http://imgur.com/oK2imyF
System Information: http://imgur.com/46f8X3v
Device Manager after driver install: http://imgur.com/Zl0rnAf
Display Driver Updated: http://imgur.com/NmuIKRl
Resolution Locked: http://i.imgur.com/sTIYst1.png
==========================================================================
EDIT: I looked at some settings on my host side on Manjaro, and found that there's a hybrid driver for Intel/Nvidia installed. Do you think this may be the culprit? http://imgur.com/iH2Zfi6
==========================================================================
EDIT: EventLogs recorded Nvidia driver install from start to finish https://u.teknik.io/Oc6Us.zip
I have also re-created the VM with host-passthrough flags for the CPU. Nothing has changed. Starting to wonder if I -really- need the ACS patch. Windows keeps over-riding the Nvidia installer with its own drivers.
========================================================================== EDIT I noticed that there are 3 devices in the IOMMU group for the GPU. Going to compile the ACS kernel patch and configure the bootloader.
IOMMU Group 1 00:01.0 PCI bridge [0604]: Intel Corporation Skylake PCIe Controller (x16) [8086:1901] (rev 07)
IOMMU Group 1 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)
IOMMU Group 1 01:00.1 Audio device [0403]: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)
ACS PATCH FIXED THIS ISSUE! Explanation: Host still had control of the GPU with the PCIe Root device being in the same group as the GPU and HD Audio device, hence, it would NOT allow the drivers to take control of the GPU despite the Guest OS recognizing the GPU is there. In order to fix this, you NEED the ACS patch installed to segregate the PCIe Root from the same group as the GPU and its HD Audio Device.
Thank you all for the help!
Finished product: http://i.imgur.com/45ffYb2.png
Posted Jan 6, 2017, 9:50 AM UTC · edited
It installed fine on my system, not sure what exactly is going to be different between us.
###Software Debian Sid
QEMU 2.8
libvirt 2.5.0
###System specs i5-4960K, overclocked to 4GHz
32B Ram
Geforce 1070
Windows 10 64bit.
I've got no drivers loaded of any kind on the linux side (nouveau or proprietary). You should be able to check if that driver is doing anything by doing
lspci -vand looking for the driver in use to be vfio-pci (this is with the VM running)My XML file for libvirt, I do most of this through virt-manager so I don't know what some of it does exactly but at the least it might help you spot something. Take special care looking at 02:00:* in mine as those are the graphics card and it's hdmi audio being passed through. You might also need to check that you've got the vendor id set in <hyperv>
lspci -v reports the following:
So it seems as if it did bind correctly to VFIO. Where are you pulling your XML from btw? I've seem to have forgotten where the hell that's located. virsh cannot find it either when I use the list command.
I am also not sure how to make out the IOMMU groups to determine if they're not the way they're supposed to be or if it's okay the way it is.
/etc/libvirt/qemu is where my xmls are living
Okay, here is my setup for the VM.
In virt-manager, am I also supposed to add the PCI device through there or do I just add it as a Display with VFIO?
So I see your host device in there, that looks good. But I also see that you've got your CPU defined differently.
Try setting it to 'host-passthrough' in virt-manager and see if that makes a difference? otherwise try calling it a core2duo while installing. I know that the windows 10 anniversary update has an issue with QEMU during install only if you don't call it a core2duo (why, i have no idea). The topology shouldn't matter, what you've got set will look like a quadcore with hyperthreading disabled.
Also adding the image of the display issue here and the OP.
http://i.imgur.com/sTIYst1.png
EDIT After doing some research on the IOMMU groups, I noticed that the PCI Express controller is somehow getting thrown into the same group as the GPU and its HD Audio device. Could this also be an issue?
EDIT2 Going to install the ACS patch. This seems to point to the issue with the PCIe Root being in the same group, as the host still controls the GPU rather than the VM, which is also the cause of the driver never really being -installed- per say.