Bug 1163828 - [qemu-kvm] unable to run 64bit versions of Windows 8, 8.1, 2012, 2012 R2 - Error Code: 0x0000001E
Summary: [qemu-kvm] unable to run 64bit versions of Windows 8, 8.1, 2012, 2012 R2 - Er...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise Virtualization Manager
Classification: Red Hat
Component: ovirt-engine
Version: 3.5.0
Hardware: Unspecified
OS: Unspecified
urgent
urgent
Target Milestone: ---
: 3.5.0
Assignee: Francesco Romani
QA Contact: Jiri Belka
URL:
Whiteboard: virt
Depends On:
Blocks: 1137058 rhev35rcblocker rhev35gablocker
TreeView+ depends on / blocked
 
Reported: 2014-11-13 14:50 UTC by Jiri Belka
Modified: 2019-08-15 04:08 UTC (History)
21 users (show)

Fixed In Version: org.ovirt.engine-root-3.5.0-29
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-04-30 09:11:12 UTC
oVirt Team: ---


Attachments (Terms of Use)
logs (407.82 KB, application/x-gzip)
2014-11-13 14:50 UTC, Jiri Belka
no flags Details


Links
System ID Priority Status Summary Last Updated
oVirt gerrit 36648 master MERGED core: osinfo: blacklist hyperv support Never
oVirt gerrit 36677 ovirt-engine-3.5 MERGED core: osinfo: blacklist hyperv support Never
Red Hat Bugzilla 1139928 None CLOSED win2012r2 guest would be black screen when booting vm 2019-08-22 10:06:54 UTC

Internal Links: 1139928

Description Jiri Belka 2014-11-13 14:50:15 UTC
Created attachment 957191 [details]
logs

Description of problem:
i can't run windows 8 64bit, although windows 8 32bit start (at least the installation).

* error:

~~~
Your PC needs to restart.
Please hold down the power button.
Error Code: OxOOOOOO1E
Parameters:
OxFFFFFFFFCOOOO096
OxFFFFF80l63D854E8
OxOOOOOOOOOOOOOOOO
OxOOOOOOOOOOOOOOOO
~~~

* there's no difference in qemu-kvm cmdline.

[root@dell-r210ii-04 yum.repos.d]# grep qemu-kvm /var/log/libvirt/qemu/test-ko.log
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin QEMU_AUDIO_DRV=none /usr/libexec/qemu-kvm -name test-ko -S -M rhel6.5.0 -cpu SandyBridge,hv_relaxed -enable-kvm -m 2048 -realtime mlock=off -smp 2,maxcpus=16,sockets=16,cores=1,threads=1 -uuid a0fb4dc8-f1c9-41d3-955f-10588cd47110 -smbios type=1,manufacturer=Red Hat,product=RHEV Hypervisor,version=6Server-6.6.0.2.el6,serial=4C4C4544-0058-3410-8058-C2C04F38354A,uuid=a0fb4dc8-f1c9-41d3-955f-10588cd47110 -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/test-ko.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=2014-11-13T14:41:05,clock=vm,driftfix=slew -no-kvm-pit-reinjection -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x5 -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x6 -drive file=/rhev/data-center/00000002-0002-0002-0002-000000000068/0c65cf21-bb17-463c-b6a9-94318871fb06/images/93484af6-22d7-48fd-aa4a-863c5f0a1c6b/40a63f93-a8c7-4e84-bde1-9cde9003c925,if=none,id=drive-ide0-0-0,format=raw,serial=93484af6-22d7-48fd-aa4a-863c5f0a1c6b,cache=none,werror=stop,rerror=stop,aio=threads -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=2 -drive file=/rhev/data-center/mnt/10.34.63.204:_home_iso_shared/0c78b4d6-ba00-4d3e-9f9f-65c7d5899d71/images/11111111-1111-1111-1111-111111111111/en_windows_8_enterprise_x64_dvd_917522.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw,serial= -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0,bootindex=1 -netdev tap,fd=27,id=hostnet0 -device e1000,netdev=hostnet0,id=net0,mac=00:1a:4a:e0:5f:02,bus=pci.0,addr=0x3,bootindex=3 -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channels/a0fb4dc8-f1c9-41d3-955f-10588cd47110.com.redhat.rhevm.vdsm,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.rhevm.vdsm -chardev socket,id=charchannel1,path=/var/lib/libvirt/qemu/channels/a0fb4dc8-f1c9-41d3-955f-10588cd47110.org.qemu.guest_agent.0,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=org.qemu.guest_agent.0 -device usb-tablet,id=input0 -vnc 10.34.63.223:0,password -k en-us -vga cirrus -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 -msg timestamp=on

* no real difference between both platforms

# sdiff -s /tmp/ok /tmp/ko
test-ok                                                       | test-ko
socket,id=charmonitor,path=/var/lib/libvirt/qemu/test-ok.moni | socket,id=charmonitor,path=/var/lib/libvirt/qemu/test-ko.moni
base=2014-11-13T14:39:25,clock=vm,driftfix=slew               | base=2014-11-13T14:41:05,clock=vm,driftfix=slew
file=/rhev/data-center/mnt/10.34.63.204:_home_iso_shared/0c78 | file=/rhev/data-center/mnt/10.34.63.204:_home_iso_shared/0c78

tested on RHEVM 3.5 with RHEVH and RHEL

Version-Release number of selected component (if applicable):
qemu-kvm-rhev-0.12.1.2-2.448.el6.x86_64
libvirt-0.10.2-46.el6_6.1.x86_64

How reproducible:
100%

Steps to Reproduce:
1. have rhel66 with above packages
2. use RHEVM 3.5 (or explicitly use above qemu-kvm args) to run windows 8 64bit VM
3.

Actual results:
vm finishes in error

Expected results:
should work

Additional info:

Comment 3 Chao Yang 2014-11-17 03:10:37 UTC
We have an existing bug:
Bug 1063124 - fail to boot windows 2012 guest with '-cpu SandyBridge,hv_relaxed'

And removing hv_relaxed works around this issue.

Comment 4 Ronen Hod 2014-11-17 08:32:35 UTC
(In reply to Chao Yang from comment #3)
> We have an existing bug:
> Bug 1063124 - fail to boot windows 2012 guest with '-cpu
> SandyBridge,hv_relaxed'
> 
> And removing hv_relaxed works around this issue.

Strange, almost as if it is a Windows bug. hv_relaxed is a Microsoft guest-side code only.
Vadim, are there side effects that you can think of?

Comment 7 Jiri Belka 2015-01-07 14:33:07 UTC
Clarification:

- it is related to hv_relaxed flag passed to qemu-kvm
- this flag appeared recently in rhevm/vdsm (3.5)
- this flag has appeared in osinfo

os.windows_xp.devices.hyperv.enabled.value = true

- osinfo is inherited to other windows versions
- engine passes 'hypervEnable=true'

2015-01-07 15:22:49,588 INFO  [org.ovirt.engine.core.vdsbroker.vdsbroker.FullListVdsCommand] (DefaultQuartzScheduler_Worker-95) [d55c73b] FINISH, FullListVdsCommand, return: [{displaySecurePort=-1, kvmEnable=true, nicModel=rtl8139,pv, keyboardLayout=en-us, guestDiskMapping={}, displayIp=10.34.63.223, pauseCode=NOERR, nice=0, displayNetwork=rhevm, timeOffset=0, transparentHugePages=true, vmId=512111ac-0692-405c-9c30-c2df35309576, acpiEnable=true, custom={}, spiceSslCipherSuite=DEFAULT, memSize=2048, smp=2, displayPort=5900, emulatedMachine=rhel6.5.0, vmType=kvm, status=Up, memGuaranteedSize=1024, display=vnc, pid=19499, smartcardEnable=false, bootMenuEnable=false, tabletEnable=true, spiceSecureChannels=smain,sinputs,scursor,splayback,srecord,sdisplay,susbredir,ssmartcard, smpCoresPerSocket=1, maxVCpus=16, hypervEnable=true, clientIp=, devices=[Ljava.lang.Object;@7b574541, vmName=jb-w2k12r2-2, cpuType=SandyBridge}], log id: 6ee308ce

- then vdsm checks

    def appendFeatures(self):
        """
        Add machine features to domain xml.

        Currently only
        <features>
            <acpi/>
        <features/>

        for hyperv:
        <features>
            <acpi/>
            <hyperv>
                <relaxed state='on'/>
            </hyperv>
        <features/>
        """

        if (utils.tobool(self.conf.get('acpiEnable', 'true')) or
           utils.tobool(self.conf.get('hypervEnable', 'false'))):
            features = self.dom.appendChildWithArgs('features')

        if utils.tobool(self.conf.get('acpiEnable', 'true')):
            features.appendChildWithArgs('acpi')

        if utils.tobool(self.conf.get('hypervEnable', 'false')):
            hyperv = XMLElement('hyperv')
            features.appendChild(hyperv)

            hyperv.appendChildWithArgs('relaxed', state='on')
            # turns off an internal Windows watchdog, and by doing so avoids
            # some high load BSODs.

- appends to xml domain

            <hyperv>
                <relaxed state='on'/>
            </hyperv>

- which passes hv_relaxed to qemu-kvm

...-cpu SandyBridge,hv_relaxed...

it seems this flag should not be passed for mentioned/impacted windows variants

Comment 8 Jiri Belka 2015-01-07 14:43:35 UTC
fyi not related to cluster version in rhevm 3.5, i tried:

- rhel6.6 & 3.4 vdsm in 3.5 rhevm with 3.4 clstr - worked ok
- rhel6.6 & 3.5 vdsm in 3.5 rhevm with 3.4 clstr - not working
- rhel 6.5 & 3.4 vdsm in 3.4 rhevm with 3.4 clstr - worked ok
- rhel7 & vdsm 3.5 in 3.5 rhevm - worked ok

Comment 10 Michal Skrivanek 2015-01-07 14:57:59 UTC
Jiri, do we have a confirmed list of Windows version affected by this?

might be needed to remove it altogether for now since we do not have differentiation in osinfo based on underlying hypervisor release

or a specific ad-hoc code dropping this on RHEL 6 at vdsm side

Comment 11 Jiri Belka 2015-01-07 15:13:55 UTC
test - all had hv_relaxed, 3.5 vdsm/rhel6.6:

wxp - ok
w7 32bit - ok
w7 64bit - ok
w2k3 32bit - ok
w2k3 64bit - <not tested, no vm now>
w2k3r2 - ok
w2k8 32bit - ok
w2k8 64bit - ok
w2k8r2 - ok
w8 32bit - ok

w8 64bit - fail
w2k12 - fail
w8.1 32bit - <not tested, no vm now>
w8.1 64bit - fail
w2k12r2 - fail

Comment 12 Francesco Romani 2015-01-07 15:21:44 UTC
RHEL 6.x is still the recommended platform (not yet RHEL 7.x) so, either tune osinfo to blacklist w8/w2k12 guests, or disable the feature alltogether.

I'd go first with the blacklist approach, especially considering that there is an underlying qemu issue which, once solved, will allow us to re-enable the feature everywhere.

Comment 13 Francesco Romani 2015-01-07 15:38:42 UTC
posted patch on engine to add blacklist and try to save the known-good-and-tested-as-such guest windowses.

contingency plan is to disable the feature alltogether either on VDSM or on osinfo again.

Comment 14 Jiri Belka 2015-01-07 15:58:24 UTC
for archives - all windows run ok on rhel7 with hv_relaxed flag

Comment 15 Francesco Romani 2015-01-12 08:52:11 UTC
patches merged on all the relevant branches.

Comment 16 Jiri Belka 2015-01-13 16:19:16 UTC
ok vt13.7

checked os variants and osinfo file (rhel6 host).

w2k12r2/w2k12 - without hv_relaxed
w8 64bit - without hv_relaxed
w8 32bit - with hv_relaxed
w2k8r2 - with hv_relaxed
...

Comment 17 Jiri Belka 2015-01-14 09:19:19 UTC
tested also on RHEL7, no regression, all work ok

Comment 18 Omer Frenkel 2015-02-17 08:27:57 UTC
RHEV-M 3.5.0 has been released

Comment 19 akotov 2015-04-28 12:01:36 UTC
I am gonna reopen this bug.

Customer is having this issue on RHEV-H 6.6-20150128 with Windows 8.

rhevm-backend-3.5.0-0.32.el6ev.noarch                       Tue Mar 24 14:34:20 2015


rhev-h7: w8 64bit hv_relaxed - ok
rhev-h6: w8 64bit hv_relaxed - fail

Comment 22 Francesco Romani 2015-04-28 13:04:35 UTC
(In reply to akotov from comment #19)
> I am gonna reopen this bug.
> 
> Customer is having this issue on RHEV-H 6.6-20150128 with Windows 8.
> 
> rhevm-backend-3.5.0-0.32.el6ev.noarch                       Tue Mar 24
> 14:34:20 2015
> 
> 
> rhev-h7: w8 64bit hv_relaxed - ok
> rhev-h6: w8 64bit hv_relaxed - fail

On Engine side, this patch blacklists hv_relaxed and any other hyperV enlightenment change for windowses >= 8 (client) or >= 2012 (server), regardless what host version is running, node included

Comment 24 akotov 2015-04-30 09:11:12 UTC
Confirmed to work as expected (almost).
The issue was customer is installing Windows 7 using PXE, and PXE environment runs on some limited version of Windows 8.

So the scenario is:

guest type = Windows 7 =>> Error Code: OxOOOOOO1E
guest type = Windows 8 =>> Windows 7 installs, then BSODs at first boot

workaround is to set guest type to Win8, install Win7, change guest type to Windows 7


Note You need to log in before you can comment on or make changes to this bug.