OVMF, Hyper-V, virtio, Win7 incompatibility

Bug #1456819 reported by Alex Williamson
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Invalid
Undecided
Unassigned

Bug Description

Host kernel: v4.1-rc4
QEMU: qemu.git tag v2.3.0
OVMF: edk2.git-ovmf-x64-0-20150518.b1004.g54ae9c0.noarch
libvirt: 1.2.13.1-1.fc21.x86_64
Guest: en_windows_7_professional_with_sp1_x64_dvd_u_676939.iso

If I attempt to use the above software versions to start a VM install, I hit one of two problems:

(a) If I use a virtio NIC, the VM aborts with an error similar to:

qemu-system-x86_64: Guest moved used index from 22 to 0

(b) If I use an emulated (e1000) NIC, the VM switches to a black screen when I should have the dancing windows boot animation logo

Both of these are resolved by switching off ALL Hyper-V enlightenments as shown in the below XML. Enabling any one of them results in the above behavior.

This problem is only seen with OVMF, removing the loader and nvram directives below allows all Hyper-V enlightenments to be enabled, with or without a virtio NIC.

<domain type='kvm'>
  <name>win7-ovmf-demo</name>
  <uuid>a42b96e9-e95d-42c6-9f4a-0236f3d38d95</uuid>
  <memory unit='KiB'>4194304</memory>
  <currentMemory unit='KiB'>4194304</currentMemory>
  <vcpu placement='static'>2</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.3'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
    <nvram>/var/lib/libvirt/qemu/nvram/win7-ovmf-demo_VARS.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
    <hyperv>
      <relaxed state='off'/>
      <vapic state='off'/>
      <spinlocks state='off'/>
    </hyperv>
  </features>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
    <timer name='hypervclock' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/local/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/MSDN/en_windows_7_professional_with_sp1_x64_dvd_u_676939.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <boot order='1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <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>
    <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>
    <interface type='network'>
      <mac address='52:54:00:9b:49:b9'/>
      <source network='default'/>
      <model type='e1000'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes'/>
    <video>
      <model type='vga' vram='16384' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='none'/>
  </devices>
</domain>

Revision history for this message
Alex Williamson (alex-l-williamson) wrote :

The problem also does not occur using OVMF with Windows 8.1 install media: en_windows_8.1_n_with_update_x64_dvd_4065114.iso

summary: - OVMF, Hyper-V, virtio incompatibility
+ OVMF, Hyper-V, virtio, Win7 incompatibility
Revision history for this message
Laszlo Ersek (Red Hat) (lersek) wrote :

Please refer to

https://bugzilla.redhat.com/show_bug.cgi?id=1185253

especially note (2) under "Additional info" in Comment #0.

"Hyper-V extensions + UEFI guest firmware + Win7 guest + guest is multi-VCPU" is not a supported configuration, even in Microsoft's own stack.

Virt-manager has been modified to avoid such a configuration (see comment #10).

Revision history for this message
Thomas Huth (th-huth) wrote :

Is there still anything left to do here, or could we close this bug ticket nowadays?

Changed in qemu:
status: New → Incomplete
Changed in qemu:
status: Incomplete → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.