[vfio-users] Latest Windows 10 “feature” update breaks IGD passthrough

Manuel Ullmann ullman.alias at posteo.de
Fri Sep 1 08:01:35 UTC 2017


Hi,

the latest “feature” update of Windows 10 seems to break the IGD
passthrough on my VM.  I get the serial console as usual, but when
Windows starts to use the Intel driver I get vertical dotted stripes,
instead of 20 minutes circling update completion dots.  The VM continues
to run and remains active, judging from IO activity. My rom file has
been fixed with rom-fixer.  Found nothing too obvious in the logs.

Any thoughts?

Kernel version is 4.12.5.

Thanks,
Manuel

Note: replaced some values by placeholders indicated by '-' pre- and suffix.
libvirt XML:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>win10</name>
  <uuid>-id-</uuid>
  <memory unit='KiB'>-int-</memory>
  <currentMemory unit='KiB'>-int-</currentMemory>
  <memoryBacking>
    <hugepages/>
  </memoryBacking>
  <vcpu placement='static'>3</vcpu>
  <iothreads>1</iothreads>
  <cputune>
    <vcpupin vcpu='1' cpuset='1'/>
    <vcpupin vcpu='2' cpuset='2'/>
    <emulatorpin cpuset='3'/>
    <iothreadpin iothread='1' cpuset='3'/>
  </cputune>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.7'>hvm</type>
    <bootmenu enable='no'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
    </hyperv>
    <vmport state='off'/>
  </features>
  <cpu mode='host-passthrough' check='none'>
    <topology sockets='1' cores='3' threads='1'/>
    <feature policy='optional' name='invtsc'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' present='yes' tickpolicy='delay' track='guest'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
    <timer name='hypervclock' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>destroy</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='sdc' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file=-path-/virtio-win-0.1.118.iso'/>
      <target dev='sdd' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='4'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native' iothread='1'/>
      <source file='-img3-'/>
      <target dev='sda' bus='virtio'/>
      <boot order='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native' iothread='1'/>
      <source file='-img2-'/>
      <target dev='sdb' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native' iothread='1'/>
      <source file='-img1-'/>
      <target dev='sde' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </controller>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </controller>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/>
    </controller>
    <interface type='direct'>
      <mac address='52:54:00:95:63:4c'/>
      <source dev='enp0s25' mode='bridge'/>
      <model type='rtl8139'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <sound model='ich9'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </sound>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x046d'/>
        <product id='0xc246'/>
      </source>
      <address type='usb' bus='0' port='1'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0xfeed'/>
        <product id='0x1307'/>
      </source>
      <address type='usb' bus='0' port='2'/>
    </hostdev>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </memballoon>
  </devices>
  <qemu:commandline>
    <qemu:arg value='-machine'/>
    <qemu:arg value='pc-i440fx-2.7,accel=kvm,usb=off,vmport=off,dump-guest-core=off,kernel_irqchip=on'/>
    <qemu:arg value='-cpu'/>
    <qemu:arg value='host,migratable=no,+invtsc,hv_time,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff'/>
    <qemu:arg value='-set'/>
    <qemu:arg value='device.hostdev0.x-igd-opregion=on'/>
    <qemu:arg value='-set'/>
    <qemu:arg value='device.hostdev0.x-igd-gms=5'/>
    <qemu:arg value='-set'/>
    <qemu:arg value='device.hostdev0.romfile=-path-/-rom-'/>
    <qemu:env name='QEMU_AUDIO_DRV' value='alsa'/>
    <qemu:env name='QEMU_DAC_FIXED_SETTINGS' value='1'/>
    <qemu:env name='QEMU_DAC_TRY_POLL' value='0'/>
    <qemu:env name='QEMU_DAC_FIXED_FMT' value='S16'/>
    <qemu:env name='QEMU_DAC_FIXED_FREQ' value='96000'/>
    <qemu:env name='QEMU_DAC_FIXED_BUFFER_SIZE' value='16384'/>
    <qemu:env name='QEMU_DAC_FIXED_PERIOD_SIZE' value='512'/>
    <qemu:env name='QEMU_DAC_DEV' value='-device-'/>
  </qemu:commandline>
</domain>

kernel log:

Sep  1 08:38:49 -host- kernel: vfio-pci 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff
Sep  1 08:38:49 -host- kernel: vfio-pci 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff
Sep  1 08:38:49 -host- kernel: vfio-pci 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff
Sep  1 08:38:49 -host- kernel: vfio-pci 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff
Sep  1 08:38:49 -host- kernel: vfio-pci 0000:00:1b.0: enabling device (0000 -> 0002)
Sep  1 08:38:50 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:38:50 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:38:50 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:38:50 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:38:50 -host- NetworkManager[3832]: <info>  [1504247930.7556] device (macvtap0): link connected
Sep  1 08:38:51 -host- kernel: vfio-pci 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
Sep  1 08:38:51 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:38:51 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:38:52 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:38:52 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:38:52 -host- NetworkManager[3832]: <info>  [1504247932.7610] manager: startup complete
Sep  1 08:38:50 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:38:50 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:38:50 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:38:50 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:38:50 -host- NetworkManager[3832]: <info>  [1504247930.7556] device (macvtap0): link connected
Sep  1 08:38:51 -host- kernel: vfio-pci 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
Sep  1 08:38:51 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:38:51 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:38:52 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:38:52 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:38:52 -host- NetworkManager[3832]: <info>  [1504247932.7610] manager: startup complete
Sep  1 08:38:53 -host- ntpd[3979]: Listen normally on 7 macvtap0 -ipv6-
Sep  1 08:38:58 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:38:58 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:38:58 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:38:58 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:39:06 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:39:06 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:39:07 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:39:07 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:39:08 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:39:08 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:39:08 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:39:08 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:39:08 -host- kernel: kvm [4146]: vcpu0, guest rIP: 0xfffff80e3a0e2010 ignored rdmsr: 0x606
Sep  1 08:39:08 -host- kernel: kvm [4146]: vcpu0, guest rIP: 0xfffff80e3a0e2041 ignored rdmsr: 0x639
Sep  1 08:39:08 -host- kernel: kvm [4146]: vcpu0, guest rIP: 0xfffff80e3a0e1d54 ignored rdmsr: 0x606
Sep  1 08:39:08 -host- kernel: kvm [4146]: vcpu0, guest rIP: 0xfffff80e3a0e1dcb ignored rdmsr: 0x639
Sep  1 08:39:09 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:39:09 -host- kernel: usb 3-6.1.4: reset full-speed USB device number 7 using xhci_hcd
Sep  1 08:39:10 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:39:10 -host- kernel: usb 3-6.1.3: reset full-speed USB device number 6 using xhci_hcd
Sep  1 08:39:13 -host- kernel: kvm [4146]: vcpu2, guest rIP: 0xfffff80e3a0c573c ignored rdmsr: 0x639
Sep  1 08:39:13 -host- kernel: kvm [4146]: vcpu1, guest rIP: 0xfffff80e3a0c573c ignored rdmsr: 0x639
Sep  1 08:39:13 -host- kernel: kvm [4146]: vcpu1, guest rIP: 0xfffff80e3a0c573c ignored rdmsr: 0x639
Sep  1 08:39:14 -host- kernel: kvm [4146]: vcpu2, guest rIP: 0xfffff80e3a0c573c ignored rdmsr: 0x639
Sep  1 08:39:14 -host- kernel: kvm [4146]: vcpu2, guest rIP: 0xfffff80e3a0c573c ignored rdmsr: 0x639
Sep  1 08:39:14 -host- kernel: kvm [4146]: vcpu2, guest rIP: 0xfffff80e3a0c573c ignored rdmsr: 0x639
Sep  1 08:39:14 -host- kernel: kvm [4146]: vcpu2, guest rIP: 0xfffff80e3a0c573c ignored rdmsr: 0x639
Sep  1 08:39:14 -host- kernel: kvm [4146]: vcpu1, guest rIP: 0xfffff80e3a0c573c ignored rdmsr: 0x639
Sep  1 08:39:14 -host- kernel: kvm [4146]: vcpu1, guest rIP: 0xfffff80e3a0c573c ignored rdmsr: 0x639
Sep  1 08:39:14 -host- kernel: dmar_fault: 2777288 callbacks suppressed
Sep  1 08:39:14 -host- kernel: DMAR: DRHD: handling fault status reg 3
Sep  1 08:39:14 -host- kernel: DMAR: [DMA Read] Request device [00:02.0] fault addr f3d00000 [fault reason 06] PTE Read access is not set
...
Sep  1 08:39:19 -host- kernel: dmar_fault: 451708 callbacks suppressed
...
Sep  1 08:39:24 -host- kernel: dmar_fault: 430137 callbacks suppressed
...

libvirt log:

2017-09-01 07:19:52.107+0000: starting up libvirt version: 3.3.0, qemu version: 2.9.0, hostname: sonnengebleicht.fritz.box
-env- /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,vmport=off,dump-guest-core=off -cpu host,hv_time,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff -m -int- -mem-prealloc -mem-path /var/lib/hugetlbfs/libvirt/qemu/1-win10 -realtime mlock=off -smp 3,sockets=1,cores=3,threads=1 -object iothread,id=iothread1 -uuid -id- -display none -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,clock=vm -global kvm-pit.lost_tick_policy=delay -no-hpet -no-reboot -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot menu=off,strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x6.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x6 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x6.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x6.0x2 -device ahci,id=sata0,bus=pci.0,addr=0x8 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -drive if=none,media=cdrom,id=drive-sata0-0-1,readonly=on -device ide-cd,bus=sata0.1,drive=drive-sata0-0-1,id=sata0-0-1 -drive file=-path-/virtio-win-0.1.118.iso,format=raw,if=none,media=cdrom,id=drive-sata0-0-4,readonly=on -device ide-cd,bus=sata0.4,drive=drive-sata0-0-4,id=sata0-0-4 -drive file=-path-/img3,format=raw,if=none,id=drive-virtio-disk0,cache=none,aio=native -device virtio-blk-pci,iothread=iothread1,scsi=off,bus=pci.0,addr=0xb,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive file=-img2-,format=raw,if=none,id=drive-virtio-disk1,cache=none,aio=native -device virtio-blk-pci,iothread=iothread1,scsi=off,bus=pci.0,addr=0xa,drive=drive-virtio-disk1,id=virtio-disk1 -drive file=-img1-,format=raw,if=none,id=drive-virtio-disk4,cache=none,aio=native -device virtio-blk-pci,iothread=iothread1,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk4,id=virtio-disk4 -netdev tap,fd=21,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:95:63:4c,bus=pci.0,addr=0x3 -device ich9-intel-hda,id=sound0,bus=pci.0,addr=0x9 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device vfio-pci,host=00:02.0,id=hostdev0,bus=pci.0,addr=0x2 -device usb-host,hostbus=3,hostaddr=7,id=hostdev1,bus=usb.0,port=1 -device vfio-pci,host=00:1b.0,id=hostdev2,bus=pci.0,addr=0x1b -device usb-host,hostbus=3,hostaddr=6,id=hostdev3,bus=usb.0,port=2 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7 -machine pc-i440fx-2.7,accel=kvm,usb=off,vmport=off,dump-guest-core=off,kernel_irqchip=on -cpu host,migratable=no,+invtsc,hv_time,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff -set device.hostdev0.x-igd-opregion=on -set device.hostdev0.x-igd-gms=5 -set device.hostdev0.romfile=-rom- -msg timestamp=on
2017-09-01 07:19:52.107+0000: Domain id=1 is tainted: custom-argv
2017-09-01 07:19:52.107+0000: Domain id=1 is tainted: host-cpu
ALSA lib -path-/pcm_direct.c:1604:(_snd_pcm_direct_get_slave_ipc_offset) Invalid value for card
alsa: Could not initialize DAC
alsa: Failed to open `default':
alsa: Reason: No such device
alsa: Could not initialize ADC
alsa: Failed to open `default':
alsa: Reason: No such device
audio: Failed to create voice `adc'
2017-09-01T07:20:58.117058Z qemu-system-x86_64: libusb_release_interface: -4 [NO_DEVICE]
2017-09-01T07:20:58.117830Z qemu-system-x86_64: libusb_release_interface: -4 [NO_DEVICE]
2017-09-01T07:20:58.117855Z qemu-system-x86_64: libusb_release_interface: -4 [NO_DEVICE]
2017-09-01T07:20:58.117866Z qemu-system-x86_64: libusb_release_interface: -4 [NO_DEVICE]
libusb: error [_open_sysfs_attr] open /sys/bus/usb/devices/3-6.1.3/bConfigurationValue failed ret=-1 errno=2




More information about the vfio-users mailing list