Bug 1044979

Summary: win8.1.x86_64 / win2012r2 guest will circling reboot when boot with -cpu 'Conroe'
Product: Red Hat Enterprise Linux 7 Reporter: CongLi <coli>
Component: qemu-kvmAssignee: Eduardo Habkost <ehabkost>
Status: CLOSED NOTABUG QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0CC: acathrow, hhuang, juzhang, lijin, mazhang, michen, mnavrati, shuang, virt-maint, xhan, xwei, yvugenfi
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Known Issue
Doc Text:
Windows 8.1 and Windows 2012 R2 require some CPU features that are not present in all qemu-kvm CPU models. Consequently, Windows 8.1 and Windows 2012 R2 do not boot they if certain CPU models are used, namely Opteron_G1, Conroe, and kvm64. To work around this problem, use CPU models that include the features required by Windows 8.1 and Windows 2012 R2, for example Penryn, Nehalem, Westmere, SandyBridge, Haswell, Opteron_G2, Opteron_G3, Opteron_G4, Opteron_G5.
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-02-25 14:07:13 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description CongLi 2013-12-19 11:18:18 UTC
ADescription of problem:
win8.1.x86_64 / win2012r2 guest will circling reboot when boot with -cpu 'Conroe'

Version-Release number of selected component (if applicable):
kernel-3.10.0-63.el7.x86_64
qemu-kvm-1.5.3-30.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1. Boot a win8.1.x86_64 / win2012r2 guest with -cpu 'Conroe':
/home/staf-kvm-devel/autotest-devel/client/tests/virt/qemu/qemu \
    -S  \
    -name 'virt-tests-vm1'  \
    -sandbox off  \
    -M pc  \ 
    -nodefaults  \
    -vga std  \
    -chardev socket,id=qmp_id_qmpmonitor1,path=/tmp/monitor-qmpmonitor1-20131218-182009-Oidq8bVH,server,nowait \
    -mon chardev=qmp_id_qmpmonitor1,mode=control  \
    -chardev socket,id=serial_id_serial0,path=/tmp/serial-serial0-20131218-182009-Oidq8bVH,server,nowait \
    -device isa-serial,chardev=serial_id_serial0  \
    -chardev socket,id=seabioslog_id_20131218-182009-Oidq8bVH,path=/tmp/seabios-20131218-182009-Oidq8bVH,server,nowait \ 
    -device isa-debugcon,chardev=seabioslog_id_20131218-182009-Oidq8bVH,iobase=0x402 \ 
    -device ich9-usb-uhci1,id=usb1,bus=pci.0,addr=03 \
    -drive id=drive_image1,if=none,cache=unsafe,snapshot=off,aio=native,file=/home/staf-kvm-devel/autotest-devel/client/tests/virt/shared/data/images/win2012r2-64.qcow2 \
    -device ide-hd,id=image1,drive=drive_image1,bus=ide.0,unit=0 \
    -device e1000,mac=9a:15:16:17:18:19,id=idXSNSDh,netdev=iduyAEIo,bus=pci.0,addr=04  \
    -netdev tap,id=iduyAEIo  \
    -m 2048  \
    -smp 2,maxcpus=2,cores=1,threads=1,sockets=2  \
    -cpu 'Conroe' \
    -device usb-tablet,id=usb-tablet1,bus=usb1.0,port=1  \
    -vnc :0  \
    -rtc base=localtime,clock=host,driftfix=slew  \
    -boot order=cdn,once=c,menu=off \
    -enable-kvm \
    -monitor stdio
 
2.
3.

Actual results:
win8.1.x86_64 / win2012r2 guest will circling reboot when boot with -cpu 'Conroe'

Expected results:
win8.1.x86_64 / win2012r2 guest boot successfully w/ -cpu 'Conroe'

Additional info:
1. With -cpu 'Penryn' / 'Nehalem' / 'Westmere' / 'SandyBridge' / 'Haswell' / 'host' can't hit this problem.

2. win2012 / win8.1.i386 / win8.0 guest doesn't hit this problem.

3. cpuinfo
processor	: 7
vendor_id	: GenuineIntel
cpu family	: 6
model		: 42
model name	: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
stepping	: 7
microcode	: 0x29
cpu MHz		: 1742.234
cache size	: 8192 KB
physical id	: 0
siblings	: 8
core id		: 3
cpu cores	: 4
apicid		: 7
initial apicid	: 7
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips	: 6784.86
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

Comment 2 lijin 2014-01-22 03:41:47 UTC
boot 2012R2 guest with ***-cpu kvm64*** will also lead guest circling reboot.

package info:
qemu-kvm-rhev-1.5.3-30.el7.x86_64
kernel-3.10.0-64.el7.x86_64

qemu command:
/usr/libexec/qemu-kvm \
-m 2G -smp 2 \
-usb -device usb-tablet \
-cpu kvm64 \
-drive file=win2k12R2.raw,format=raw,if=none,id=drive-ide0-0-0,werror=stop,rerror=stop,cache=none -device virtio-scsi-pci,id=scsi2 -device scsi-hd,bus=scsi2.0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
-name win2k32-64-serial-bug \
-boot menu=on \
-vnc :12 -vga std \
-global PIIX4_PM.disable_s3=0 -global PIIX4_PM.disable_s4=0 \
-monitor stdio \
-drive file=data.raw,format=raw,if=none,id=drive-ide0-0-2,werror=stop,rerror=stop,cache=none -device virtio-scsi-pci,id=scsi0 -device scsi-hd,bus=scsi0.0,drive=drive-ide0-0-2,id=scsi1

Comment 3 xhan 2014-01-22 06:57:14 UTC
*** Bug 1055466 has been marked as a duplicate of this bug. ***

Comment 4 mazhang 2014-02-12 09:14:36 UTC
Hit this problem with "-cpu Opteron_G1".

Host:
qemu-kvm-tools-rhev-1.5.3-45.el7.x86_64
qemu-kvm-common-rhev-1.5.3-45.el7.x86_64
qemu-kvm-rhev-1.5.3-45.el7.x86_64
qemu-kvm-rhev-debuginfo-1.5.3-45.el7.x86_64
qemu-img-rhev-1.5.3-45.el7.x86_64
kernel-3.10.0-86.el7.x86_64

Cpuinfo:
processor	: 31
vendor_id	: AuthenticAMD
cpu family	: 21
model		: 1
model name	: AMD Opteron(TM) Processor 6272                 
stepping	: 2
microcode	: 0x6000626
cpu MHz		: 2100.061
cache size	: 2048 KB
physical id	: 1
siblings	: 16
core id		: 7
cpu cores	: 8
apicid		: 79
initial apicid	: 47
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid amd_dcm aperfmperf pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 nodeid_msr topoext perfctr_core perfctr_nb arat cpb hw_pstate npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold
bogomips	: 4199.78
TLB size	: 1536 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm 100mhzsteps hwpstate cpb

Guest:
2012R2

Cli:
/usr/libexec/qemu-kvm \
-M pc \
-cpu Opteron_G1,hv_spinlocks=0x1fff,hv_relaxed,hv_vapic \
-m 4G \
-smp 4,sockets=2,cores=2,threads=1,maxcpus=16 \
-enable-kvm \
-name win2012r2 \
-uuid 990ea161-6b67-47b2-b803-19fb01d30d12 \
-smbios type=1,manufacturer='Red Hat',product='RHEV Hypervisor',version=el6,serial=koTUXQrb,uuid=feebc8fd-f8b0-4e75-abc3-e63fcdb67170 \
-k en-us \
-rtc base=localtime,clock=host,driftfix=slew \
-nodefaults \
-monitor stdio \
-qmp tcp:0:6666,server,nowait \
-boot menu=on \
-bios /usr/share/seabios/bios.bin \
-vga cirrus \
-vnc :0 \
-drive file=/home/2012install.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,cache=none,werror=stop,rerror=stop,aio=threads \
-device virtio-blk-pci,scsi=off,bus=pci.0,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \
-netdev tap,id=tap1,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown \
-device virtio-net-pci,netdev=tap1,id=nic1,mac=1a:59:0a:4b:5a:94 \
-drive file=gluster://10.66.106.27/gv0/en_windows_server_2012_r2_x64_dvd_2707946.iso,if=none,id=drive-ide0-0-0,media=cdrom,format=raw \
-device ide-drive,bus=ide.0,unit=1,drive=drive-ide0-0-0,bootindex=0 \
-drive file=/usr/share/virtio-win/virtio-win-1.6.8.iso,if=none,id=drive-ide0-0-1,media=cdrom,format=raw \
-device ide-drive,bus=ide.1,unit=1,drive=drive-ide0-0-1 \

Comment 5 Eduardo Habkost 2014-02-24 23:35:00 UTC
Win 8.1 and 2012R2 require the CX16 (CMPXCHG16B) CPU feature, which is not present on Conroe, kvm64, and Opteron_G1. Please confirm it is not reproducible using "-cpu ...,+cx16".

Comment 6 lijin 2014-02-25 05:01:48 UTC
boot win2k12R2 guest with "-cpu kvm64,+cx16",still hit this issue.

Comment 7 CongLi 2014-02-25 05:08:23 UTC
(In reply to Eduardo Habkost from comment #5)
> Win 8.1 and 2012R2 require the CX16 (CMPXCHG16B) CPU feature, which is not
> present on Conroe, kvm64, and Opteron_G1. Please confirm it is not
> reproducible using "-cpu ...,+cx16".

win2012r2 guest can boot successfully with -cpu 'Conroe',+cx16.

Comment 8 Eduardo Habkost 2014-02-25 14:07:13 UTC
(In reply to lijin from comment #6)
> boot win2k12R2 guest with "-cpu kvm64,+cx16",still hit this issue.

Please try using "-cpu kvm64,+cx8,+cx16". There may be other CPU features required by Win2012R2, but we can check if cx8 and cx16 are the only ones.

In either case, we simply need to document that Windows 8.1 and Windows 2012R2 are not compatible with all CPU models.

Comment 9 lijin 2014-02-26 01:54:51 UTC
(In reply to Eduardo Habkost from comment #8)
> (In reply to lijin from comment #6)
> > boot win2k12R2 guest with "-cpu kvm64,+cx16",still hit this issue.
> 
> Please try using "-cpu kvm64,+cx8,+cx16". There may be other CPU features
> required by Win2012R2, but we can check if cx8 and cx16 are the only ones.
> 
> In either case, we simply need to document that Windows 8.1 and Windows
> 2012R2 are not compatible with all CPU models.

try booting win2k12R2 guest with "-cpu kvm64,+cx8,+cx16",still hit hit this issue.