render / rpms / libvirt

Forked from rpms/libvirt 9 months ago
Clone
a41c76
From 4658a565f5536002c3a65e942eed0d877cd1d070 Mon Sep 17 00:00:00 2001
a41c76
Message-Id: <4658a565f5536002c3a65e942eed0d877cd1d070@dist-git>
a41c76
From: Jiri Denemark <jdenemar@redhat.com>
a41c76
Date: Tue, 26 May 2020 10:58:56 +0200
a41c76
Subject: [PATCH] cpu_map: Add <decode> element to x86 CPU model definitions
a41c76
MIME-Version: 1.0
a41c76
Content-Type: text/plain; charset=UTF-8
a41c76
Content-Transfer-Encoding: 8bit
a41c76
a41c76
The element specifies whether a particular CPU model can be used when
a41c76
creating a CPU definition from raw CPUID/MSR data. The @host attribute
a41c76
determines whether the CPU model can be used (host='on') for creating
a41c76
CPU definition for host capabilities. Usability of the model for domain
a41c76
capabilities and host-model CPU definitions is controlled by the @guest
a41c76
attribute.
a41c76
a41c76
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
a41c76
Reviewed-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
a41c76
Tested-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
a41c76
(cherry picked from commit f4914045c2bff46b120c6c2af80066d24e48b609)
a41c76
a41c76
https://bugzilla.redhat.com/show_bug.cgi?id=1840008
a41c76
a41c76
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
a41c76
Message-Id: <3097db79eff1e45257ef12f891e8f9243bc8580f.1590483392.git.jdenemar@redhat.com>
a41c76
Reviewed-by: Ján Tomko <jtomko@redhat.com>
a41c76
---
a41c76
 src/cpu/cpu_x86.c                             | 43 +++++++++++++++++++
a41c76
 src/cpu_map/x86_486.xml                       |  1 +
a41c76
 src/cpu_map/x86_Broadwell-IBRS.xml            |  1 +
a41c76
 src/cpu_map/x86_Broadwell-noTSX-IBRS.xml      |  1 +
a41c76
 src/cpu_map/x86_Broadwell-noTSX.xml           |  1 +
a41c76
 src/cpu_map/x86_Broadwell.xml                 |  1 +
a41c76
 src/cpu_map/x86_Cascadelake-Server-noTSX.xml  |  1 +
a41c76
 src/cpu_map/x86_Cascadelake-Server.xml        |  1 +
a41c76
 src/cpu_map/x86_Conroe.xml                    |  1 +
a41c76
 src/cpu_map/x86_Dhyana.xml                    |  1 +
a41c76
 src/cpu_map/x86_EPYC-IBPB.xml                 |  1 +
a41c76
 src/cpu_map/x86_EPYC.xml                      |  1 +
a41c76
 src/cpu_map/x86_Haswell-IBRS.xml              |  1 +
a41c76
 src/cpu_map/x86_Haswell-noTSX-IBRS.xml        |  1 +
a41c76
 src/cpu_map/x86_Haswell-noTSX.xml             |  1 +
a41c76
 src/cpu_map/x86_Haswell.xml                   |  1 +
a41c76
 src/cpu_map/x86_Icelake-Client-noTSX.xml      |  1 +
a41c76
 src/cpu_map/x86_Icelake-Client.xml            |  1 +
a41c76
 src/cpu_map/x86_Icelake-Server-noTSX.xml      |  1 +
a41c76
 src/cpu_map/x86_Icelake-Server.xml            |  1 +
a41c76
 src/cpu_map/x86_IvyBridge-IBRS.xml            |  1 +
a41c76
 src/cpu_map/x86_IvyBridge.xml                 |  1 +
a41c76
 src/cpu_map/x86_Nehalem-IBRS.xml              |  1 +
a41c76
 src/cpu_map/x86_Nehalem.xml                   |  1 +
a41c76
 src/cpu_map/x86_Opteron_G1.xml                |  1 +
a41c76
 src/cpu_map/x86_Opteron_G2.xml                |  1 +
a41c76
 src/cpu_map/x86_Opteron_G3.xml                |  1 +
a41c76
 src/cpu_map/x86_Opteron_G4.xml                |  1 +
a41c76
 src/cpu_map/x86_Opteron_G5.xml                |  1 +
a41c76
 src/cpu_map/x86_Penryn.xml                    |  1 +
a41c76
 src/cpu_map/x86_SandyBridge-IBRS.xml          |  1 +
a41c76
 src/cpu_map/x86_SandyBridge.xml               |  1 +
a41c76
 src/cpu_map/x86_Skylake-Client-IBRS.xml       |  1 +
a41c76
 src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml |  1 +
a41c76
 src/cpu_map/x86_Skylake-Client.xml            |  1 +
a41c76
 src/cpu_map/x86_Skylake-Server-IBRS.xml       |  1 +
a41c76
 src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml |  1 +
a41c76
 src/cpu_map/x86_Skylake-Server.xml            |  1 +
a41c76
 src/cpu_map/x86_Westmere-IBRS.xml             |  1 +
a41c76
 src/cpu_map/x86_Westmere.xml                  |  1 +
a41c76
 src/cpu_map/x86_athlon.xml                    |  1 +
a41c76
 src/cpu_map/x86_core2duo.xml                  |  1 +
a41c76
 src/cpu_map/x86_coreduo.xml                   |  1 +
a41c76
 src/cpu_map/x86_cpu64-rhel5.xml               |  1 +
a41c76
 src/cpu_map/x86_cpu64-rhel6.xml               |  1 +
a41c76
 src/cpu_map/x86_kvm32.xml                     |  1 +
a41c76
 src/cpu_map/x86_kvm64.xml                     |  1 +
a41c76
 src/cpu_map/x86_n270.xml                      |  1 +
a41c76
 src/cpu_map/x86_pentium.xml                   |  1 +
a41c76
 src/cpu_map/x86_pentium2.xml                  |  1 +
a41c76
 src/cpu_map/x86_pentium3.xml                  |  1 +
a41c76
 src/cpu_map/x86_pentiumpro.xml                |  1 +
a41c76
 src/cpu_map/x86_phenom.xml                    |  1 +
a41c76
 src/cpu_map/x86_qemu32.xml                    |  1 +
a41c76
 src/cpu_map/x86_qemu64.xml                    |  1 +
a41c76
 55 files changed, 97 insertions(+)
a41c76
a41c76
diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
a41c76
index 8c865bdaa4..7fbb4c9a6c 100644
a41c76
--- a/src/cpu/cpu_x86.c
a41c76
+++ b/src/cpu/cpu_x86.c
a41c76
@@ -125,6 +125,8 @@ typedef struct _virCPUx86Model virCPUx86Model;
a41c76
 typedef virCPUx86Model *virCPUx86ModelPtr;
a41c76
 struct _virCPUx86Model {
a41c76
     char *name;
a41c76
+    bool decodeHost;
a41c76
+    bool decodeGuest;
a41c76
     virCPUx86VendorPtr vendor;
a41c76
     size_t nsignatures;
a41c76
     uint32_t *signatures;
a41c76
@@ -1347,6 +1349,44 @@ x86ModelCompare(virCPUx86ModelPtr model1,
a41c76
 }
a41c76
 
a41c76
 
a41c76
+static int
a41c76
+x86ModelParseDecode(virCPUx86ModelPtr model,
a41c76
+                    xmlXPathContextPtr ctxt)
a41c76
+{
a41c76
+    g_autofree char *host = NULL;
a41c76
+    g_autofree char *guest = NULL;
a41c76
+    int val;
a41c76
+
a41c76
+    if ((host = virXPathString("string(./decode/@host)", ctxt)))
a41c76
+        val = virTristateSwitchTypeFromString(host);
a41c76
+    else
a41c76
+        val = VIR_TRISTATE_SWITCH_ABSENT;
a41c76
+
a41c76
+    if (val <= 0) {
a41c76
+        virReportError(VIR_ERR_INTERNAL_ERROR,
a41c76
+                       _("invalid or missing decode/host attribute in CPU model %s"),
a41c76
+                       model->name);
a41c76
+        return -1;
a41c76
+    }
a41c76
+    model->decodeHost = val == VIR_TRISTATE_SWITCH_ON;
a41c76
+
a41c76
+    if ((guest = virXPathString("string(./decode/@guest)", ctxt)))
a41c76
+        val = virTristateSwitchTypeFromString(guest);
a41c76
+    else
a41c76
+        val = VIR_TRISTATE_SWITCH_ABSENT;
a41c76
+
a41c76
+    if (val <= 0) {
a41c76
+        virReportError(VIR_ERR_INTERNAL_ERROR,
a41c76
+                       _("invalid or missing decode/guest attribute in CPU model %s"),
a41c76
+                       model->name);
a41c76
+        return -1;
a41c76
+    }
a41c76
+    model->decodeGuest = val == VIR_TRISTATE_SWITCH_ON;
a41c76
+
a41c76
+    return 0;
a41c76
+}
a41c76
+
a41c76
+
a41c76
 static int
a41c76
 x86ModelParseAncestor(virCPUx86ModelPtr model,
a41c76
                       xmlXPathContextPtr ctxt,
a41c76
@@ -1521,6 +1561,9 @@ x86ModelParse(xmlXPathContextPtr ctxt,
a41c76
 
a41c76
     model->name = g_strdup(name);
a41c76
 
a41c76
+    if (x86ModelParseDecode(model, ctxt) < 0)
a41c76
+        goto cleanup;
a41c76
+
a41c76
     if (x86ModelParseAncestor(model, ctxt, map) < 0)
a41c76
         goto cleanup;
a41c76
 
a41c76
diff --git a/src/cpu_map/x86_486.xml b/src/cpu_map/x86_486.xml
a41c76
index 61fa3797e8..d05b277392 100644
a41c76
--- a/src/cpu_map/x86_486.xml
a41c76
+++ b/src/cpu_map/x86_486.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='486'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <feature name='fpu'/>
a41c76
     <feature name='pse'/>
a41c76
     <feature name='vme'/>
a41c76
diff --git a/src/cpu_map/x86_Broadwell-IBRS.xml b/src/cpu_map/x86_Broadwell-IBRS.xml
a41c76
index 4600cacec0..9033d5fcd5 100644
a41c76
--- a/src/cpu_map/x86_Broadwell-IBRS.xml
a41c76
+++ b/src/cpu_map/x86_Broadwell-IBRS.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Broadwell-IBRS'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='61'/> 
a41c76
     <signature family='6' model='71'/> 
a41c76
     <signature family='6' model='79'/> 
a41c76
diff --git a/src/cpu_map/x86_Broadwell-noTSX-IBRS.xml b/src/cpu_map/x86_Broadwell-noTSX-IBRS.xml
a41c76
index b3fc0b726a..c044b60e36 100644
a41c76
--- a/src/cpu_map/x86_Broadwell-noTSX-IBRS.xml
a41c76
+++ b/src/cpu_map/x86_Broadwell-noTSX-IBRS.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Broadwell-noTSX-IBRS'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='61'/> 
a41c76
     <signature family='6' model='71'/> 
a41c76
     <signature family='6' model='79'/> 
a41c76
diff --git a/src/cpu_map/x86_Broadwell-noTSX.xml b/src/cpu_map/x86_Broadwell-noTSX.xml
a41c76
index ad932d0853..637f29ba1c 100644
a41c76
--- a/src/cpu_map/x86_Broadwell-noTSX.xml
a41c76
+++ b/src/cpu_map/x86_Broadwell-noTSX.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Broadwell-noTSX'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='61'/> 
a41c76
     <signature family='6' model='71'/> 
a41c76
     <signature family='6' model='79'/> 
a41c76
diff --git a/src/cpu_map/x86_Broadwell.xml b/src/cpu_map/x86_Broadwell.xml
a41c76
index 6de9227322..82939a4509 100644
a41c76
--- a/src/cpu_map/x86_Broadwell.xml
a41c76
+++ b/src/cpu_map/x86_Broadwell.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Broadwell'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='61'/> 
a41c76
     <signature family='6' model='71'/> 
a41c76
     <signature family='6' model='79'/> 
a41c76
diff --git a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
a41c76
index d24415ebce..5adea664e9 100644
a41c76
--- a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
a41c76
+++ b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Cascadelake-Server-noTSX'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='85'/> 
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_Cascadelake-Server.xml b/src/cpu_map/x86_Cascadelake-Server.xml
a41c76
index b69ac198b6..d7ec42f57e 100644
a41c76
--- a/src/cpu_map/x86_Cascadelake-Server.xml
a41c76
+++ b/src/cpu_map/x86_Cascadelake-Server.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Cascadelake-Server'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='85'/> 
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_Conroe.xml b/src/cpu_map/x86_Conroe.xml
a41c76
index 89fe0ad2cf..4cacee6142 100644
a41c76
--- a/src/cpu_map/x86_Conroe.xml
a41c76
+++ b/src/cpu_map/x86_Conroe.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Conroe'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='15'/> 
a41c76
     <signature family='6' model='22'/> 
a41c76
     <vendor name='Intel'/>
a41c76
diff --git a/src/cpu_map/x86_Dhyana.xml b/src/cpu_map/x86_Dhyana.xml
a41c76
index cbc8020a94..689daf8649 100644
a41c76
--- a/src/cpu_map/x86_Dhyana.xml
a41c76
+++ b/src/cpu_map/x86_Dhyana.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Dhyana'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='24' model='0'/> 
a41c76
     <vendor name='Hygon'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_EPYC-IBPB.xml b/src/cpu_map/x86_EPYC-IBPB.xml
a41c76
index 283697ebd1..983c5f4445 100644
a41c76
--- a/src/cpu_map/x86_EPYC-IBPB.xml
a41c76
+++ b/src/cpu_map/x86_EPYC-IBPB.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='EPYC-IBPB'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='23' model='1'/> 
a41c76
     <vendor name='AMD'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_EPYC.xml b/src/cpu_map/x86_EPYC.xml
a41c76
index f0601392fd..3ebba9f4ed 100644
a41c76
--- a/src/cpu_map/x86_EPYC.xml
a41c76
+++ b/src/cpu_map/x86_EPYC.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='EPYC'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='23' model='1'/> 
a41c76
     <vendor name='AMD'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_Haswell-IBRS.xml b/src/cpu_map/x86_Haswell-IBRS.xml
a41c76
index 4f86db838f..0ffe2bae0d 100644
a41c76
--- a/src/cpu_map/x86_Haswell-IBRS.xml
a41c76
+++ b/src/cpu_map/x86_Haswell-IBRS.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Haswell-IBRS'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='60'/> 
a41c76
     <signature family='6' model='63'/> 
a41c76
     <signature family='6' model='69'/> 
a41c76
diff --git a/src/cpu_map/x86_Haswell-noTSX-IBRS.xml b/src/cpu_map/x86_Haswell-noTSX-IBRS.xml
a41c76
index 47318be6d5..75d709c009 100644
a41c76
--- a/src/cpu_map/x86_Haswell-noTSX-IBRS.xml
a41c76
+++ b/src/cpu_map/x86_Haswell-noTSX-IBRS.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Haswell-noTSX-IBRS'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='60'/> 
a41c76
     <signature family='6' model='63'/> 
a41c76
     <signature family='6' model='69'/> 
a41c76
diff --git a/src/cpu_map/x86_Haswell-noTSX.xml b/src/cpu_map/x86_Haswell-noTSX.xml
a41c76
index efd10c47de..b0a0faa856 100644
a41c76
--- a/src/cpu_map/x86_Haswell-noTSX.xml
a41c76
+++ b/src/cpu_map/x86_Haswell-noTSX.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Haswell-noTSX'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='60'/> 
a41c76
     <signature family='6' model='63'/> 
a41c76
     <signature family='6' model='69'/> 
a41c76
diff --git a/src/cpu_map/x86_Haswell.xml b/src/cpu_map/x86_Haswell.xml
a41c76
index ac358d7967..ee16b30f19 100644
a41c76
--- a/src/cpu_map/x86_Haswell.xml
a41c76
+++ b/src/cpu_map/x86_Haswell.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Haswell'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='60'/> 
a41c76
     <signature family='6' model='63'/> 
a41c76
     <signature family='6' model='69'/> 
a41c76
diff --git a/src/cpu_map/x86_Icelake-Client-noTSX.xml b/src/cpu_map/x86_Icelake-Client-noTSX.xml
a41c76
index cd51881f40..540732af6f 100644
a41c76
--- a/src/cpu_map/x86_Icelake-Client-noTSX.xml
a41c76
+++ b/src/cpu_map/x86_Icelake-Client-noTSX.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Icelake-Client-noTSX'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='126'/> 
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_Icelake-Client.xml b/src/cpu_map/x86_Icelake-Client.xml
a41c76
index fbd53bbe11..5cf32e91fa 100644
a41c76
--- a/src/cpu_map/x86_Icelake-Client.xml
a41c76
+++ b/src/cpu_map/x86_Icelake-Client.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Icelake-Client'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='126'/> 
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_Icelake-Server-noTSX.xml b/src/cpu_map/x86_Icelake-Server-noTSX.xml
a41c76
index 538c656712..5a53da23c7 100644
a41c76
--- a/src/cpu_map/x86_Icelake-Server-noTSX.xml
a41c76
+++ b/src/cpu_map/x86_Icelake-Server-noTSX.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Icelake-Server-noTSX'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='134'/> 
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_Icelake-Server.xml b/src/cpu_map/x86_Icelake-Server.xml
a41c76
index a565371977..367ade7240 100644
a41c76
--- a/src/cpu_map/x86_Icelake-Server.xml
a41c76
+++ b/src/cpu_map/x86_Icelake-Server.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Icelake-Server'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='134'/> 
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_IvyBridge-IBRS.xml b/src/cpu_map/x86_IvyBridge-IBRS.xml
a41c76
index e0f2adfa82..430bc3232d 100644
a41c76
--- a/src/cpu_map/x86_IvyBridge-IBRS.xml
a41c76
+++ b/src/cpu_map/x86_IvyBridge-IBRS.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='IvyBridge-IBRS'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='58'/> 
a41c76
     <signature family='6' model='62'/> 
a41c76
     <vendor name='Intel'/>
a41c76
diff --git a/src/cpu_map/x86_IvyBridge.xml b/src/cpu_map/x86_IvyBridge.xml
a41c76
index 16213dbc62..eaf5d02e82 100644
a41c76
--- a/src/cpu_map/x86_IvyBridge.xml
a41c76
+++ b/src/cpu_map/x86_IvyBridge.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='IvyBridge'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='58'/> 
a41c76
     <signature family='6' model='62'/> 
a41c76
     <vendor name='Intel'/>
a41c76
diff --git a/src/cpu_map/x86_Nehalem-IBRS.xml b/src/cpu_map/x86_Nehalem-IBRS.xml
a41c76
index 8cc19eff03..00d0d2fe51 100644
a41c76
--- a/src/cpu_map/x86_Nehalem-IBRS.xml
a41c76
+++ b/src/cpu_map/x86_Nehalem-IBRS.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Nehalem-IBRS'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='26'/> 
a41c76
     <signature family='6' model='30'/> 
a41c76
     <signature family='6' model='31'/> 
a41c76
diff --git a/src/cpu_map/x86_Nehalem.xml b/src/cpu_map/x86_Nehalem.xml
a41c76
index 530e5e8a0d..9968001fe7 100644
a41c76
--- a/src/cpu_map/x86_Nehalem.xml
a41c76
+++ b/src/cpu_map/x86_Nehalem.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Nehalem'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='26'/> 
a41c76
     <signature family='6' model='30'/> 
a41c76
     <signature family='6' model='31'/> 
a41c76
diff --git a/src/cpu_map/x86_Opteron_G1.xml b/src/cpu_map/x86_Opteron_G1.xml
a41c76
index 73cf1de71e..57648ca93f 100644
a41c76
--- a/src/cpu_map/x86_Opteron_G1.xml
a41c76
+++ b/src/cpu_map/x86_Opteron_G1.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Opteron_G1'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='15' model='6'/> 
a41c76
     <vendor name='AMD'/>
a41c76
     <feature name='apic'/>
a41c76
diff --git a/src/cpu_map/x86_Opteron_G2.xml b/src/cpu_map/x86_Opteron_G2.xml
a41c76
index 342105730e..db961b0067 100644
a41c76
--- a/src/cpu_map/x86_Opteron_G2.xml
a41c76
+++ b/src/cpu_map/x86_Opteron_G2.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Opteron_G2'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='15' model='6'/> 
a41c76
     <vendor name='AMD'/>
a41c76
     <feature name='apic'/>
a41c76
diff --git a/src/cpu_map/x86_Opteron_G3.xml b/src/cpu_map/x86_Opteron_G3.xml
a41c76
index 7fbf8ac9e9..dab59d4f82 100644
a41c76
--- a/src/cpu_map/x86_Opteron_G3.xml
a41c76
+++ b/src/cpu_map/x86_Opteron_G3.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Opteron_G3'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='15' model='6'/> 
a41c76
     <vendor name='AMD'/>
a41c76
     <feature name='abm'/>
a41c76
diff --git a/src/cpu_map/x86_Opteron_G4.xml b/src/cpu_map/x86_Opteron_G4.xml
a41c76
index 463b3676a0..a7fc8d5828 100644
a41c76
--- a/src/cpu_map/x86_Opteron_G4.xml
a41c76
+++ b/src/cpu_map/x86_Opteron_G4.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Opteron_G4'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='21' model='1'/> 
a41c76
     <vendor name='AMD'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_Opteron_G5.xml b/src/cpu_map/x86_Opteron_G5.xml
a41c76
index 0f8fe32c87..ff775bdcef 100644
a41c76
--- a/src/cpu_map/x86_Opteron_G5.xml
a41c76
+++ b/src/cpu_map/x86_Opteron_G5.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Opteron_G5'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='21' model='2'/> 
a41c76
     <vendor name='AMD'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_Penryn.xml b/src/cpu_map/x86_Penryn.xml
a41c76
index 279bb05570..29d4cd635b 100644
a41c76
--- a/src/cpu_map/x86_Penryn.xml
a41c76
+++ b/src/cpu_map/x86_Penryn.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Penryn'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='23'/> 
a41c76
     <signature family='6' model='29'/> 
a41c76
     <vendor name='Intel'/>
a41c76
diff --git a/src/cpu_map/x86_SandyBridge-IBRS.xml b/src/cpu_map/x86_SandyBridge-IBRS.xml
a41c76
index 7d1342ec6f..fbdb4f2bf6 100644
a41c76
--- a/src/cpu_map/x86_SandyBridge-IBRS.xml
a41c76
+++ b/src/cpu_map/x86_SandyBridge-IBRS.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='SandyBridge-IBRS'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='42'/> 
a41c76
     <signature family='6' model='45'/> 
a41c76
     <vendor name='Intel'/>
a41c76
diff --git a/src/cpu_map/x86_SandyBridge.xml b/src/cpu_map/x86_SandyBridge.xml
a41c76
index 48e4ac8082..7c85ed42df 100644
a41c76
--- a/src/cpu_map/x86_SandyBridge.xml
a41c76
+++ b/src/cpu_map/x86_SandyBridge.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='SandyBridge'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='42'/> 
a41c76
     <signature family='6' model='45'/> 
a41c76
     <vendor name='Intel'/>
a41c76
diff --git a/src/cpu_map/x86_Skylake-Client-IBRS.xml b/src/cpu_map/x86_Skylake-Client-IBRS.xml
a41c76
index 4440313fc4..5709e7c2f9 100644
a41c76
--- a/src/cpu_map/x86_Skylake-Client-IBRS.xml
a41c76
+++ b/src/cpu_map/x86_Skylake-Client-IBRS.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Skylake-Client-IBRS'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='94'/> 
a41c76
     <signature family='6' model='78'/> 
a41c76
     
a41c76
diff --git a/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
a41c76
index 3d2976692f..0c2f1e6ac4 100644
a41c76
--- a/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
a41c76
+++ b/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Skylake-Client-noTSX-IBRS'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='94'/> 
a41c76
     <signature family='6' model='78'/> 
a41c76
     
a41c76
diff --git a/src/cpu_map/x86_Skylake-Client.xml b/src/cpu_map/x86_Skylake-Client.xml
a41c76
index 1053fa4a04..14cd57e176 100644
a41c76
--- a/src/cpu_map/x86_Skylake-Client.xml
a41c76
+++ b/src/cpu_map/x86_Skylake-Client.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Skylake-Client'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='94'/> 
a41c76
     <signature family='6' model='78'/> 
a41c76
     
a41c76
diff --git a/src/cpu_map/x86_Skylake-Server-IBRS.xml b/src/cpu_map/x86_Skylake-Server-IBRS.xml
a41c76
index 71179f9f74..bd6b6457ad 100644
a41c76
--- a/src/cpu_map/x86_Skylake-Server-IBRS.xml
a41c76
+++ b/src/cpu_map/x86_Skylake-Server-IBRS.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Skylake-Server-IBRS'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='85'/> 
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
a41c76
index 455a072119..91a206f575 100644
a41c76
--- a/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
a41c76
+++ b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Skylake-Server-noTSX-IBRS'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='85'/> 
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_Skylake-Server.xml b/src/cpu_map/x86_Skylake-Server.xml
a41c76
index 2da69e0dfc..f96875a85f 100644
a41c76
--- a/src/cpu_map/x86_Skylake-Server.xml
a41c76
+++ b/src/cpu_map/x86_Skylake-Server.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Skylake-Server'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='85'/> 
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='3dnowprefetch'/>
a41c76
diff --git a/src/cpu_map/x86_Westmere-IBRS.xml b/src/cpu_map/x86_Westmere-IBRS.xml
a41c76
index 3baf56f47a..c7898f0c22 100644
a41c76
--- a/src/cpu_map/x86_Westmere-IBRS.xml
a41c76
+++ b/src/cpu_map/x86_Westmere-IBRS.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Westmere-IBRS'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='44'/> 
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='aes'/>
a41c76
diff --git a/src/cpu_map/x86_Westmere.xml b/src/cpu_map/x86_Westmere.xml
a41c76
index 95c1d690c8..16e4ad6c30 100644
a41c76
--- a/src/cpu_map/x86_Westmere.xml
a41c76
+++ b/src/cpu_map/x86_Westmere.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='Westmere'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <signature family='6' model='44'/> 
a41c76
     <signature family='6' model='47'/> 
a41c76
     <signature family='6' model='37'/> 
a41c76
diff --git a/src/cpu_map/x86_athlon.xml b/src/cpu_map/x86_athlon.xml
a41c76
index 0d44508e20..81c43c81e8 100644
a41c76
--- a/src/cpu_map/x86_athlon.xml
a41c76
+++ b/src/cpu_map/x86_athlon.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='athlon'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <vendor name='AMD'/>
a41c76
     <feature name='3dnow'/>
a41c76
     <feature name='3dnowext'/>
a41c76
diff --git a/src/cpu_map/x86_core2duo.xml b/src/cpu_map/x86_core2duo.xml
a41c76
index 3c9a148f3c..412039fe55 100644
a41c76
--- a/src/cpu_map/x86_core2duo.xml
a41c76
+++ b/src/cpu_map/x86_core2duo.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='core2duo'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='apic'/>
a41c76
     <feature name='clflush'/>
a41c76
diff --git a/src/cpu_map/x86_coreduo.xml b/src/cpu_map/x86_coreduo.xml
a41c76
index 676e846920..e2fda9a1d4 100644
a41c76
--- a/src/cpu_map/x86_coreduo.xml
a41c76
+++ b/src/cpu_map/x86_coreduo.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='coreduo'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='apic'/>
a41c76
     <feature name='clflush'/>
a41c76
diff --git a/src/cpu_map/x86_cpu64-rhel5.xml b/src/cpu_map/x86_cpu64-rhel5.xml
a41c76
index 670a92f274..be6bcdb7a6 100644
a41c76
--- a/src/cpu_map/x86_cpu64-rhel5.xml
a41c76
+++ b/src/cpu_map/x86_cpu64-rhel5.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='cpu64-rhel5'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <feature name='apic'/>
a41c76
     <feature name='clflush'/>
a41c76
     <feature name='cmov'/>
a41c76
diff --git a/src/cpu_map/x86_cpu64-rhel6.xml b/src/cpu_map/x86_cpu64-rhel6.xml
a41c76
index 3cae0f00c2..c62b1b5575 100644
a41c76
--- a/src/cpu_map/x86_cpu64-rhel6.xml
a41c76
+++ b/src/cpu_map/x86_cpu64-rhel6.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='cpu64-rhel6'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <feature name='apic'/>
a41c76
     <feature name='clflush'/>
a41c76
     <feature name='cmov'/>
a41c76
diff --git a/src/cpu_map/x86_kvm32.xml b/src/cpu_map/x86_kvm32.xml
a41c76
index 5f08a5e7fc..9dd96d5b56 100644
a41c76
--- a/src/cpu_map/x86_kvm32.xml
a41c76
+++ b/src/cpu_map/x86_kvm32.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='kvm32'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <feature name='apic'/>
a41c76
     <feature name='clflush'/>
a41c76
     <feature name='cmov'/>
a41c76
diff --git a/src/cpu_map/x86_kvm64.xml b/src/cpu_map/x86_kvm64.xml
a41c76
index 80b24e2a49..185af06f78 100644
a41c76
--- a/src/cpu_map/x86_kvm64.xml
a41c76
+++ b/src/cpu_map/x86_kvm64.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='kvm64'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <feature name='apic'/>
a41c76
     <feature name='clflush'/>
a41c76
     <feature name='cmov'/>
a41c76
diff --git a/src/cpu_map/x86_n270.xml b/src/cpu_map/x86_n270.xml
a41c76
index cb359d968e..5507d2ea3b 100644
a41c76
--- a/src/cpu_map/x86_n270.xml
a41c76
+++ b/src/cpu_map/x86_n270.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='n270'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <vendor name='Intel'/>
a41c76
     <feature name='apic'/>
a41c76
     <feature name='clflush'/>
a41c76
diff --git a/src/cpu_map/x86_pentium.xml b/src/cpu_map/x86_pentium.xml
a41c76
index d44c1399b0..f0a8982115 100644
a41c76
--- a/src/cpu_map/x86_pentium.xml
a41c76
+++ b/src/cpu_map/x86_pentium.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='pentium'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <feature name='cx8'/>
a41c76
     <feature name='de'/>
a41c76
     <feature name='fpu'/>
a41c76
diff --git a/src/cpu_map/x86_pentium2.xml b/src/cpu_map/x86_pentium2.xml
a41c76
index 0d772bad2f..aeba082297 100644
a41c76
--- a/src/cpu_map/x86_pentium2.xml
a41c76
+++ b/src/cpu_map/x86_pentium2.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='pentium2'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <feature name='cmov'/>
a41c76
     <feature name='cx8'/>
a41c76
     <feature name='de'/>
a41c76
diff --git a/src/cpu_map/x86_pentium3.xml b/src/cpu_map/x86_pentium3.xml
a41c76
index 24eb227c28..ab85d2967f 100644
a41c76
--- a/src/cpu_map/x86_pentium3.xml
a41c76
+++ b/src/cpu_map/x86_pentium3.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='pentium3'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <feature name='cmov'/>
a41c76
     <feature name='cx8'/>
a41c76
     <feature name='de'/>
a41c76
diff --git a/src/cpu_map/x86_pentiumpro.xml b/src/cpu_map/x86_pentiumpro.xml
a41c76
index 9f7a610a87..b6e061187c 100644
a41c76
--- a/src/cpu_map/x86_pentiumpro.xml
a41c76
+++ b/src/cpu_map/x86_pentiumpro.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='pentiumpro'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <feature name='apic'/>
a41c76
     <feature name='cmov'/>
a41c76
     <feature name='cx8'/>
a41c76
diff --git a/src/cpu_map/x86_phenom.xml b/src/cpu_map/x86_phenom.xml
a41c76
index 71f004057b..f0f8ece57a 100644
a41c76
--- a/src/cpu_map/x86_phenom.xml
a41c76
+++ b/src/cpu_map/x86_phenom.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='phenom'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <vendor name='AMD'/>
a41c76
     <feature name='3dnow'/>
a41c76
     <feature name='3dnowext'/>
a41c76
diff --git a/src/cpu_map/x86_qemu32.xml b/src/cpu_map/x86_qemu32.xml
a41c76
index 3c9cdec981..f3fb1959be 100644
a41c76
--- a/src/cpu_map/x86_qemu32.xml
a41c76
+++ b/src/cpu_map/x86_qemu32.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='qemu32'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     <feature name='apic'/>
a41c76
     <feature name='cmov'/>
a41c76
     <feature name='cx8'/>
a41c76
diff --git a/src/cpu_map/x86_qemu64.xml b/src/cpu_map/x86_qemu64.xml
a41c76
index a8e8dfe58d..0fe207a2b4 100644
a41c76
--- a/src/cpu_map/x86_qemu64.xml
a41c76
+++ b/src/cpu_map/x86_qemu64.xml
a41c76
@@ -1,5 +1,6 @@
a41c76
 <cpus>
a41c76
   <model name='qemu64'>
a41c76
+    <decode host='on' guest='on'/>
a41c76
     
a41c76
          host does.  So we leave them out:
a41c76
 
a41c76
-- 
a41c76
2.26.2
a41c76