Description of problem: host-model CPU with check='full' does not work well when the host-model cpu contains more features in th qemu Version-Release number of selected component (if applicable): libvirt-3.2.0-14.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1. check domcapabilities: virsh # domcapabilities ... <cpu> <mode name='host-passthrough' supported='yes'/> <mode name='host-model' supported='yes'> <model fallback='forbid'>SandyBridge</model> <vendor>Intel</vendor> <feature policy='require' name='vme'/> <feature policy='require' name='ss'/> <feature policy='require' name='pcid'/> <feature policy='require' name='hypervisor'/> <feature policy='require' name='arat'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='pdpe1gb'/> <feature policy='require' name='invtsc'/> <feature policy='disable' name='xsave'/> <feature policy='disable' name='avx'/> </mode> <mode name='custom' supported='yes'> <model usable='yes'>qemu64</model> <model usable='yes'>qemu32</model> <model usable='no'>phenom</model> <model usable='yes'>pentium3</model> <model usable='yes'>pentium2</model> <model usable='yes'>pentium</model> <model usable='no'>n270</model> <model usable='yes'>kvm64</model> <model usable='yes'>kvm32</model> <model usable='no'>cpu64-rhel6</model> <model usable='yes'>coreduo</model> <model usable='yes'>core2duo</model> <model usable='no'>athlon</model> <model usable='yes'>Westmere</model> <model usable='no'>Skylake-Client</model> <model usable='no'>SandyBridge</model> <model usable='yes'>Penryn</model> <model usable='no'>Opteron_G5</model> <model usable='no'>Opteron_G4</model> <model usable='no'>Opteron_G3</model> <model usable='yes'>Opteron_G2</model> <model usable='yes'>Opteron_G1</model> <model usable='yes'>Nehalem</model> <model usable='no'>IvyBridge</model> <model usable='no'>Haswell</model> <model usable='no'>Haswell-noTSX</model> <model usable='yes'>Conroe</model> <model usable='no'>Broadwell</model> <model usable='no'>Broadwell-noTSX</model> <model usable='yes'>486</model> </mode> </cpu> ... S1: start a guest with host-model + check full: 1. guest xml <cpu mode='host-model' check='full'> <model fallback='allow'/> 2. start guest, libvirt will report that xsaveopt is missing: virsh # start r7 error: Failed to start domain r7 error: operation failed: guest CPU doesn't match specification: missing features: xsaveopt 3. modify xml to disable xsaveopt: <cpu mode='host-model' check='full'> <model fallback='allow'/> <feature policy='disable' name='xsaveopt'/> 4. start guest: virsh # start r7 Domain r7 started 5. recheck the guest live xml: <cpu mode='custom' match='exact' check='full'> <model fallback='forbid'>SandyBridge</model> <vendor>Intel</vendor> <feature policy='require' name='vme'/> <feature policy='require' name='ss'/> <feature policy='require' name='pcid'/> <feature policy='require' name='hypervisor'/> <feature policy='require' name='arat'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='pdpe1gb'/> <feature policy='disable' name='xsave'/> <feature policy='disable' name='avx'/> <feature policy='disable' name='xsaveopt'/> 6. login guest and check cpu: IN GUEST: # lscpu ... Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes hypervisor lahf_lm tsc_adjust arat 7. check the qemu log, there is no warning. S2: start a guest with host-model + check is partial 1. modify guest xml to: <cpu mode='host-model' check='partial'> <model fallback='allow'/> 2. start guest: # virsh start r7 Domain r7 started 3. check the guest xml and that xsaveopt will be displayed as disabled: <cpu mode='custom' match='exact' check='full'> <model fallback='forbid'>SandyBridge</model> <vendor>Intel</vendor> <feature policy='require' name='vme'/> <feature policy='require' name='ss'/> <feature policy='require' name='pcid'/> <feature policy='require' name='hypervisor'/> <feature policy='require' name='arat'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='pdpe1gb'/> <feature policy='disable' name='xsave'/> <feature policy='disable' name='avx'/> <feature policy='disable' name='xsaveopt'/> 4. check the guest log: warning: host doesn't support requested feature: CPUID.0DH:EAX.xsaveopt [bit 0] warning: host doesn't support requested feature: CPUID.0DH:EAX.xsaveopt [bit 0] warning: host doesn't support requested feature: CPUID.0DH:EAX.xsaveopt [bit 0] warning: host doesn't support requested feature: CPUID.0DH:EAX.xsaveopt [bit 0] warning: host doesn't support requested feature: CPUID.0DH:EAX.xsaveopt [bit 0] S3: host-model + check is none: the same result with check is partial Actual results: Libvirt didn't disable the xsaveopt when use host-model But qemu already report host didn't have xsaveopt: {"name":"SandyBridge","typename":"SandyBridge-x86_64-cpu","unavailable-features":["xsaveopt"],"static":false,"migration-safe":true} Expected results: S1: Guest start without disable xsaveopt in guest xml S2: Do not for add the xsaveopt cpu property in the qemu command line S3: Do not for add the xsaveopt cpu property in the qemu command line Additional info: output from http://libvirt.org/git/?p=libvirt.git;a=blob_plain;f=tests/cputestdata/cpu-gather.sh: model name : Intel(R) Xeon(R) CPU E7- 4830 @ 2.13GHz CPU: 0x00000000 0x00: eax=0x0000000b ebx=0x756e6547 ecx=0x6c65746e edx=0x49656e69 0x00000001 0x00: eax=0x000206f2 ebx=0x05400800 ecx=0x02bee3ff edx=0xbfebfbff 0x00000002 0x00: eax=0x55035a01 ebx=0x00f0b2ec ecx=0x00000000 edx=0x09ca212c 0x00000003 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x00000004 0x00: eax=0x7c004121 ebx=0x01c0003f ecx=0x0000003f edx=0x00000000 0x00000004 0x01: eax=0x7c004122 ebx=0x00c0003f ecx=0x0000007f edx=0x00000000 0x00000004 0x02: eax=0x7c004143 ebx=0x01c0003f ecx=0x000001ff edx=0x00000000 0x00000004 0x03: eax=0x7c0fc163 ebx=0x05c0003f ecx=0x00003fff edx=0x00000006 0x00000005 0x00: eax=0x00000040 ebx=0x00000040 ecx=0x00000003 edx=0x00001120 0x00000006 0x00: eax=0x00000007 ebx=0x00000001 ecx=0x00000009 edx=0x00000000 0x00000007 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x00000008 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x00000009 0x00: eax=0x00000001 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x0000000a 0x00: eax=0x07300403 ebx=0x00000004 ecx=0x00000000 edx=0x00000603 0x0000000b 0x00: eax=0x00000001 ebx=0x00000002 ecx=0x00000100 edx=0x00000005 0x0000000b 0x01: eax=0x00000006 ebx=0x00000010 ecx=0x00000201 edx=0x00000005 0x80000000 0x00: eax=0x80000008 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x80000001 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000001 edx=0x2c100800 0x80000002 0x00: eax=0x20202020 ebx=0x49202020 ecx=0x6c65746e edx=0x20295228 0x80000003 0x00: eax=0x6e6f6558 ebx=0x20295228 ecx=0x20555043 edx=0x202d3745 0x80000004 0x00: eax=0x30333834 ebx=0x20402020 ecx=0x33312e32 edx=0x007a4847 0x80000005 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x80000006 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x01006040 edx=0x00000000 0x80000007 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000100 0x80000008 0x00: eax=0x0000302c ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x80860000 0x00: eax=0x00000001 ebx=0x00000002 ecx=0x00000100 edx=0x00000005 0xc0000000 0x00: eax=0x00000001 ebx=0x00000002 ecx=0x00000100 edx=0x00000005 {"QMP": {"version": {"qemu": {"micro": 0, "minor": 9, "major": 2}, "package": "(qemu-kvm-rhev-2.9.0-12.el7)"}, "capabilities": []}} {"return": {}} {"return": {"model": {"name": "base", "props": {"phys-bits": 0, "core-id": -1, "xlevel": 2147483656, "cmov": true, "ia64": false, "aes": true, "mmx": true, "arat": true, "rdpid": false, "pause-filter": false, "xsavec": false, "osxsave": false, "tsc-frequency": 0, "xd": true, "hv-vendor-id": "", "kvm-asyncpf": true, "kvm_asyncpf": true, "perfctr_core": false, "perfctr-core": false, "mpx": false, "avx512cd": false, "decodeassists": false, "pbe": false, "sse4_1": true, "sse4.1": true, "sse4-1": true, "family": 6, "vmware-cpuid-freq": true, "avx512f": false, "xcrypt": false, "msr": true, "mce": true, "mca": true, "thread-id": -1, "min-level": 11, "xgetbv1": false, "cid": false, "hv-relaxed": false, "fxsr": true, "ds": false, "hv-crash": false, "xsaveopt": false, "xtpr": false, "avx512-vpopcntdq": false, "phe": false, "avx512vl": false, "extapic": false, "3dnowprefetch": false, "cr8legacy": false, "cpuid-0xb": true, "xcrypt-en": false, "kvm_pv_eoi": true, "apic-id": 4294967295, "pn": false, "dca": false, "vendor": "GenuineIntel", "pku": false, "smx": false, "cmp-legacy": false, "cmp_legacy": false, "avx512-4fmaps": false, "vmcb-clean": false, "vmcb_clean": false, "3dnowext": false, "hle": false, "npt": false, "memory": "/machine/unattached/system[0]", "clwb": false, "lbrv": false, "adx": false, "ss": true, "pni": true, "svm_lock": false, "svm-lock": false, "smep": false, "pfthreshold": false, "smap": false, "x2apic": true, "avx512vbmi": false, "i64": true, "flushbyasid": false, "f16c": false, "ace2-en": false, "pat": true, "pae": true, "sse": true, "phe-en": false, "kvm-nopiodelay": true, "kvm_nopiodelay": true, "tm": false, "kvmclock-stable-bit": true, "hypervisor": true, "socket-id": -1, "pcommit": false, "syscall": true, "level": 11, "avx512dq": false, "svm": false, "full-cpuid-auto-level": true, "invtsc": false, "sse3": true, "sse2": true, "est": false, "avx512ifma": false, "tm2": false, "kvm-pv-eoi": true, "cx8": true, "kvm-mmu": false, "kvm_mmu": false, "sse4_2": true, "sse4.2": true, "sse4-2": true, "pge": true, "fill-mtrr-mask": true, "pdcm": false, "nodeid_msr": false, "model": 47, "movbe": false, "nrip-save": false, "nrip_save": false, "sse4a": false, "ssse3": true, "kvm_pv_unhalt": true, "invpcid": false, "pdpe1gb": true, "tsc-deadline": true, "fma": false, "cx16": true, "de": true, "enforce": false, "stepping": 2, "xsave": false, "clflush": true, "skinit": false, "tce": false, "tsc": true, "fpu": true, "ds-cpl": false, "ds_cpl": false, "ibs": false, "host-phys-bits": true, "fma4": false, "la57": false, "osvw": false, "check": true, "hv-spinlocks": -1, "pmm": false, "apic": true, "pmu": false, "min-xlevel2": 0, "tsc-adjust": true, "tsc_adjust": true, "kvm-steal-time": true, "kvm_steal_time": true, "kvmclock": true, "l3-cache": true, "lwp": false, "xop": false, "avx": false, "ospke": false, "ace2": false, "acpi": false, "avx512bw": false, "hv-vapic": false, "fsgsbase": false, "ht": false, "nx": true, "pclmulqdq": true, "mmxext": false, "popcnt": true, "xsaves": false, "lm": true, "umip": false, "avx2": false, "pse": true, "sep": true, "pclmuldq": true, "nodeid-msr": false, "kvm": true, "misalignsse": false, "min-xlevel": 2147483656, "bmi2": false, "bmi1": false, "kvm-pv-unhalt": true, "realized": false, "tsc-scale": false, "tsc_scale": false, "topoext": false, "xlevel2": 0, "clflushopt": false, "kvm-no-smi-migration": false, "monitor": false, "avx512er": false, "pmm-en": false, "pcid": true, "3dnow": false, "erms": false, "lahf-lm": true, "lahf_lm": true, "xstore": false, "fxsr-opt": false, "fxsr_opt": false, "rtm": false, "lmce": true, "hv-time": false, "perfctr-nb": false, "perfctr_nb": false, "ffxsr": false, "rdrand": false, "rdseed": false, "avx512-4vnniw": false, "vme": true, "vmx": false, "dtes64": false, "mtrr": true, "rdtscp": true, "pse36": true, "tbm": false, "wdt": false, "pause_filter": false, "model-id": " Intel(R) Xeon(R) CPU E7- 4830 @ 2.13GHz", "sha-ni": false, "abm": false, "avx512pf": false, "xstore-en": false}}}, "id": "model-expansion"} {"return": {}} {"timestamp": {"seconds": 1498440739, "microseconds": 661253}, "event": "SHUTDOWN", "data": {"guest": false}}
Luyao could you please run an updated cpu-gather.sh script (https://gitlab.com/jirkade/libvirt/raw/cpu-fixes/tests/cputestdata/cpu-gather.sh) on the affected host (i.e., Xeon E7-4830) and attach the output here?
(In reply to Jiri Denemark from comment #3) > Luyao could you please run an updated cpu-gather.sh script > (https://gitlab.com/jirkade/libvirt/raw/cpu-fixes/tests/cputestdata/cpu- > gather.sh) on the affected host (i.e., Xeon E7-4830) and attach the output > here? Hi Jirka, Here is the output of the updated cpu-gather.sh: model name : Intel(R) Xeon(R) CPU E7- 4830 @ 2.13GHz CPU: 0x00000000 0x00: eax=0x0000000b ebx=0x756e6547 ecx=0x6c65746e edx=0x49656e69 0x00000001 0x00: eax=0x000206f2 ebx=0x80400800 ecx=0x02bee3ff edx=0xbfebfbff 0x00000002 0x00: eax=0x55035a01 ebx=0x00f0b2ec ecx=0x00000000 edx=0x09ca212c 0x00000003 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x00000004 0x00: eax=0x7c004121 ebx=0x01c0003f ecx=0x0000003f edx=0x00000000 0x00000004 0x01: eax=0x7c004122 ebx=0x00c0003f ecx=0x0000007f edx=0x00000000 0x00000004 0x02: eax=0x7c004143 ebx=0x01c0003f ecx=0x000001ff edx=0x00000000 0x00000004 0x03: eax=0x7c0fc163 ebx=0x05c0003f ecx=0x00003fff edx=0x00000006 0x00000005 0x00: eax=0x00000040 ebx=0x00000040 ecx=0x00000003 edx=0x00001120 0x00000006 0x00: eax=0x00000007 ebx=0x00000001 ecx=0x00000009 edx=0x00000000 0x00000007 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x00000008 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x00000009 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x0000000a 0x00: eax=0x07300403 ebx=0x00000004 ecx=0x00000000 edx=0x00000603 0x0000000b 0x00: eax=0x00000001 ebx=0x00000002 ecx=0x00000100 edx=0x00000080 0x0000000b 0x01: eax=0x00000006 ebx=0x00000010 ecx=0x00000201 edx=0x00000080 0x80000000 0x00: eax=0x80000008 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x80000001 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000001 edx=0x2c100800 0x80000002 0x00: eax=0x20202020 ebx=0x49202020 ecx=0x6c65746e edx=0x20295228 0x80000003 0x00: eax=0x6e6f6558 ebx=0x20295228 ecx=0x20555043 edx=0x202d3745 0x80000004 0x00: eax=0x30333834 ebx=0x20402020 ecx=0x33312e32 edx=0x007a4847 0x80000005 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x80000006 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x01006040 edx=0x00000000 0x80000007 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000100 0x80000008 0x00: eax=0x0000302c ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x80860000 0x00: eax=0x00000001 ebx=0x00000002 ecx=0x00000100 edx=0x00000080 0xc0000000 0x00: eax=0x00000001 ebx=0x00000002 ecx=0x00000100 edx=0x00000080 {"QMP": {"version": {"qemu": {"micro": 0, "minor": 9, "major": 2}, "package": "(qemu-kvm-rhev-2.9.0-16.el7_4.8)"}, "capabilities": []}} {"return": {}} {"return": {"model": {"name": "base", "props": {"phys-bits": 0, "core-id": -1, "xlevel": 2147483656, "cmov": true, "ia64": false, "aes": true, "mmx": true, "arat": true, "rdpid": false, "pause-filter": false, "xsavec": false, "osxsave": false, "tsc-frequency": 0, "xd": true, "hv-vendor-id": "", "kvm-asyncpf": true, "kvm_asyncpf": true, "perfctr_core": false, "perfctr-core": false, "mpx": false, "avx512cd": false, "decodeassists": false, "pbe": false, "sse4_1": true, "sse4.1": true, "sse4-1": true, "family": 6, "vmware-cpuid-freq": true, "avx512f": false, "xcrypt": false, "msr": true, "mce": true, "mca": true, "thread-id": -1, "min-level": 11, "xgetbv1": false, "cid": false, "hv-relaxed": false, "fxsr": true, "ds": false, "hv-crash": false, "xsaveopt": false, "xtpr": false, "avx512-vpopcntdq": false, "phe": false, "avx512vl": false, "extapic": false, "3dnowprefetch": false, "cr8legacy": false, "cpuid-0xb": true, "xcrypt-en": false, "kvm_pv_eoi": true, "apic-id": 4294967295, "pn": false, "dca": false, "vendor": "GenuineIntel", "pku": false, "smx": false, "cmp-legacy": false, "cmp_legacy": false, "avx512-4fmaps": false, "vmcb-clean": false, "vmcb_clean": false, "3dnowext": false, "hle": false, "npt": false, "memory": "/machine/unattached/system[0]", "clwb": false, "lbrv": false, "adx": false, "ss": true, "pni": true, "svm_lock": false, "svm-lock": false, "smep": false, "pfthreshold": false, "smap": false, "x2apic": true, "avx512vbmi": false, "i64": true, "flushbyasid": false, "f16c": false, "ace2-en": false, "pat": true, "pae": true, "sse": true, "phe-en": false, "kvm-nopiodelay": true, "kvm_nopiodelay": true, "tm": false, "kvmclock-stable-bit": true, "hypervisor": true, "socket-id": -1, "pcommit": false, "syscall": true, "level": 11, "avx512dq": false, "svm": false, "full-cpuid-auto-level": true, "invtsc": false, "sse3": true, "sse2": true, "est": false, "avx512ifma": false, "tm2": false, "kvm-pv-eoi": true, "cx8": true, "kvm-mmu": false, "kvm_mmu": false, "sse4_2": true, "sse4.2": true, "sse4-2": true, "pge": true, "fill-mtrr-mask": true, "pdcm": false, "nodeid_msr": false, "model": 47, "movbe": false, "nrip-save": false, "nrip_save": false, "sse4a": false, "ssse3": true, "kvm_pv_unhalt": true, "invpcid": false, "pdpe1gb": true, "tsc-deadline": true, "fma": false, "cx16": true, "de": true, "enforce": false, "stepping": 2, "xsave": false, "clflush": true, "skinit": false, "tce": false, "tsc": true, "fpu": true, "ds-cpl": false, "ds_cpl": false, "ibs": false, "host-phys-bits": true, "fma4": false, "la57": false, "osvw": false, "check": true, "hv-spinlocks": -1, "pmm": false, "apic": true, "pmu": false, "min-xlevel2": 0, "tsc-adjust": true, "tsc_adjust": true, "kvm-steal-time": true, "kvm_steal_time": true, "kvmclock": true, "l3-cache": true, "lwp": false, "xop": false, "avx": false, "ospke": false, "ace2": false, "acpi": false, "avx512bw": false, "hv-vapic": false, "fsgsbase": false, "ht": false, "nx": true, "pclmulqdq": true, "mmxext": false, "popcnt": true, "xsaves": false, "lm": true, "umip": false, "avx2": false, "pse": true, "sep": true, "pclmuldq": true, "nodeid-msr": false, "kvm": true, "misalignsse": false, "min-xlevel": 2147483656, "bmi2": false, "bmi1": false, "kvm-pv-unhalt": true, "realized": false, "tsc-scale": false, "tsc_scale": false, "topoext": false, "xlevel2": 0, "clflushopt": false, "kvm-no-smi-migration": false, "monitor": false, "avx512er": false, "pmm-en": false, "pcid": true, "3dnow": false, "erms": false, "lahf-lm": true, "lahf_lm": true, "xstore": false, "fxsr-opt": false, "fxsr_opt": false, "rtm": false, "lmce": true, "hv-time": false, "perfctr-nb": false, "perfctr_nb": false, "ffxsr": false, "rdrand": false, "rdseed": false, "avx512-4vnniw": false, "vme": true, "vmx": false, "dtes64": false, "mtrr": true, "rdtscp": true, "pse36": true, "tbm": false, "wdt": false, "pause_filter": false, "model-id": " Intel(R) Xeon(R) CPU E7- 4830 @ 2.13GHz", "sha-ni": false, "abm": false, "avx512pf": false, "xstore-en": false}}}, "id": "model-expansion"} {"return": [{"name": "max", "typename": "max-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": false}, {"name": "host", "typename": "host-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": false}, {"name": "base", "typename": "base-x86_64-cpu", "unavailable-features": [], "static": true, "migration-safe": true}, {"name": "qemu64", "typename": "qemu64-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "qemu32", "typename": "qemu32-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "phenom", "typename": "phenom-x86_64-cpu", "unavailable-features": ["mmxext", "fxsr-opt", "3dnowext", "3dnow", "abm", "sse4a", "npt"], "static": false, "migration-safe": true}, {"name": "pentium3", "typename": "pentium3-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "pentium2", "typename": "pentium2-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "pentium", "typename": "pentium-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "n270", "typename": "n270-x86_64-cpu", "unavailable-features": ["movbe"], "static": false, "migration-safe": true}, {"name": "kvm64", "typename": "kvm64-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "kvm32", "typename": "kvm32-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "cpu64-rhel6", "typename": "cpu64-rhel6-x86_64-cpu", "unavailable-features": ["abm", "sse4a"], "static": false, "migration-safe": true}, {"name": "coreduo", "typename": "coreduo-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "core2duo", "typename": "core2duo-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "athlon", "typename": "athlon-x86_64-cpu", "unavailable-features": ["mmxext", "3dnowext", "3dnow"], "static": false, "migration-safe": true}, {"name": "Westmere", "typename": "Westmere-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "Skylake-Client", "typename": "Skylake-Client-x86_64-cpu", "unavailable-features": ["fma", "movbe", "xsave", "avx", "f16c", "rdrand", "fsgsbase", "bmi1", "hle", "avx2", "smep", "bmi2", "erms", "invpcid", "rtm", "mpx", "rdseed", "adx", "smap", "abm", "3dnowprefetch", "xsaveopt", "xsavec", "xgetbv1", "xsave", "xsave", "avx", "mpx", "mpx"], "static": false, "migration-safe": true}, {"name": "SandyBridge", "typename": "SandyBridge-x86_64-cpu", "unavailable-features": ["xsave", "avx", "xsaveopt", "xsave", "xsave", "avx"], "static": false, "migration-safe": true}, {"name": "Penryn", "typename": "Penryn-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "Opteron_G5", "typename": "Opteron_G5-x86_64-cpu", "unavailable-features": ["fma", "xsave", "avx", "f16c", "abm", "sse4a", "misalignsse", "3dnowprefetch", "xop", "fma4", "tbm", "xsave", "xsave", "avx"], "static": false, "migration-safe": true}, {"name": "Opteron_G4", "typename": "Opteron_G4-x86_64-cpu", "unavailable-features": ["xsave", "avx", "abm", "sse4a", "misalignsse", "3dnowprefetch", "xop", "fma4", "xsave", "xsave", "avx"], "static": false, "migration-safe": true}, {"name": "Opteron_G3", "typename": "Opteron_G3-x86_64-cpu", "unavailable-features": ["abm", "sse4a", "misalignsse"], "static": false, "migration-safe": true}, {"name": "Opteron_G2", "typename": "Opteron_G2-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "Opteron_G1", "typename": "Opteron_G1-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "Nehalem", "typename": "Nehalem-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "IvyBridge", "typename": "IvyBridge-x86_64-cpu", "unavailable-features": ["xsave", "avx", "f16c", "rdrand", "fsgsbase", "smep", "erms", "xsaveopt", "xsave", "xsave", "avx"], "static": false, "migration-safe": true}, {"name": "Haswell", "typename": "Haswell-x86_64-cpu", "unavailable-features": ["fma", "movbe", "xsave", "avx", "f16c", "rdrand", "fsgsbase", "bmi1", "hle", "avx2", "smep", "bmi2", "erms", "invpcid", "rtm", "abm", "xsaveopt", "xsave", "xsave", "avx"], "static": false, "migration-safe": true}, {"name": "Haswell-noTSX", "typename": "Haswell-noTSX-x86_64-cpu", "unavailable-features": ["fma", "movbe", "xsave", "avx", "f16c", "rdrand", "fsgsbase", "bmi1", "avx2", "smep", "bmi2", "erms", "invpcid", "abm", "xsaveopt", "xsave", "xsave", "avx"], "static": false, "migration-safe": true}, {"name": "Conroe", "typename": "Conroe-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}, {"name": "Broadwell", "typename": "Broadwell-x86_64-cpu", "unavailable-features": ["fma", "movbe", "xsave", "avx", "f16c", "rdrand", "fsgsbase", "bmi1", "hle", "avx2", "smep", "bmi2", "erms", "invpcid", "rtm", "rdseed", "adx", "smap", "abm", "3dnowprefetch", "xsaveopt", "xsave", "xsave", "avx"], "static": false, "migration-safe": true}, {"name": "Broadwell-noTSX", "typename": "Broadwell-noTSX-x86_64-cpu", "unavailable-features": ["fma", "movbe", "xsave", "avx", "f16c", "rdrand", "fsgsbase", "bmi1", "avx2", "smep", "bmi2", "erms", "invpcid", "rdseed", "adx", "smap", "abm", "3dnowprefetch", "xsaveopt", "xsave", "xsave", "avx"], "static": false, "migration-safe": true}, {"name": "486", "typename": "486-x86_64-cpu", "unavailable-features": [], "static": false, "migration-safe": true}], "id": "definitions"} {"return": {}} {"timestamp": {"seconds": 1506477901, "microseconds": 244796}, "event": "SHUTDOWN", "data": {"guest": false}}
Patches sent for review upstream: https://www.redhat.com/archives/libvir-list/2017-October/msg00134.html
commit 9c9620af1d09efdc327c91d4e94e6ff9bc22c556 Refs: v3.8.0-99-g9c9620af1d Author: Jiri Denemark <jdenemar> AuthorDate: Fri Oct 13 18:17:52 2017 +0200 Commit: Jiri Denemark <jdenemar> CommitDate: Mon Oct 16 09:23:20 2017 +0200 cpu_x86: Disable blockers from unusable CPU models When decoding CPUID data to virCPUDef we need to be careful about using a CPU model which cannot be directly used on the current host. Normally, libvirt would notice the features which prevent the model from being usable and it would disable them in the computed virCPUDef, but this won't work in case the definition of the CPU model in QEMU contains more features than what we have in cpu_map.xml. We need to count with the usability blockers we got from QEMU and explicitly disable all of them to make the computed virCPUDef usable. https://bugzilla.redhat.com/show_bug.cgi?id=1464832 Signed-off-by: Jiri Denemark <jdenemar> Reviewed-by: John Ferlan <jferlan>
Verify this bug with libvirt-3.9.0-8.el7.x86_64 on the same host: 1. check domcapabilities output (xsaveopt is disable): <cpu> <mode name='host-passthrough' supported='yes'/> <mode name='host-model' supported='yes'> <model fallback='forbid'>SandyBridge</model> <vendor>Intel</vendor> <feature policy='require' name='vme'/> <feature policy='require' name='ss'/> <feature policy='require' name='pcid'/> <feature policy='require' name='hypervisor'/> <feature policy='require' name='arat'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='pdpe1gb'/> <feature policy='require' name='invtsc'/> <feature policy='disable' name='xsave'/> <feature policy='disable' name='avx'/> <feature policy='disable' name='xsaveopt'/> </mode> 2. start a guest with check is full: <cpu mode='host-model' check='full'> <model fallback='forbid'/> <numa> <cell id='0' cpus='0-1' memory='512000' unit='KiB'/> <cell id='1' cpus='2-3' memory='512000' unit='KiB'/> </numa> </cpu> 3. check guest running xml: <cpu mode='custom' match='exact' check='full'> <model fallback='forbid'>SandyBridge</model> <vendor>Intel</vendor> <feature policy='require' name='vme'/> <feature policy='require' name='ss'/> <feature policy='require' name='pcid'/> <feature policy='require' name='hypervisor'/> <feature policy='require' name='arat'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='pdpe1gb'/> <feature policy='disable' name='xsave'/> <feature policy='disable' name='avx'/> <feature policy='disable' name='xsaveopt'/> <numa> <cell id='0' cpus='0-1' memory='512000' unit='KiB'/> <cell id='1' cpus='2-3' memory='512000' unit='KiB'/> </numa> </cpu> 4. check guest log there is no log like this: warning: host doesn't support requested feature: CPUID.0DH:EAX.xsaveopt [bit 0] 5. change the guest cpu check to partial and none, and repeat the step 2-4, get the same result
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. https://access.redhat.com/errata/RHEA-2018:0704