[vfio-users] IGD passthrough / windows OS ram problem with new intel drivers

nicolas prochazka prochazka.nicolas at gmail.com
Wed May 17 08:05:02 UTC 2017


Hello,
igd passthrough with intel nuc broadwell, skylake, kabylake works very
well with windows OS.
But, since a intel update igd drivers , >  20.19.15.4531 from
29/09/2016, ( we are using intel driver from intel site, not windows
default driver )
just after driver installation, half of the ram of the OS is taken (
4G for 8G Ram) as non paginated ram.
With a native installation, this problem does not exist.
Any idea ?


Regards,
Nicolas Prochazka

Quest :windows 10 64bits

Host :
kernel 4.9.23
qemu : 2.9.0
qemu command line :
usr/bin/qemu-system-x86_64 -name guest=win10,debug-threads=on -S
-object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-1-win10/master-key.aes
-machine pc-i440fx-2.7,accel=kvm,usb=off -cpu
host,+x2apic,hv_time,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff -bios
/usr/share/seabios/bios.bin -m 6564 -mem-prealloc -mem-path
/dev/hugepages/libvirt/qemu -realtime mlock=off -smp
2,sockets=1,cores=2,threads=1 -uuid
44a909d4-1b81-3a94-8b1e-f86fa93947bb -nographic -no-user-config
-nodefaults -chardev
socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-1-win10/monitor.sock,server,nowait
-mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime
-no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global
PIIX4_PM.disable_s4=1 -boot strict=on -device
piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device
virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x4 -drive
file=nbd:unix:/tmp/win10.ctl,format=raw,if=none,id=drive-ide0-0-0
-device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1
-drive file=nbd:unix:/tmp/swap.ctl,format=raw,if=none,id=drive-ide0-0-1
-device ide-hd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1
-netdev tap,fd=21,id=hostnet0 -device
e1000,netdev=hostnet0,id=net0,mac=ac:de:50:68:49:75,bus=pci.0,addr=0x3
-chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/domain-1-win10/org.qemu.guest_agent.0,server,nowait
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0
-device vfio-pci,host=00:02.0,id=hostdev0,bus=pci.0,addr=0x2 -device
vfio-pci,host=00:14.0,id=hostdev1,bus=pci.0,addr=0x5 -device
vfio-pci,host=00:1f.3,id=hostdev2,bus=pci.0,addr=0x6 -netdev
user,id=user.0,restrict=on,hostfwd=tcp:127.0.0.1:5901-:5900 -device
e1000,netdev=user.0 -msg timestamp=on


<domain type='kvm' id='1'
xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>win10</name>
  <uuid>44a909d4-1b81-3a94-8b1e-f86fa93947bb</uuid>
  <memory unit='KiB'>6721536</memory>
  <currentMemory unit='KiB'>6721536</currentMemory>
  <memoryBacking>
    <hugepages/>
  </memoryBacking>
  <vcpu placement='static'>2</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='2'/>
    <vcpupin vcpu='1' cpuset='3'/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.7'>hvm</type>
    <loader readonly='yes' type='rom'>/usr/share/seabios/bios.bin</loader>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hap state='on'/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
    </hyperv>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='2' threads='1'/>
    <feature policy='optional' name='x2apic'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='hpet' present='no'/>
    <timer name='hypervclock' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-kvm.igd</emulator>
    <disk type='network' device='disk'>
      <driver name='qemu' type='raw'/>
      <source protocol='nbd'>
        <host transport='unix' socket='/tmp/win10.ctl'/>
      </source>
      <backingStore/>
      <target dev='hda' bus='ide'/>
      <alias name='ide0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='network' device='disk'>
      <driver name='qemu' type='raw'/>
      <source protocol='nbd'>
        <host transport='unix' socket='/tmp/swap.ctl'/>
      </source>
      <backingStore/>
      <target dev='hdb' bus='ide'/>
      <alias name='ide0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='usb' index='0'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'
function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='ide' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'
function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='ac:de:50:68:49:75'/>
      <source bridge='switch0'/>
      <vlan>
        <tag id='0'/>
      </vlan>
      <virtualport type='openvswitch'>
        <parameters interfaceid='fed8ff3d-b5db-4541-8862-e1e2fa912ad8'/>
      </virtualport>
      <target dev='vnet0'/>
      <model type='e1000'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
function='0x0'/>
    </interface>
    <channel type='unix'>
      <source mode='bind'
path='/var/lib/libvirt/qemu/channel/target/domain-1-win10/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='mouse' bus='ps2'>
      <alias name='input0'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input1'/>
    </input>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02'
function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x14' function='0x0'/>
      </source>
      <alias name='hostdev1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x1f' function='0x3'/>
      </source>
      <alias name='hostdev2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06'
function='0x0'/>
    </hostdev>
    <memballoon model='none'>
      <alias name='balloon0'/>
    </memballoon>
  </devices>
  <seclabel type='none' model='none'/>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+0:+0</label>
    <imagelabel>+0:+0</imagelabel>
  </seclabel>
  <qemu:commandline>
    <qemu:arg value='-netdev
user,id=user.0,restrict=on,hostfwd=tcp:127.0.0.1:5901-:5900 -device
e1000,netdev=user.0'/>
  </qemu:commandline>
</domain>




More information about the vfio-users mailing list