Red Hat Bugzilla – Bug 882834
no warning while check the lacked cpuid_7_0_ebx_feature_name flag
Last modified: 2013-11-21 00:57:40 EST
Description of problem: boot guest with -cpu model_name,+flag(cpuid_7_0_ebx_feature_name),check , no worning while while flag is lacked in host. there is lack warning while flag is defined in ext3_feature_name, ext_feature_name, ext2_feature_name Version-Release number of selected component (if applicable): qemu-kvm-0.12.1.2-2.337.el6.x86_64 How reproducible: 100% Steps to Reproduce: 1. qemu-kvm -cpu Opteron_G2,+fsgsbase,check 2. 3. Actual results: /usr/libexec/qemu-kvm -cpu Opteron_G2,+fsgsbase,check warning: host cpuid 8000_0001:ecx flag restricted to guest 'svm' [0x00000004] VNC server running on `::1:5900' Expected results: Additional info: host cpuinfo: 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 3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs npt lbrv svm_lock host x86info: eax in: 0x00000000, eax = 00000005 ebx = 68747541 ecx = 444d4163 edx = 69746e65 eax in: 0x00000001, eax = 00100f23 ebx = 00040800 ecx = 00802009 edx = 178bfbff eax in: 0x00000002, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x00000003, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x00000004, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x00000005, eax = 00000040 ebx = 00000040 ecx = 00000003 edx = 00000000 eax in: 0x80000000, eax = 8000001a ebx = 68747541 ecx = 444d4163 edx = 69746e65 eax in: 0x80000001, eax = 00100f23 ebx = 10001602 ecx = 000007ff edx = efd3fbff eax in: 0x80000002, eax = 20444d41 ebx = 6e656850 ecx = 74286d6f edx = 3920296d eax in: 0x80000003, eax = 42303036 ebx = 61755120 ecx = 6f432d64 edx = 50206572 eax in: 0x80000004, eax = 65636f72 ebx = 726f7373 ecx = 00000000 edx = 00000000 eax in: 0x80000005, eax = ff30ff10 ebx = ff30ff20 ecx = 40020140 edx = 40020140 eax in: 0x80000006, eax = 20800000 ebx = 42004200 ecx = 02008140 edx = 0010a140 eax in: 0x80000007, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 000001f9 eax in: 0x80000008, eax = 00003030 ebx = 00000000 ecx = 00002003 edx = 00000000 eax in: 0x80000009, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x8000000a, eax = 00000001 ebx = 00000040 ecx = 00000000 edx = 00000007 eax in: 0x8000000b, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x8000000c, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x8000000d, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x8000000e, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x8000000f, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x80000010, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x80000011, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x80000012, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x80000013, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x80000014, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x80000015, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x80000016, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x80000017, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x80000018, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x80000019, eax = f0300000 ebx = 00000000 ecx = 00000000 edx = 00000000 eax in: 0x8000001a, eax = 00000003 ebx = 00000000 ecx = 00000000 edx = 00000000
seems no cpuid_7_0_ebx_feature_name check here. target-i386/cpuid.c static int kvm_check_features_against_host(CPUX86State *env, x86_def_t *guest_def) { x86_def_t host_def; uint32_t mask; int rv; struct model_features_t ft[] = { {&guest_def->features, &host_def.features, ~0, 0, feature_name, "0000_0001:edx"}, {&guest_def->ext_features, &host_def.ext_features, ~CPUID_EXT_HYPERVISOR, CPUID_EXT_VMX, ext_feature_name, "0000_0001:ecx"}, {&guest_def->ext2_features, &host_def.ext2_features, ~PPRO_FEATURES, 0, ext2_feature_name, "8000_0001:edx"}, {&guest_def->ext3_features, &host_def.ext3_features, ~0, kvm_nested ? 0 : CPUID_EXT3_SVM, ext3_feature_name, "8000_0001:ecx"}, {NULL}}, *p;
Setting priority: low because libvirt doesn't even use "-cpu check" or "-cpu enforce".
Reproduce this bug as follow version: Host # uname -r 2.6.32-389.el6.x86_64 # rpm -q qemu-kvm qemu-kvm-0.12.1.2-2.356.el6.x86_64 Steps : 1.Boot guest /usr/libexec/qemu-kvm -cpu Penryn,+fsgsbase,check VNC server running on `::1:5900' Resutls: no worning while flag is lacked in host Verify this bug as follow version. Host: # uname -r 2.6.32-389.el6.x86_64 # rpm -q qemu-kvm qemu-kvm-0.12.1.2-2.376.el6.x86_64 1.Boot guest /usr/libexec/qemu-kvm -cpu Penryn,+fsgsbase,check warning: host cpuid EAX=7,ECX=0:ebx lacks requested flag 'fsgsbase' [0x00000001] VNC server running on `::1:5900' Resutls: Have warning info while flag is lacked in host. Addtional info: 1)Test boot guest with "-cpu Penryn,+sse4_2,check" "-cpu Penryn,+aes,check" Can get the warning info. According to above test ,this bug fixed.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHSA-2013-1553.html