[vfio-users] Problem with installing Windows drivers for Quadro M2000M(GM107GLM)

andrey at anse.me andrey at anse.me
Wed Oct 26 01:34:10 UTC 2016

I have the following device: Thinkpad P50, i7-6820HQ + HD530 and Quadro
M2000M(GM107GLM), which I'm trying to assign to VM(Windows 7 at the moment).  
I followed several guides on the Internet, primary the one at Arch Wiki.  
My problem is that I can not install drivers in Windows. NVIDIA driver says
that it can't find compatible device and Windows Device Manager shows GPU as
"Standard VGA Graphics Device" and doesn't allow to install driver
manually(says driver is incompatible with current windows version). I tried
version 375.63 downloaded from NVIDIA web site.  
I did not check does NVIDIA output something on external monitor or not
because I don't have external display at the moment of writing. I will
probably do it as soon as I get access to it.  
NVIDIA GPU seems to be wired to HDMI/Display Port, while IGD rules internal
LCD screen. I did not manage to keep both cards working and get picture on LCD
rendered by NVGPU, so I guess NVGPU renders image and then passed it to IGD
which displays it on laptop screen. I wonder though, how does it work when
only NVIDIA GPU is enabled in BIOS.  
Here is details of my setup and logs(I use ARCH, kernel version is
1\. CPU supports VT-d/Vt-x and IOMMU is turned on in kernel parameters trough
Also ACS patch applied(with pcie_acs_override=downstream)  
$ dmesg|grep -e DMAR -e IOMMU  
[    0.000000] Warning: PCIe ACS overrides enabled; This may allow non-IOMMU
protected peer-to-peer DMA  
[    0.000000] ACPI: DMAR 0x0000000057FFD000 0000A8 (v01 LENOVO TP-N1E
00001300 PTEC 00000002)  
[    0.000000] DMAR: IOMMU enabled  
[    0.067448] DMAR: Host address width 39  
[    0.067449] DMAR: DRHD base: 0x000000fed90000 flags: 0x0  
[    0.067453] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462
ecap 7e3ff0505e  
[    0.067454] DMAR: DRHD base: 0x000000fed91000 flags: 0x1  
[    0.067457] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462
ecap f050da  
[    0.067458] DMAR: RMRR base: 0x00000057eaa000 end: 0x00000057ec9fff  
[    0.067458] DMAR: RMRR base: 0x0000005a000000 end: 0x0000005e7fffff  
[    0.067460] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1  
[    0.067460] DMAR-IR: HPET id 0 under DRHD base 0xfed91000  
[    0.067461] DMAR-IR: x2apic is disabled because BIOS sets x2apic opt out
[    0.067462] DMAR-IR: Use 'intremap=no_x2apic_optout' to override the BIOS
[    0.068839] DMAR-IR: Enabled IRQ remapping in xapic mode  
[    1.235189] DMAR: No ATSR found  
[    1.235676] DMAR: dmar0: Using Queued invalidation  
[    1.235680] DMAR: dmar1: Using Queued invalidation  
[    1.236014] DMAR: Setting RMRR:  
[    1.236048] DMAR: Setting identity map for device 0000:00:02.0 [0x5a000000
- 0x5e7fffff]  
[    1.236079] DMAR: Setting identity map for device 0000:00:14.0 [0x57eaa000
- 0x57ec9fff]  
[    1.236084] DMAR: Prepare 0-16MiB unity mapping for LPC  
[    1.236111] DMAR: Setting identity map for device 0000:00:1f.0 [0x0 -
[    1.236120] DMAR: Intel(R) Virtualization Technology for Directed I/O  
[    2.459809] vboxpci: IOMMU found  
3\. IOMMU group for GPU:  
IOMMU group 13  
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM107GLM [Quadro
M2000M] [10de:13b0] (rev a2)  
4\. GPU is isolated with vfio, nvidia driver was unstalled:  
$ lspci -nnk -d 10de:13b0  
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM107GLM [Quadro
M2000M] [10de:13b0] (rev a2)  
Kernel driver in use: vfio-pci  
Kernel modules: nouveau  
$ cat /etc/modprobe.d/vfio.conf  
#options vfio-pci ids=8086:191b  
options vfio-pci ids=10de:13b0  
$ head /etc/mkinitcpio.conf  
# vim:set ft=sh  
# The following modules are loaded before any boot hooks are  
# run.  Advanced users may wish to specify all system modules  
# in this array.  For instance:  
#     MODULES="piix ide_disk reiserfs"  
MODULES="vfio vfio_iommu_type1 vfio_pci vfio_virqfd"  
GRUB command line:  
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on pcie_acs_override=downstream
video=efifb:off,vesafb:off,simplefb:off nouveau.vbios=ACPI"  
5\. I use GPU ROM file, which I got using the followng guide:
I get exactly the same error code as given as example in the message by link
above, and used ACPI to retrive ROM. ROM file is attached here:
6\. Finally, my VM config. RDP is enabled in Windows 7 and I connect with it.  
<domain type='kvm'>  
<memory unit='KiB'>8388608</memory>  
<currentMemory unit='KiB'>8388608</currentMemory>  
<vcpu placement='static'>8</vcpu>  
 <type arch='x86_64' machine='pc-i440fx-2.7'>hvm</type>  
 <loader readonly='yes'
 <boot dev='hd'/>  
 <bootmenu enable='yes'/>  
   <hidden state='on'/>  
 <vmport state='off'/>  
<cpu mode='host-passthrough'>  
 <topology sockets='1' cores='4' threads='2'/>  
<clock offset='localtime'>  
 <timer name='rtc' tickpolicy='catchup'/>  
 <timer name='pit' tickpolicy='delay'/>  
 <timer name='hpet' present='no'/>  
 <suspend-to-mem enabled='no'/>  
 <suspend-to-disk enabled='no'/>  
 <disk type='file' device='disk'>  
   <driver name='qemu' type='qcow2'/>  
   <source file='/var/lib/libvirt/images/win7-2-1.qcow2'/>  
   <target dev='sda' bus='sata'/>  
   <address type='drive' controller='0' bus='0' target='0' unit='0'/>  
 <disk type='file' device='cdrom'>  
   <driver name='qemu' type='raw'/>  
   <source file='/home/andrey/Documents/vcd/en_windows_7_ultimate_with_sp1_x64
   <target dev='sdb' bus='sata'/>  
   <address type='drive' controller='0' bus='0' target='0' unit='1'/>  
 <controller type='usb' index='0' model='ich9-ehci1'>  
   <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>  
 <controller type='usb' index='0' model='ich9-uhci1'>  
   <master startport='0'/>  
   <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'
 <controller type='usb' index='0' model='ich9-uhci2'>  
   <master startport='2'/>  
   <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>  
 <controller type='usb' index='0' model='ich9-uhci3'>  
   <master startport='4'/>  
   <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/>  
 <controller type='virtio-serial' index='0'>  
   <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>  
 <controller type='pci' index='0' model='pci-root'/>  
 <controller type='pci' index='1' model='pci-bridge'>  
   <model name='pci-bridge'/>  
   <target chassisNr='1'/>  
   <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>  
 <controller type='sata' index='0'>  
   <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>  
 <interface type='network'>  
   <mac address='52:54:00:38:ac:a3'/>  
   <source network='default'/>  
   <model type='rtl8139'/>  
   <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>  
 <serial type='pty'>  
   <target port='0'/>  
 <console type='pty'>  
   <target type='serial' port='0'/>  
 <channel type='spicevmc'>  
   <target type='virtio' name='com.redhat.spice.0'/>  
   <address type='virtio-serial' controller='0' bus='0' port='1'/>  
 <input type='mouse' bus='ps2'/>  
 <input type='keyboard' bus='ps2'/>  
 <sound model='ich6'>  
   <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>  
 <hostdev mode='subsystem' type='pci' managed='yes'>  
     <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>  
   <rom bar='on' file='/home/andrey/vbios.rom'/>  
   <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>  
 <redirdev bus='usb' type='spicevmc'>  
   <address type='usb' bus='0' port='1'/>  
 <redirdev bus='usb' type='spicevmc'>  
   <address type='usb' bus='0' port='2'/>  
 <memballoon model='virtio'>  
   <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>  
Hope I did not forget anything. Thanks in advance to any help/advice!  
-Andrey Streltsov  

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/vfio-users/attachments/20161026/9c524dae/attachment.htm>

More information about the vfio-users mailing list