]> xenbits.xensource.com Git - libvirt.git/commitdiff
cpu_x86: Penalize disabled features when computing CPU model
authorJiri Denemark <jdenemar@redhat.com>
Tue, 26 Apr 2022 13:06:30 +0000 (15:06 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Fri, 6 May 2022 15:33:47 +0000 (17:33 +0200)
For finding the best matching CPU model for a given set of features
while we don't know the CPU signature (i.e., when computing a baseline
CPU model) we've been using a "shortest list of features" heuristics.
This works well if new CPU models are supersets of older models, but
that's not always the case. As a result it may actually select a new CPU
model as a baseline while removing some features from it to make it
compatible with older models. This is in general worse than using an old
CPU model with a bunch of added features as a guest OS or apps may crash
when using features that were disabled.

On the other hand we don't want to end up with a very old model which
would guarantee no disabled features as it could stop a guest OS or apps
from using some features provided by the CPU because they would not
expect them on such an old CPU.

This patch changes the heuristics to something in between. Enabled and
disabled features are counted separately so that a CPU model requiring
some features to be disabled looks worse than a model with fewer
disabled features even if its complete list of features is longer. The
penalty given for each additional disabled feature gets bigger to make
longer list of disabled features look even worse.

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

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 files changed:
src/cpu/cpu_x86.c
tests/cputestdata/x86_64-cpuid-Atom-D510-guest.xml
tests/cputestdata/x86_64-cpuid-Atom-N450-guest.xml
tests/cputestdata/x86_64-cpuid-Phenom-B95-json.xml
tests/cputestdata/x86_64-cpuid-baseline-Broadwell-IBRS+Cascadelake.xml
tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Icelake.xml
tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Skylake-IBRS.xml
tests/cputestdata/x86_64-cpuid-baseline-Cooperlake+Icelake.xml
tests/cputestdata/x86_64-host+guest,models-result.xml
tests/domaincapsdata/qemu_3.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_4.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
tests/qemuxml2argvdata/cpu-fallback.args
tests/qemuxml2argvdata/cpu-host-model-cmt.x86_64-4.0.0.args
tests/qemuxml2argvdata/cpu-host-model-fallback.args

index fdee107ce936b9ea22f976e51c6bc41716649402..3001fc2b8fa67c7fac1b09a174311d53df689255 100644 (file)
@@ -1956,23 +1956,57 @@ virCPUx86Compare(virCPUDef *host,
 }
 
 
+/* Base penalty for disabled features. */
+#define BASE_PENALTY 2
+
 static int
 virCPUx86CompareCandidateFeatureList(virCPUDef *cpuCurrent,
                                      virCPUDef *cpuCandidate)
 {
     size_t current = cpuCurrent->nfeatures;
+    size_t enabledCurrent = current;
+    size_t disabledCurrent = 0;
     size_t candidate = cpuCandidate->nfeatures;
+    size_t enabled = candidate;
+    size_t disabled = 0;
+
+    if (cpuCandidate->type != VIR_CPU_TYPE_HOST) {
+        size_t i;
+        int penalty = BASE_PENALTY;
+
+        for (i = 0; i < enabledCurrent; i++) {
+            if (cpuCurrent->features[i].policy == VIR_CPU_FEATURE_DISABLE) {
+                enabledCurrent--;
+                disabledCurrent += penalty;
+                penalty++;
+            }
+        }
+        current = enabledCurrent + disabledCurrent;
+
+        penalty = BASE_PENALTY;
+        for (i = 0; i < enabled; i++) {
+            if (cpuCandidate->features[i].policy == VIR_CPU_FEATURE_DISABLE) {
+                enabled--;
+                disabled += penalty;
+                penalty++;
+            }
+        }
+        candidate = enabled + disabled;
+    }
 
-    if (candidate < current) {
-        VIR_DEBUG("%s is better than %s: %zu < %zu",
+    if (candidate < current ||
+        (candidate == current && disabled < disabledCurrent)) {
+        VIR_DEBUG("%s is better than %s: %zu (%zu, %zu) < %zu (%zu, %zu)",
                   cpuCandidate->model, cpuCurrent->model,
-                  candidate, current);
+                  candidate, enabled, disabled,
+                  current, enabledCurrent, disabledCurrent);
         return 1;
     }
 
-    VIR_DEBUG("%s is not better than %s: %zu >= %zu",
+    VIR_DEBUG("%s is not better than %s: %zu (%zu, %zu) >= %zu (%zu, %zu)",
               cpuCandidate->model, cpuCurrent->model,
-              candidate, current);
+              candidate, enabled, disabled,
+              current, enabledCurrent, disabledCurrent);
     return 0;
 }
 
index caa0bfd53bbe16b091fc8d1f375da818d29e295e..d2f7a79074e05c2b35cc6d4bc79c521ea12645e3 100644 (file)
@@ -1,6 +1,7 @@
 <cpu mode='custom' match='exact'>
-  <model fallback='forbid'>core2duo</model>
+  <model fallback='forbid'>n270</model>
   <vendor>Intel</vendor>
+  <feature policy='require' name='pse36'/>
   <feature policy='require' name='ds'/>
   <feature policy='require' name='acpi'/>
   <feature policy='require' name='ss'/>
@@ -14,6 +15,6 @@
   <feature policy='require' name='xtpr'/>
   <feature policy='require' name='pdcm'/>
   <feature policy='require' name='movbe'/>
+  <feature policy='require' name='lm'/>
   <feature policy='require' name='lahf_lm'/>
-  <feature policy='disable' name='syscall'/>
 </cpu>
index e8f5c938813f79559925bc6a06b6d94b666242fd..779faf6cefdb861fa65fcbbc0c07053d0d42d781 100644 (file)
@@ -1,5 +1,5 @@
 <cpu mode='custom' match='exact'>
-  <model fallback='forbid'>core2duo</model>
+  <model fallback='forbid'>n270</model>
   <vendor>Intel</vendor>
   <feature policy='require' name='ds'/>
   <feature policy='require' name='acpi'/>
@@ -15,6 +15,7 @@
   <feature policy='require' name='xtpr'/>
   <feature policy='require' name='pdcm'/>
   <feature policy='require' name='movbe'/>
+  <feature policy='require' name='syscall'/>
+  <feature policy='require' name='lm'/>
   <feature policy='require' name='lahf_lm'/>
-  <feature policy='disable' name='pse36'/>
 </cpu>
index b4198f66a596de6641b85f5aa6ac173f37c5a9ba..7f6289c6d7a6420381df8418c5e5772e1d923484 100644 (file)
@@ -1,22 +1,25 @@
 <cpu mode='custom' match='exact'>
-  <model fallback='forbid'>Opteron_G3</model>
+  <model fallback='forbid'>athlon</model>
   <vendor>AMD</vendor>
-  <feature policy='require' name='vme'/>
+  <feature policy='require' name='mca'/>
+  <feature policy='require' name='clflush'/>
+  <feature policy='require' name='pni'/>
+  <feature policy='require' name='cx16'/>
   <feature policy='require' name='x2apic'/>
+  <feature policy='require' name='popcnt'/>
   <feature policy='require' name='hypervisor'/>
-  <feature policy='require' name='mmxext'/>
+  <feature policy='require' name='syscall'/>
   <feature policy='require' name='fxsr_opt'/>
   <feature policy='require' name='pdpe1gb'/>
-  <feature policy='require' name='3dnowext'/>
-  <feature policy='require' name='3dnow'/>
+  <feature policy='require' name='lm'/>
+  <feature policy='require' name='lahf_lm'/>
   <feature policy='require' name='cmp_legacy'/>
   <feature policy='require' name='cr8legacy'/>
+  <feature policy='require' name='abm'/>
+  <feature policy='require' name='sse4a'/>
+  <feature policy='require' name='misalignsse'/>
   <feature policy='require' name='3dnowprefetch'/>
   <feature policy='require' name='osvw'/>
   <feature policy='require' name='npt'/>
   <feature policy='require' name='nrip-save'/>
-  <feature policy='disable' name='nx'/>
-  <feature policy='disable' name='rdtscp'/>
-  <feature policy='disable' name='svm'/>
-  <feature policy='disable' name='monitor'/>
 </cpu>
index 4e3f253e9b1ce9908d34348af7c45a7032913214..99bce8db877c4036a2e200696d94c51a69403c64 100644 (file)
@@ -1,11 +1,14 @@
 <cpu mode='custom' match='exact'>
-  <model fallback='allow'>Skylake-Client-IBRS</model>
+  <model fallback='allow'>Broadwell-IBRS</model>
   <vendor>Intel</vendor>
+  <feature policy='require' name='vme'/>
   <feature policy='require' name='ss'/>
+  <feature policy='require' name='f16c'/>
+  <feature policy='require' name='rdrand'/>
   <feature policy='require' name='hypervisor'/>
+  <feature policy='require' name='arat'/>
   <feature policy='require' name='tsc_adjust'/>
+  <feature policy='require' name='xsaveopt'/>
   <feature policy='require' name='pdpe1gb'/>
-  <feature policy='disable' name='mpx'/>
-  <feature policy='disable' name='xsavec'/>
-  <feature policy='disable' name='xgetbv1'/>
+  <feature policy='require' name='abm'/>
 </cpu>
index e372a3e446df08bbe09c5567e29e780ba98acbdd..071c799ba20566bf930aae1c4472f42256162ced 100644 (file)
@@ -1,14 +1,15 @@
 <cpu mode='custom' match='exact'>
-  <model fallback='allow'>Cooperlake</model>
+  <model fallback='allow'>Cascadelake-Server</model>
   <vendor>Intel</vendor>
   <feature policy='require' name='ss'/>
   <feature policy='require' name='hypervisor'/>
   <feature policy='require' name='tsc_adjust'/>
-  <feature policy='require' name='mpx'/>
   <feature policy='require' name='umip'/>
+  <feature policy='require' name='pku'/>
+  <feature policy='require' name='stibp'/>
+  <feature policy='require' name='arch-capabilities'/>
   <feature policy='require' name='xsaves'/>
-  <feature policy='disable' name='avx512-bf16'/>
-  <feature policy='disable' name='mds-no'/>
-  <feature policy='disable' name='pschange-mc-no'/>
-  <feature policy='disable' name='taa-no'/>
+  <feature policy='require' name='rdctl-no'/>
+  <feature policy='require' name='ibrs-all'/>
+  <feature policy='require' name='skip-l1dfl-vmentry'/>
 </cpu>
index e559e015834f3aa9d747a4dcb9be4475539dce74..5e42876b3982c2f59ba99bf372f68159e061df87 100644 (file)
@@ -1,12 +1,13 @@
 <cpu mode='custom' match='exact'>
-  <model fallback='allow'>Cascadelake-Server</model>
+  <model fallback='allow'>Skylake-Server-IBRS</model>
   <vendor>Intel</vendor>
   <feature policy='require' name='ss'/>
   <feature policy='require' name='hypervisor'/>
   <feature policy='require' name='tsc_adjust'/>
+  <feature policy='require' name='clflushopt'/>
   <feature policy='require' name='umip'/>
   <feature policy='require' name='pku'/>
+  <feature policy='require' name='ssbd'/>
   <feature policy='require' name='xsaves'/>
   <feature policy='require' name='skip-l1dfl-vmentry'/>
-  <feature policy='disable' name='avx512vnni'/>
 </cpu>
index e372a3e446df08bbe09c5567e29e780ba98acbdd..071c799ba20566bf930aae1c4472f42256162ced 100644 (file)
@@ -1,14 +1,15 @@
 <cpu mode='custom' match='exact'>
-  <model fallback='allow'>Cooperlake</model>
+  <model fallback='allow'>Cascadelake-Server</model>
   <vendor>Intel</vendor>
   <feature policy='require' name='ss'/>
   <feature policy='require' name='hypervisor'/>
   <feature policy='require' name='tsc_adjust'/>
-  <feature policy='require' name='mpx'/>
   <feature policy='require' name='umip'/>
+  <feature policy='require' name='pku'/>
+  <feature policy='require' name='stibp'/>
+  <feature policy='require' name='arch-capabilities'/>
   <feature policy='require' name='xsaves'/>
-  <feature policy='disable' name='avx512-bf16'/>
-  <feature policy='disable' name='mds-no'/>
-  <feature policy='disable' name='pschange-mc-no'/>
-  <feature policy='disable' name='taa-no'/>
+  <feature policy='require' name='rdctl-no'/>
+  <feature policy='require' name='ibrs-all'/>
+  <feature policy='require' name='skip-l1dfl-vmentry'/>
 </cpu>
index 0dd6955898c6308ad9e57aaa6aa3aae9a65f228a..42664a48b4db61751fdb485e9a43b03a8bc48eb5 100644 (file)
@@ -1,17 +1,19 @@
 <cpu mode='custom' match='exact'>
-  <model fallback='allow'>Nehalem</model>
+  <model fallback='allow'>qemu64</model>
   <topology sockets='2' dies='1' cores='4' threads='1'/>
   <feature policy='force' name='pbe'/>
   <feature policy='force' name='monitor'/>
+  <feature policy='require' name='ssse3'/>
   <feature policy='require' name='xtpr'/>
   <feature policy='require' name='dca'/>
+  <feature policy='require' name='sse4.1'/>
   <feature policy='force' name='3dnowext'/>
-  <feature policy='force' name='svm'/>
+  <feature policy='require' name='lahf_lm'/>
   <feature policy='disable' name='sse'/>
   <feature policy='disable' name='sse4.2'/>
-  <feature policy='forbid' name='popcnt'/>
   <feature policy='disable' name='3dnow'/>
-  <feature policy='require' name='ssse3'/>
   <feature policy='disable' name='vmx'/>
   <feature policy='disable' name='ds_cpl'/>
+  <feature policy='force' name='svm'/>
+  <feature policy='forbid' name='popcnt'/>
 </cpu>
index 1a5bc25b99e3a6f6a90cde1ea51992e1f8d37724..2a65cb0ad9a561c7c9859bf11642895a6db98e99 100644 (file)
       </enum>
     </mode>
     <mode name='host-model' supported='yes'>
-      <model fallback='forbid'>EPYC</model>
+      <model fallback='forbid'>Opteron_G3</model>
       <vendor>AMD</vendor>
       <feature policy='require' name='acpi'/>
       <feature policy='require' name='ss'/>
+      <feature policy='require' name='pclmuldq'/>
       <feature policy='require' name='monitor'/>
+      <feature policy='require' name='ssse3'/>
+      <feature policy='require' name='sse4.1'/>
+      <feature policy='require' name='sse4.2'/>
+      <feature policy='require' name='movbe'/>
+      <feature policy='require' name='aes'/>
+      <feature policy='require' name='xsave'/>
       <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='arat'/>
+      <feature policy='require' name='fsgsbase'/>
+      <feature policy='require' name='bmi1'/>
+      <feature policy='require' name='smep'/>
+      <feature policy='require' name='bmi2'/>
       <feature policy='require' name='erms'/>
       <feature policy='require' name='mpx'/>
+      <feature policy='require' name='adx'/>
+      <feature policy='require' name='smap'/>
       <feature policy='require' name='pcommit'/>
+      <feature policy='require' name='clflushopt'/>
       <feature policy='require' name='clwb'/>
       <feature policy='require' name='pku'/>
       <feature policy='require' name='la57'/>
+      <feature policy='require' name='xsaveopt'/>
+      <feature policy='require' name='xgetbv1'/>
+      <feature policy='require' name='mmxext'/>
+      <feature policy='require' name='pdpe1gb'/>
       <feature policy='require' name='3dnowext'/>
       <feature policy='require' name='3dnow'/>
+      <feature policy='require' name='cr8legacy'/>
       <feature policy='require' name='npt'/>
-      <feature policy='disable' name='vme'/>
-      <feature policy='disable' name='fma'/>
-      <feature policy='disable' name='avx'/>
-      <feature policy='disable' name='f16c'/>
-      <feature policy='disable' name='rdrand'/>
-      <feature policy='disable' name='avx2'/>
-      <feature policy='disable' name='rdseed'/>
-      <feature policy='disable' name='sha-ni'/>
-      <feature policy='disable' name='xsavec'/>
-      <feature policy='disable' name='fxsr_opt'/>
       <feature policy='disable' name='misalignsse'/>
-      <feature policy='disable' name='3dnowprefetch'/>
-      <feature policy='disable' name='osvw'/>
-      <feature policy='disable' name='topoext'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes'>qemu64</model>
index e744ac27acb910bfb781c64d12de798e6695b360..a4dc7bafc965a75d671c036667505b6c0ee75734 100644 (file)
       </enum>
     </mode>
     <mode name='host-model' supported='yes'>
-      <model fallback='forbid'>EPYC</model>
+      <model fallback='forbid'>Opteron_G3</model>
       <vendor>AMD</vendor>
       <feature policy='require' name='acpi'/>
       <feature policy='require' name='ss'/>
+      <feature policy='require' name='pclmuldq'/>
       <feature policy='require' name='monitor'/>
+      <feature policy='require' name='ssse3'/>
+      <feature policy='require' name='sse4.1'/>
+      <feature policy='require' name='sse4.2'/>
+      <feature policy='require' name='movbe'/>
+      <feature policy='require' name='aes'/>
+      <feature policy='require' name='xsave'/>
       <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='arat'/>
+      <feature policy='require' name='fsgsbase'/>
+      <feature policy='require' name='bmi1'/>
+      <feature policy='require' name='smep'/>
+      <feature policy='require' name='bmi2'/>
       <feature policy='require' name='erms'/>
       <feature policy='require' name='mpx'/>
+      <feature policy='require' name='adx'/>
+      <feature policy='require' name='smap'/>
       <feature policy='require' name='pcommit'/>
+      <feature policy='require' name='clflushopt'/>
       <feature policy='require' name='clwb'/>
       <feature policy='require' name='pku'/>
       <feature policy='require' name='la57'/>
+      <feature policy='require' name='xsaveopt'/>
+      <feature policy='require' name='xgetbv1'/>
+      <feature policy='require' name='mmxext'/>
+      <feature policy='require' name='pdpe1gb'/>
       <feature policy='require' name='3dnowext'/>
       <feature policy='require' name='3dnow'/>
+      <feature policy='require' name='cr8legacy'/>
       <feature policy='require' name='npt'/>
-      <feature policy='disable' name='vme'/>
-      <feature policy='disable' name='fma'/>
-      <feature policy='disable' name='avx'/>
-      <feature policy='disable' name='f16c'/>
-      <feature policy='disable' name='rdrand'/>
-      <feature policy='disable' name='avx2'/>
-      <feature policy='disable' name='rdseed'/>
-      <feature policy='disable' name='sha-ni'/>
-      <feature policy='disable' name='xsavec'/>
-      <feature policy='disable' name='fxsr_opt'/>
       <feature policy='disable' name='misalignsse'/>
-      <feature policy='disable' name='3dnowprefetch'/>
-      <feature policy='disable' name='osvw'/>
-      <feature policy='disable' name='topoext'/>
-      <feature policy='disable' name='nrip-save'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes'>qemu64</model>
index 80b1ce8ef902762de94092dffd19e2b7d74ada6e..b20c02cb68deb3f1755f07d74ef5a07bdb44ec4d 100644 (file)
       </enum>
     </mode>
     <mode name='host-model' supported='yes'>
-      <model fallback='forbid'>EPYC-IBPB</model>
+      <model fallback='forbid'>Opteron_G3</model>
       <vendor>AMD</vendor>
       <feature policy='require' name='acpi'/>
       <feature policy='require' name='ss'/>
+      <feature policy='require' name='pclmuldq'/>
       <feature policy='require' name='monitor'/>
+      <feature policy='require' name='ssse3'/>
+      <feature policy='require' name='sse4.1'/>
+      <feature policy='require' name='sse4.2'/>
+      <feature policy='require' name='movbe'/>
+      <feature policy='require' name='aes'/>
+      <feature policy='require' name='xsave'/>
+      <feature policy='require' name='rdrand'/>
       <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='arat'/>
+      <feature policy='require' name='fsgsbase'/>
+      <feature policy='require' name='bmi1'/>
+      <feature policy='require' name='smep'/>
+      <feature policy='require' name='bmi2'/>
       <feature policy='require' name='erms'/>
       <feature policy='require' name='mpx'/>
+      <feature policy='require' name='adx'/>
+      <feature policy='require' name='smap'/>
       <feature policy='require' name='pcommit'/>
+      <feature policy='require' name='clflushopt'/>
       <feature policy='require' name='clwb'/>
       <feature policy='require' name='pku'/>
       <feature policy='require' name='la57'/>
+      <feature policy='require' name='xsaveopt'/>
+      <feature policy='require' name='xgetbv1'/>
+      <feature policy='require' name='mmxext'/>
+      <feature policy='require' name='pdpe1gb'/>
       <feature policy='require' name='3dnowext'/>
       <feature policy='require' name='3dnow'/>
+      <feature policy='require' name='cr8legacy'/>
       <feature policy='require' name='npt'/>
-      <feature policy='disable' name='vme'/>
-      <feature policy='disable' name='fma'/>
-      <feature policy='disable' name='avx'/>
-      <feature policy='disable' name='f16c'/>
-      <feature policy='disable' name='avx2'/>
-      <feature policy='disable' name='rdseed'/>
-      <feature policy='disable' name='sha-ni'/>
-      <feature policy='disable' name='xsavec'/>
-      <feature policy='disable' name='fxsr_opt'/>
       <feature policy='disable' name='misalignsse'/>
-      <feature policy='disable' name='3dnowprefetch'/>
-      <feature policy='disable' name='osvw'/>
-      <feature policy='disable' name='topoext'/>
-      <feature policy='disable' name='ibpb'/>
-      <feature policy='disable' name='nrip-save'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes'>qemu64</model>
index 91b3ed6f80e18b2fc6c9fdda0595a2d70e644f7c..d0ee3f7b7ab185a9a2fe46dce71bd3f3b6d76488 100644 (file)
       </enum>
     </mode>
     <mode name='host-model' supported='yes'>
-      <model fallback='forbid'>EPYC-IBPB</model>
+      <model fallback='forbid'>Opteron_G3</model>
       <vendor>AMD</vendor>
       <feature policy='require' name='acpi'/>
       <feature policy='require' name='ss'/>
+      <feature policy='require' name='pclmuldq'/>
       <feature policy='require' name='monitor'/>
+      <feature policy='require' name='ssse3'/>
+      <feature policy='require' name='sse4.1'/>
+      <feature policy='require' name='sse4.2'/>
+      <feature policy='require' name='movbe'/>
+      <feature policy='require' name='aes'/>
+      <feature policy='require' name='xsave'/>
+      <feature policy='require' name='rdrand'/>
       <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='arat'/>
+      <feature policy='require' name='fsgsbase'/>
+      <feature policy='require' name='bmi1'/>
+      <feature policy='require' name='smep'/>
+      <feature policy='require' name='bmi2'/>
       <feature policy='require' name='erms'/>
       <feature policy='require' name='mpx'/>
+      <feature policy='require' name='adx'/>
+      <feature policy='require' name='smap'/>
       <feature policy='require' name='pcommit'/>
+      <feature policy='require' name='clflushopt'/>
       <feature policy='require' name='clwb'/>
       <feature policy='require' name='pku'/>
       <feature policy='require' name='la57'/>
+      <feature policy='require' name='xsaveopt'/>
+      <feature policy='require' name='xgetbv1'/>
+      <feature policy='require' name='mmxext'/>
+      <feature policy='require' name='pdpe1gb'/>
       <feature policy='require' name='3dnowext'/>
       <feature policy='require' name='3dnow'/>
+      <feature policy='require' name='cr8legacy'/>
       <feature policy='require' name='npt'/>
-      <feature policy='disable' name='vme'/>
-      <feature policy='disable' name='fma'/>
-      <feature policy='disable' name='avx'/>
-      <feature policy='disable' name='f16c'/>
-      <feature policy='disable' name='avx2'/>
-      <feature policy='disable' name='rdseed'/>
-      <feature policy='disable' name='sha-ni'/>
-      <feature policy='disable' name='xsavec'/>
-      <feature policy='disable' name='fxsr_opt'/>
       <feature policy='disable' name='misalignsse'/>
-      <feature policy='disable' name='3dnowprefetch'/>
-      <feature policy='disable' name='osvw'/>
-      <feature policy='disable' name='topoext'/>
-      <feature policy='disable' name='ibpb'/>
-      <feature policy='disable' name='nrip-save'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes'>qemu64</model>
index b8737613e96275dda7486eb9c242692a52a20240..d277c96426a49255758d6cc82519848bee1f7f9c 100644 (file)
       </enum>
     </mode>
     <mode name='host-model' supported='yes'>
-      <model fallback='forbid'>EPYC</model>
+      <model fallback='forbid'>Opteron_G3</model>
       <vendor>AMD</vendor>
       <feature policy='require' name='acpi'/>
       <feature policy='require' name='ss'/>
+      <feature policy='require' name='pclmuldq'/>
       <feature policy='require' name='monitor'/>
+      <feature policy='require' name='ssse3'/>
+      <feature policy='require' name='sse4.1'/>
+      <feature policy='require' name='sse4.2'/>
+      <feature policy='require' name='movbe'/>
+      <feature policy='require' name='aes'/>
+      <feature policy='require' name='xsave'/>
+      <feature policy='require' name='rdrand'/>
       <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='arat'/>
+      <feature policy='require' name='fsgsbase'/>
+      <feature policy='require' name='bmi1'/>
+      <feature policy='require' name='smep'/>
+      <feature policy='require' name='bmi2'/>
       <feature policy='require' name='erms'/>
       <feature policy='require' name='mpx'/>
+      <feature policy='require' name='adx'/>
+      <feature policy='require' name='smap'/>
       <feature policy='require' name='pcommit'/>
+      <feature policy='require' name='clflushopt'/>
       <feature policy='require' name='clwb'/>
       <feature policy='require' name='pku'/>
       <feature policy='require' name='la57'/>
+      <feature policy='require' name='xsaveopt'/>
+      <feature policy='require' name='xgetbv1'/>
+      <feature policy='require' name='mmxext'/>
+      <feature policy='require' name='pdpe1gb'/>
       <feature policy='require' name='3dnowext'/>
       <feature policy='require' name='3dnow'/>
+      <feature policy='require' name='cr8legacy'/>
       <feature policy='require' name='npt'/>
-      <feature policy='disable' name='vme'/>
-      <feature policy='disable' name='fma'/>
-      <feature policy='disable' name='avx'/>
-      <feature policy='disable' name='f16c'/>
-      <feature policy='disable' name='avx2'/>
-      <feature policy='disable' name='rdseed'/>
-      <feature policy='disable' name='sha-ni'/>
-      <feature policy='disable' name='xsavec'/>
-      <feature policy='disable' name='fxsr_opt'/>
       <feature policy='disable' name='misalignsse'/>
-      <feature policy='disable' name='3dnowprefetch'/>
-      <feature policy='disable' name='osvw'/>
-      <feature policy='disable' name='topoext'/>
-      <feature policy='disable' name='nrip-save'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes'>qemu64</model>
index 034036ca962432c45a2a88fde4a49ebbb34b5df2..4f1ffbb2bafe64d17ba8b1cb5b82f465219ef318 100644 (file)
       </enum>
     </mode>
     <mode name='host-model' supported='yes'>
-      <model fallback='forbid'>EPYC</model>
+      <model fallback='forbid'>Opteron_G3</model>
       <vendor>AMD</vendor>
       <feature policy='require' name='acpi'/>
       <feature policy='require' name='ss'/>
+      <feature policy='require' name='pclmuldq'/>
       <feature policy='require' name='monitor'/>
+      <feature policy='require' name='ssse3'/>
+      <feature policy='require' name='sse4.1'/>
+      <feature policy='require' name='sse4.2'/>
+      <feature policy='require' name='movbe'/>
+      <feature policy='require' name='aes'/>
+      <feature policy='require' name='xsave'/>
+      <feature policy='require' name='rdrand'/>
       <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='arat'/>
+      <feature policy='require' name='fsgsbase'/>
+      <feature policy='require' name='bmi1'/>
+      <feature policy='require' name='smep'/>
+      <feature policy='require' name='bmi2'/>
       <feature policy='require' name='erms'/>
       <feature policy='require' name='mpx'/>
+      <feature policy='require' name='adx'/>
+      <feature policy='require' name='smap'/>
       <feature policy='require' name='pcommit'/>
+      <feature policy='require' name='clflushopt'/>
       <feature policy='require' name='clwb'/>
       <feature policy='require' name='pku'/>
       <feature policy='require' name='la57'/>
+      <feature policy='require' name='xsaveopt'/>
+      <feature policy='require' name='xgetbv1'/>
+      <feature policy='require' name='mmxext'/>
+      <feature policy='require' name='pdpe1gb'/>
       <feature policy='require' name='3dnowext'/>
       <feature policy='require' name='3dnow'/>
+      <feature policy='require' name='cr8legacy'/>
       <feature policy='require' name='npt'/>
-      <feature policy='disable' name='vme'/>
-      <feature policy='disable' name='fma'/>
-      <feature policy='disable' name='avx'/>
-      <feature policy='disable' name='f16c'/>
-      <feature policy='disable' name='avx2'/>
-      <feature policy='disable' name='rdseed'/>
-      <feature policy='disable' name='sha-ni'/>
-      <feature policy='disable' name='xsavec'/>
-      <feature policy='disable' name='fxsr_opt'/>
       <feature policy='disable' name='misalignsse'/>
-      <feature policy='disable' name='3dnowprefetch'/>
-      <feature policy='disable' name='osvw'/>
-      <feature policy='disable' name='topoext'/>
-      <feature policy='disable' name='nrip-save'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes'>qemu64</model>
index d3a4b01234f2dc458044ec4f4d55eb54236f8ef5..6cff0f815e5c87cedbeb9e32f74920b474325b27 100644 (file)
       </enum>
     </mode>
     <mode name='host-model' supported='yes'>
-      <model fallback='forbid'>EPYC</model>
+      <model fallback='forbid'>Opteron_G3</model>
       <vendor>AMD</vendor>
       <feature policy='require' name='acpi'/>
       <feature policy='require' name='ss'/>
+      <feature policy='require' name='pclmuldq'/>
       <feature policy='require' name='monitor'/>
+      <feature policy='require' name='ssse3'/>
+      <feature policy='require' name='sse4.1'/>
+      <feature policy='require' name='sse4.2'/>
+      <feature policy='require' name='movbe'/>
+      <feature policy='require' name='aes'/>
+      <feature policy='require' name='xsave'/>
+      <feature policy='require' name='rdrand'/>
       <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='arat'/>
+      <feature policy='require' name='fsgsbase'/>
+      <feature policy='require' name='bmi1'/>
+      <feature policy='require' name='smep'/>
+      <feature policy='require' name='bmi2'/>
       <feature policy='require' name='erms'/>
       <feature policy='require' name='mpx'/>
+      <feature policy='require' name='adx'/>
+      <feature policy='require' name='smap'/>
       <feature policy='require' name='pcommit'/>
+      <feature policy='require' name='clflushopt'/>
       <feature policy='require' name='clwb'/>
       <feature policy='require' name='pku'/>
       <feature policy='require' name='la57'/>
+      <feature policy='require' name='xsaveopt'/>
+      <feature policy='require' name='xgetbv1'/>
+      <feature policy='require' name='mmxext'/>
+      <feature policy='require' name='pdpe1gb'/>
       <feature policy='require' name='3dnowext'/>
       <feature policy='require' name='3dnow'/>
+      <feature policy='require' name='cr8legacy'/>
       <feature policy='require' name='npt'/>
-      <feature policy='disable' name='vme'/>
-      <feature policy='disable' name='fma'/>
-      <feature policy='disable' name='avx'/>
-      <feature policy='disable' name='f16c'/>
-      <feature policy='disable' name='avx2'/>
-      <feature policy='disable' name='rdseed'/>
-      <feature policy='disable' name='sha-ni'/>
-      <feature policy='disable' name='xsavec'/>
-      <feature policy='disable' name='fxsr_opt'/>
       <feature policy='disable' name='misalignsse'/>
-      <feature policy='disable' name='3dnowprefetch'/>
-      <feature policy='disable' name='osvw'/>
-      <feature policy='disable' name='topoext'/>
-      <feature policy='disable' name='nrip-save'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes'>qemu64</model>
index 6b85c9c45ae388d962cf057cd1cfca2615436c84..65f4459bcb43bc6a7007d78788be0cc3bc9625ed 100644 (file)
       </enum>
     </mode>
     <mode name='host-model' supported='yes'>
-      <model fallback='forbid'>EPYC</model>
+      <model fallback='forbid'>Opteron_G3</model>
       <vendor>AMD</vendor>
       <feature policy='require' name='acpi'/>
       <feature policy='require' name='ss'/>
+      <feature policy='require' name='pclmuldq'/>
       <feature policy='require' name='monitor'/>
+      <feature policy='require' name='ssse3'/>
+      <feature policy='require' name='sse4.1'/>
+      <feature policy='require' name='sse4.2'/>
+      <feature policy='require' name='movbe'/>
+      <feature policy='require' name='aes'/>
+      <feature policy='require' name='xsave'/>
+      <feature policy='require' name='rdrand'/>
       <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='arat'/>
+      <feature policy='require' name='fsgsbase'/>
+      <feature policy='require' name='bmi1'/>
+      <feature policy='require' name='smep'/>
+      <feature policy='require' name='bmi2'/>
       <feature policy='require' name='erms'/>
       <feature policy='require' name='mpx'/>
+      <feature policy='require' name='adx'/>
+      <feature policy='require' name='smap'/>
       <feature policy='require' name='pcommit'/>
+      <feature policy='require' name='clflushopt'/>
       <feature policy='require' name='clwb'/>
       <feature policy='require' name='pku'/>
       <feature policy='require' name='la57'/>
+      <feature policy='require' name='xsaveopt'/>
+      <feature policy='require' name='xgetbv1'/>
+      <feature policy='require' name='mmxext'/>
+      <feature policy='require' name='pdpe1gb'/>
       <feature policy='require' name='3dnowext'/>
       <feature policy='require' name='3dnow'/>
+      <feature policy='require' name='cr8legacy'/>
       <feature policy='require' name='npt'/>
-      <feature policy='disable' name='vme'/>
-      <feature policy='disable' name='fma'/>
-      <feature policy='disable' name='avx'/>
-      <feature policy='disable' name='f16c'/>
-      <feature policy='disable' name='avx2'/>
-      <feature policy='disable' name='rdseed'/>
-      <feature policy='disable' name='sha-ni'/>
-      <feature policy='disable' name='xsavec'/>
-      <feature policy='disable' name='fxsr_opt'/>
       <feature policy='disable' name='misalignsse'/>
-      <feature policy='disable' name='3dnowprefetch'/>
-      <feature policy='disable' name='osvw'/>
-      <feature policy='disable' name='topoext'/>
-      <feature policy='disable' name='nrip-save'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes'>qemu64</model>
index 2c761fc1afce2e814547b45facf58c59ac23946d..40bc875e3cf1b2b4d3293dd8b947dcd18e214e5e 100644 (file)
       </enum>
     </mode>
     <mode name='host-model' supported='yes'>
-      <model fallback='forbid'>EPYC</model>
+      <model fallback='forbid'>Opteron_G3</model>
       <vendor>AMD</vendor>
       <feature policy='require' name='acpi'/>
       <feature policy='require' name='ss'/>
+      <feature policy='require' name='pclmuldq'/>
       <feature policy='require' name='monitor'/>
+      <feature policy='require' name='ssse3'/>
+      <feature policy='require' name='sse4.1'/>
+      <feature policy='require' name='sse4.2'/>
+      <feature policy='require' name='movbe'/>
+      <feature policy='require' name='aes'/>
+      <feature policy='require' name='xsave'/>
+      <feature policy='require' name='rdrand'/>
       <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='arat'/>
+      <feature policy='require' name='fsgsbase'/>
+      <feature policy='require' name='bmi1'/>
+      <feature policy='require' name='smep'/>
+      <feature policy='require' name='bmi2'/>
       <feature policy='require' name='erms'/>
       <feature policy='require' name='mpx'/>
+      <feature policy='require' name='adx'/>
+      <feature policy='require' name='smap'/>
       <feature policy='require' name='pcommit'/>
+      <feature policy='require' name='clflushopt'/>
       <feature policy='require' name='clwb'/>
       <feature policy='require' name='pku'/>
       <feature policy='require' name='la57'/>
+      <feature policy='require' name='xsaveopt'/>
+      <feature policy='require' name='xgetbv1'/>
+      <feature policy='require' name='mmxext'/>
+      <feature policy='require' name='pdpe1gb'/>
       <feature policy='require' name='3dnowext'/>
       <feature policy='require' name='3dnow'/>
+      <feature policy='require' name='cr8legacy'/>
       <feature policy='require' name='npt'/>
-      <feature policy='disable' name='vme'/>
-      <feature policy='disable' name='fma'/>
-      <feature policy='disable' name='avx'/>
-      <feature policy='disable' name='f16c'/>
-      <feature policy='disable' name='avx2'/>
-      <feature policy='disable' name='rdseed'/>
-      <feature policy='disable' name='sha-ni'/>
-      <feature policy='disable' name='xsavec'/>
-      <feature policy='disable' name='fxsr_opt'/>
       <feature policy='disable' name='misalignsse'/>
-      <feature policy='disable' name='3dnowprefetch'/>
-      <feature policy='disable' name='osvw'/>
-      <feature policy='disable' name='topoext'/>
-      <feature policy='disable' name='nrip-save'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes'>qemu64</model>
index 8db840faac9e543f4425627991fa04290c29c4e6..a439dda190b5d7c3e003832fd4d0976f4685cd68 100644 (file)
       </enum>
     </mode>
     <mode name='host-model' supported='yes'>
-      <model fallback='forbid'>EPYC</model>
+      <model fallback='forbid'>Opteron_G3</model>
       <vendor>AMD</vendor>
       <feature policy='require' name='acpi'/>
       <feature policy='require' name='ss'/>
+      <feature policy='require' name='pclmuldq'/>
       <feature policy='require' name='monitor'/>
+      <feature policy='require' name='ssse3'/>
+      <feature policy='require' name='sse4.1'/>
+      <feature policy='require' name='sse4.2'/>
+      <feature policy='require' name='movbe'/>
+      <feature policy='require' name='aes'/>
+      <feature policy='require' name='xsave'/>
+      <feature policy='require' name='rdrand'/>
       <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='arat'/>
+      <feature policy='require' name='fsgsbase'/>
+      <feature policy='require' name='bmi1'/>
+      <feature policy='require' name='smep'/>
+      <feature policy='require' name='bmi2'/>
       <feature policy='require' name='erms'/>
       <feature policy='require' name='mpx'/>
+      <feature policy='require' name='adx'/>
+      <feature policy='require' name='smap'/>
       <feature policy='require' name='pcommit'/>
+      <feature policy='require' name='clflushopt'/>
       <feature policy='require' name='clwb'/>
       <feature policy='require' name='pku'/>
       <feature policy='require' name='la57'/>
+      <feature policy='require' name='xsaveopt'/>
+      <feature policy='require' name='xgetbv1'/>
+      <feature policy='require' name='mmxext'/>
+      <feature policy='require' name='pdpe1gb'/>
       <feature policy='require' name='3dnowext'/>
       <feature policy='require' name='3dnow'/>
+      <feature policy='require' name='cr8legacy'/>
       <feature policy='require' name='npt'/>
       <feature policy='require' name='svme-addr-chk'/>
-      <feature policy='disable' name='vme'/>
-      <feature policy='disable' name='fma'/>
-      <feature policy='disable' name='avx'/>
-      <feature policy='disable' name='f16c'/>
-      <feature policy='disable' name='avx2'/>
-      <feature policy='disable' name='rdseed'/>
-      <feature policy='disable' name='sha-ni'/>
-      <feature policy='disable' name='xsavec'/>
-      <feature policy='disable' name='fxsr_opt'/>
       <feature policy='disable' name='misalignsse'/>
-      <feature policy='disable' name='3dnowprefetch'/>
-      <feature policy='disable' name='osvw'/>
-      <feature policy='disable' name='topoext'/>
-      <feature policy='disable' name='nrip-save'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes'>qemu64</model>
index edd1259c64f13b054dc08a3841e450bd25c43515..9ed9123f7d369bc52e4b57a1c455b04003a5ff55 100644 (file)
       </enum>
     </mode>
     <mode name='host-model' supported='yes'>
-      <model fallback='forbid'>EPYC</model>
+      <model fallback='forbid'>Opteron_G3</model>
       <vendor>AMD</vendor>
       <feature policy='require' name='acpi'/>
       <feature policy='require' name='ss'/>
+      <feature policy='require' name='pclmuldq'/>
       <feature policy='require' name='monitor'/>
+      <feature policy='require' name='ssse3'/>
+      <feature policy='require' name='sse4.1'/>
+      <feature policy='require' name='sse4.2'/>
+      <feature policy='require' name='movbe'/>
+      <feature policy='require' name='aes'/>
+      <feature policy='require' name='xsave'/>
+      <feature policy='require' name='rdrand'/>
       <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='arat'/>
+      <feature policy='require' name='fsgsbase'/>
+      <feature policy='require' name='bmi1'/>
+      <feature policy='require' name='smep'/>
+      <feature policy='require' name='bmi2'/>
       <feature policy='require' name='erms'/>
       <feature policy='require' name='mpx'/>
+      <feature policy='require' name='adx'/>
+      <feature policy='require' name='smap'/>
       <feature policy='require' name='pcommit'/>
+      <feature policy='require' name='clflushopt'/>
       <feature policy='require' name='clwb'/>
       <feature policy='require' name='umip'/>
       <feature policy='require' name='pku'/>
       <feature policy='require' name='la57'/>
+      <feature policy='require' name='xsaveopt'/>
+      <feature policy='require' name='xgetbv1'/>
+      <feature policy='require' name='mmxext'/>
+      <feature policy='require' name='pdpe1gb'/>
       <feature policy='require' name='3dnowext'/>
       <feature policy='require' name='3dnow'/>
+      <feature policy='require' name='cr8legacy'/>
       <feature policy='require' name='npt'/>
       <feature policy='require' name='svme-addr-chk'/>
-      <feature policy='disable' name='vme'/>
-      <feature policy='disable' name='fma'/>
-      <feature policy='disable' name='avx'/>
-      <feature policy='disable' name='f16c'/>
-      <feature policy='disable' name='avx2'/>
-      <feature policy='disable' name='rdseed'/>
-      <feature policy='disable' name='sha-ni'/>
-      <feature policy='disable' name='xsavec'/>
-      <feature policy='disable' name='fxsr_opt'/>
       <feature policy='disable' name='misalignsse'/>
-      <feature policy='disable' name='3dnowprefetch'/>
-      <feature policy='disable' name='osvw'/>
-      <feature policy='disable' name='topoext'/>
-      <feature policy='disable' name='nrip-save'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes'>qemu64</model>
index a8fad07e5fa9df84d16304b70f493335e4290a16..fb9a5e0b9260d94389a8ee64c49708e1a3bbe994 100644 (file)
@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
 -object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
 -machine pc,usb=off,dump-guest-core=off \
 -accel kvm \
--cpu Penryn,sse4.1=off,sse4.2=off,popcnt=off,aes=off \
+-cpu Conroe,cx16=on,sse4.1=off,sse4.2=off,popcnt=off,aes=off \
 -m 214 \
 -overcommit mem-lock=off \
 -smp 6,sockets=6,cores=1,threads=1 \
index 3ff226a28953d1923266b159f174080b824b1614..0de09e1d881a65072ab3c892bd0bba5dbd655218 100644 (file)
@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
 -object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
 -machine pc-i440fx-4.0,usb=off,dump-guest-core=off \
 -accel tcg \
--cpu EPYC,acpi=on,ss=on,monitor=on,hypervisor=on,erms=on,mpx=on,pcommit=on,clwb=on,pku=on,la57=on,3dnowext=on,3dnow=on,npt=on,vme=off,fma=off,avx=off,f16c=off,rdrand=off,avx2=off,rdseed=off,sha-ni=off,xsavec=off,fxsr-opt=off,misalignsse=off,3dnowprefetch=off,osvw=off,topoext=off,nrip-save=off \
+-cpu Opteron_G3,acpi=on,ss=on,pclmulqdq=on,monitor=on,ssse3=on,sse4.1=on,sse4.2=on,movbe=on,aes=on,xsave=on,hypervisor=on,arat=on,fsgsbase=on,bmi1=on,smep=on,bmi2=on,erms=on,mpx=on,adx=on,smap=on,pcommit=on,clflushopt=on,clwb=on,pku=on,la57=on,xsaveopt=on,xgetbv1=on,mmxext=on,pdpe1gb=on,3dnowext=on,3dnow=on,cr8legacy=on,npt=on,misalignsse=off \
 -m 214 \
 -overcommit mem-lock=off \
 -smp 6,sockets=6,cores=1,threads=1 \
index 239f18b8437ba5a5494455da9c6c7d7125148a09..9a6c527b28c0946d054b1f59e251b42a7a16af28 100644 (file)
@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
 -object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
 -machine pc,usb=off,dump-guest-core=off \
 -accel tcg \
--cpu Penryn,vme=on,ds=on,acpi=on,ss=on,ht=on,tm=on,pbe=on,monitor=on,ds-cpl=on,vmx=on,est=on,tm2=on,xtpr=on,sse4.1=off,cx16=on,lahf-lm=on \
+-cpu Conroe,vme=on,ds=on,acpi=on,ss=on,ht=on,tm=on,pbe=on,monitor=on,ds-cpl=on,vmx=on,est=on,tm2=on,cx16=on,xtpr=on,lahf-lm=on \
 -m 214 \
 -overcommit mem-lock=off \
 -smp 6,sockets=6,cores=1,threads=1 \