a41c76
From 59287d64100517e89dbd3a88af6fec4755ceab42 Mon Sep 17 00:00:00 2001
a41c76
Message-Id: <59287d64100517e89dbd3a88af6fec4755ceab42@dist-git>
a41c76
From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
a41c76
Date: Tue, 26 May 2020 10:58:55 +0200
a41c76
Subject: [PATCH] cpu_map: Add more -noTSX x86 CPU models
a41c76
MIME-Version: 1.0
a41c76
Content-Type: text/plain; charset=UTF-8
a41c76
Content-Transfer-Encoding: 8bit
a41c76
a41c76
One of the mitigation methods for TAA[1] is to disable TSX
a41c76
support on the host system.  Linux added a mechanism to disable
a41c76
TSX globally through the kernel command line, and many Linux
a41c76
distributions now default to tsx=off.  This makes existing CPU
a41c76
models that have HLE and RTM enabled not usable anymore.
a41c76
a41c76
Add new versions of all CPU models that have the HLE and RTM
a41c76
features enabled, that can be used when TSX is disabled in the
a41c76
host system.
a41c76
a41c76
On systems disabling the features without those types defined
a41c76
in cpu-maps users end up without modern CPU types in the list
a41c76
of usable CPUs to use in the likes of virsh domcapabilities
a41c76
or tools higher in the stack like virt-manager.
a41c76
a41c76
This adds:
a41c76
-Cascadelake-Server-noTSX
a41c76
-Icelake-Client-noTSX
a41c76
-Icelake-Server-noTSX
a41c76
-Skylake-Server-noTSX-IBRS
a41c76
-Skylake-Client-noTSX-IBRS
a41c76
a41c76
Introduced in QEMU by commit v4.2.0-rc2-3-g9ab2237f19 (function)
a41c76
                  and commit v4.2.0-rc2-4-g02fa60d101 (names)
a41c76
a41c76
References:
a41c76
a41c76
    [1] TAA, TSX asynchronous Abort:
a41c76
        https://software.intel.com/security-software-guidance/insights/deep-dive-intel-transactional-synchronization-extensions-intel-tsx-asynchronous-abort
a41c76
        https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/tsx_async_abort.html
a41c76
a41c76
Fixes: https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1853200
a41c76
a41c76
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
a41c76
Message-Id: <20200310104806.2723-2-christian.ehrhardt@canonical.com>
a41c76
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
a41c76
(cherry picked from commit dd17a4eba8618aeb0144f268f2222f65a85425fc)
a41c76
a41c76
https://bugzilla.redhat.com/show_bug.cgi?id=1840008
a41c76
a41c76
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
a41c76
Message-Id: <ab2edc2c9107c87dfa7153b6c54ddd1401c82a4b.1590483392.git.jdenemar@redhat.com>
a41c76
Reviewed-by: Ján Tomko <jtomko@redhat.com>
a41c76
---
a41c76
 src/cpu_map/Makefile.inc.am                   |  5 ++
a41c76
 src/cpu_map/index.xml                         |  5 ++
a41c76
 src/cpu_map/x86_Cascadelake-Server-noTSX.xml  | 78 ++++++++++++++++
a41c76
 src/cpu_map/x86_Icelake-Client-noTSX.xml      | 81 +++++++++++++++++
a41c76
 src/cpu_map/x86_Icelake-Server-noTSX.xml      | 90 +++++++++++++++++++
a41c76
 src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml | 73 +++++++++++++++
a41c76
 src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml | 75 ++++++++++++++++
a41c76
 .../x86_64-cpuid-Core-i7-8550U-guest.xml      |  4 +-
a41c76
 .../x86_64-cpuid-Core-i7-8550U-host.xml       | 11 +--
a41c76
 .../x86_64-cpuid-Core-i7-8550U-json.xml       |  4 +-
a41c76
 .../domaincapsdata/qemu_4.2.0-q35.x86_64.xml  |  5 ++
a41c76
 .../domaincapsdata/qemu_4.2.0-tcg.x86_64.xml  |  5 ++
a41c76
 tests/domaincapsdata/qemu_4.2.0.x86_64.xml    |  5 ++
a41c76
 .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml  |  5 ++
a41c76
 .../domaincapsdata/qemu_5.0.0-tcg.x86_64.xml  |  5 ++
a41c76
 tests/domaincapsdata/qemu_5.0.0.x86_64.xml    |  5 ++
a41c76
 16 files changed, 440 insertions(+), 16 deletions(-)
a41c76
 create mode 100644 src/cpu_map/x86_Cascadelake-Server-noTSX.xml
a41c76
 create mode 100644 src/cpu_map/x86_Icelake-Client-noTSX.xml
a41c76
 create mode 100644 src/cpu_map/x86_Icelake-Server-noTSX.xml
a41c76
 create mode 100644 src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
a41c76
 create mode 100644 src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
a41c76
a41c76
diff --git a/src/cpu_map/Makefile.inc.am b/src/cpu_map/Makefile.inc.am
a41c76
index e935178304..be64c9a0d4 100644
a41c76
--- a/src/cpu_map/Makefile.inc.am
a41c76
+++ b/src/cpu_map/Makefile.inc.am
a41c76
@@ -20,6 +20,7 @@ cpumap_DATA = \
a41c76
 	cpu_map/x86_Broadwell-noTSX.xml \
a41c76
 	cpu_map/x86_Broadwell-noTSX-IBRS.xml \
a41c76
 	cpu_map/x86_Cascadelake-Server.xml \
a41c76
+	cpu_map/x86_Cascadelake-Server-noTSX.xml \
a41c76
 	cpu_map/x86_Conroe.xml \
a41c76
 	cpu_map/x86_core2duo.xml \
a41c76
 	cpu_map/x86_coreduo.xml \
a41c76
@@ -33,7 +34,9 @@ cpumap_DATA = \
a41c76
 	cpu_map/x86_Haswell-noTSX.xml \
a41c76
 	cpu_map/x86_Haswell-noTSX-IBRS.xml \
a41c76
 	cpu_map/x86_Icelake-Client.xml \
a41c76
+	cpu_map/x86_Icelake-Client-noTSX.xml \
a41c76
 	cpu_map/x86_Icelake-Server.xml \
a41c76
+	cpu_map/x86_Icelake-Server-noTSX.xml \
a41c76
 	cpu_map/x86_IvyBridge.xml \
a41c76
 	cpu_map/x86_IvyBridge-IBRS.xml \
a41c76
 	cpu_map/x86_kvm32.xml \
a41c76
@@ -58,8 +61,10 @@ cpumap_DATA = \
a41c76
 	cpu_map/x86_SandyBridge-IBRS.xml \
a41c76
 	cpu_map/x86_Skylake-Client.xml \
a41c76
 	cpu_map/x86_Skylake-Client-IBRS.xml \
a41c76
+	cpu_map/x86_Skylake-Client-noTSX-IBRS.xml \
a41c76
 	cpu_map/x86_Skylake-Server.xml \
a41c76
 	cpu_map/x86_Skylake-Server-IBRS.xml \
a41c76
+	cpu_map/x86_Skylake-Server-noTSX-IBRS.xml \
a41c76
 	cpu_map/x86_Westmere.xml \
a41c76
 	cpu_map/x86_Westmere-IBRS.xml \
a41c76
 	$(NULL)
a41c76
diff --git a/src/cpu_map/index.xml b/src/cpu_map/index.xml
a41c76
index ffb2f6fe1b..50b030de29 100644
a41c76
--- a/src/cpu_map/index.xml
a41c76
+++ b/src/cpu_map/index.xml
a41c76
@@ -44,11 +44,16 @@
a41c76
     <include filename="x86_Broadwell-IBRS.xml"/>
a41c76
     <include filename="x86_Skylake-Client.xml"/>
a41c76
     <include filename="x86_Skylake-Client-IBRS.xml"/>
a41c76
+    <include filename="x86_Skylake-Client-noTSX-IBRS.xml"/>
a41c76
     <include filename="x86_Skylake-Server.xml"/>
a41c76
     <include filename="x86_Skylake-Server-IBRS.xml"/>
a41c76
+    <include filename="x86_Skylake-Server-noTSX-IBRS.xml"/>
a41c76
     <include filename="x86_Cascadelake-Server.xml"/>
a41c76
+    <include filename="x86_Cascadelake-Server-noTSX.xml"/>
a41c76
     <include filename="x86_Icelake-Client.xml"/>
a41c76
+    <include filename="x86_Icelake-Client-noTSX.xml"/>
a41c76
     <include filename="x86_Icelake-Server.xml"/>
a41c76
+    <include filename="x86_Icelake-Server-noTSX.xml"/>
a41c76
 
a41c76
     
a41c76
     <include filename="x86_athlon.xml"/>
a41c76
diff --git a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
a41c76
new file mode 100644
a41c76
index 0000000000..d24415ebce
a41c76
--- /dev/null
a41c76
+++ b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
a41c76
@@ -0,0 +1,78 @@
a41c76
+<cpus>
a41c76
+  <model name='Cascadelake-Server-noTSX'>
a41c76
+    <signature family='6' model='85'/> 
a41c76
+    <vendor name='Intel'/>
a41c76
+    <feature name='3dnowprefetch'/>
a41c76
+    <feature name='abm'/>
a41c76
+    <feature name='adx'/>
a41c76
+    <feature name='aes'/>
a41c76
+    <feature name='apic'/>
a41c76
+    <feature name='arat'/>
a41c76
+    <feature name='avx'/>
a41c76
+    <feature name='avx2'/>
a41c76
+    <feature name='avx512bw'/>
a41c76
+    <feature name='avx512cd'/>
a41c76
+    <feature name='avx512dq'/>
a41c76
+    <feature name='avx512f'/>
a41c76
+    <feature name='avx512vl'/>
a41c76
+    <feature name='avx512vnni'/>
a41c76
+    <feature name='bmi1'/>
a41c76
+    <feature name='bmi2'/>
a41c76
+    <feature name='clflush'/>
a41c76
+    <feature name='clflushopt'/>
a41c76
+    <feature name='clwb'/>
a41c76
+    <feature name='cmov'/>
a41c76
+    <feature name='cx16'/>
a41c76
+    <feature name='cx8'/>
a41c76
+    <feature name='de'/>
a41c76
+    <feature name='erms'/>
a41c76
+    <feature name='f16c'/>
a41c76
+    <feature name='fma'/>
a41c76
+    <feature name='fpu'/>
a41c76
+    <feature name='fsgsbase'/>
a41c76
+    <feature name='fxsr'/>
a41c76
+    <feature name='invpcid'/>
a41c76
+    <feature name='lahf_lm'/>
a41c76
+    <feature name='lm'/>
a41c76
+    <feature name='mca'/>
a41c76
+    <feature name='mce'/>
a41c76
+    <feature name='mmx'/>
a41c76
+    <feature name='movbe'/>
a41c76
+    <feature name='mpx'/>
a41c76
+    <feature name='msr'/>
a41c76
+    <feature name='mtrr'/>
a41c76
+    <feature name='nx'/>
a41c76
+    <feature name='pae'/>
a41c76
+    <feature name='pat'/>
a41c76
+    <feature name='pcid'/>
a41c76
+    <feature name='pclmuldq'/>
a41c76
+    <feature name='pdpe1gb'/>
a41c76
+    <feature name='pge'/>
a41c76
+    <feature name='pni'/>
a41c76
+    <feature name='popcnt'/>
a41c76
+    <feature name='pse'/>
a41c76
+    <feature name='pse36'/>
a41c76
+    <feature name='rdrand'/>
a41c76
+    <feature name='rdseed'/>
a41c76
+    <feature name='rdtscp'/>
a41c76
+    <feature name='sep'/>
a41c76
+    <feature name='smap'/>
a41c76
+    <feature name='smep'/>
a41c76
+    <feature name='spec-ctrl'/>
a41c76
+    <feature name='ssbd'/>
a41c76
+    <feature name='sse'/>
a41c76
+    <feature name='sse2'/>
a41c76
+    <feature name='sse4.1'/>
a41c76
+    <feature name='sse4.2'/>
a41c76
+    <feature name='ssse3'/>
a41c76
+    <feature name='syscall'/>
a41c76
+    <feature name='tsc'/>
a41c76
+    <feature name='tsc-deadline'/>
a41c76
+    <feature name='vme'/>
a41c76
+    <feature name='x2apic'/>
a41c76
+    <feature name='xgetbv1'/>
a41c76
+    <feature name='xsave'/>
a41c76
+    <feature name='xsavec'/>
a41c76
+    <feature name='xsaveopt'/>
a41c76
+  </model>
a41c76
+</cpus>
a41c76
diff --git a/src/cpu_map/x86_Icelake-Client-noTSX.xml b/src/cpu_map/x86_Icelake-Client-noTSX.xml
a41c76
new file mode 100644
a41c76
index 0000000000..cd51881f40
a41c76
--- /dev/null
a41c76
+++ b/src/cpu_map/x86_Icelake-Client-noTSX.xml
a41c76
@@ -0,0 +1,81 @@
a41c76
+<cpus>
a41c76
+  <model name='Icelake-Client-noTSX'>
a41c76
+    <signature family='6' model='126'/> 
a41c76
+    <vendor name='Intel'/>
a41c76
+    <feature name='3dnowprefetch'/>
a41c76
+    <feature name='abm'/>
a41c76
+    <feature name='adx'/>
a41c76
+    <feature name='aes'/>
a41c76
+    <feature name='apic'/>
a41c76
+    <feature name='arat'/>
a41c76
+    <feature name='avx'/>
a41c76
+    <feature name='avx2'/>
a41c76
+    <feature name='avx512-vpopcntdq'/>
a41c76
+    <feature name='avx512bitalg'/>
a41c76
+    <feature name='avx512vbmi'/>
a41c76
+    <feature name='avx512vbmi2'/>
a41c76
+    <feature name='avx512vnni'/>
a41c76
+    <feature name='bmi1'/>
a41c76
+    <feature name='bmi2'/>
a41c76
+    <feature name='clflush'/>
a41c76
+    <feature name='cmov'/>
a41c76
+    <feature name='cx16'/>
a41c76
+    <feature name='cx8'/>
a41c76
+    <feature name='de'/>
a41c76
+    <feature name='erms'/>
a41c76
+    <feature name='f16c'/>
a41c76
+    <feature name='fma'/>
a41c76
+    <feature name='fpu'/>
a41c76
+    <feature name='fsgsbase'/>
a41c76
+    <feature name='fxsr'/>
a41c76
+    <feature name='gfni'/>
a41c76
+    <feature name='intel-pt'/>
a41c76
+    <feature name='invpcid'/>
a41c76
+    <feature name='lahf_lm'/>
a41c76
+    <feature name='lm'/>
a41c76
+    <feature name='mca'/>
a41c76
+    <feature name='mce'/>
a41c76
+    <feature name='mmx'/>
a41c76
+    <feature name='movbe'/>
a41c76
+    <feature name='mpx'/>
a41c76
+    <feature name='msr'/>
a41c76
+    <feature name='mtrr'/>
a41c76
+    <feature name='nx'/>
a41c76
+    <feature name='pae'/>
a41c76
+    <feature name='pat'/>
a41c76
+    <feature name='pcid'/>
a41c76
+    <feature name='pclmuldq'/>
a41c76
+    <feature name='pge'/>
a41c76
+    <feature name='pku'/>
a41c76
+    <feature name='pni'/>
a41c76
+    <feature name='popcnt'/>
a41c76
+    <feature name='pse'/>
a41c76
+    <feature name='pse36'/>
a41c76
+    <feature name='rdrand'/>
a41c76
+    <feature name='rdseed'/>
a41c76
+    <feature name='rdtscp'/>
a41c76
+    <feature name='sep'/>
a41c76
+    <feature name='smap'/>
a41c76
+    <feature name='smep'/>
a41c76
+    <feature name='spec-ctrl'/>
a41c76
+    <feature name='ssbd'/>
a41c76
+    <feature name='sse'/>
a41c76
+    <feature name='sse2'/>
a41c76
+    <feature name='sse4.1'/>
a41c76
+    <feature name='sse4.2'/>
a41c76
+    <feature name='ssse3'/>
a41c76
+    <feature name='syscall'/>
a41c76
+    <feature name='tsc'/>
a41c76
+    <feature name='tsc-deadline'/>
a41c76
+    <feature name='umip'/>
a41c76
+    <feature name='vaes'/>
a41c76
+    <feature name='vme'/>
a41c76
+    <feature name='vpclmulqdq'/>
a41c76
+    <feature name='wbnoinvd'/>
a41c76
+    <feature name='x2apic'/>
a41c76
+    <feature name='xgetbv1'/>
a41c76
+    <feature name='xsave'/>
a41c76
+    <feature name='xsavec'/>
a41c76
+    <feature name='xsaveopt'/>
a41c76
+  </model>
a41c76
+</cpus>
a41c76
diff --git a/src/cpu_map/x86_Icelake-Server-noTSX.xml b/src/cpu_map/x86_Icelake-Server-noTSX.xml
a41c76
new file mode 100644
a41c76
index 0000000000..538c656712
a41c76
--- /dev/null
a41c76
+++ b/src/cpu_map/x86_Icelake-Server-noTSX.xml
a41c76
@@ -0,0 +1,90 @@
a41c76
+<cpus>
a41c76
+  <model name='Icelake-Server-noTSX'>
a41c76
+    <signature family='6' model='134'/> 
a41c76
+    <vendor name='Intel'/>
a41c76
+    <feature name='3dnowprefetch'/>
a41c76
+    <feature name='abm'/>
a41c76
+    <feature name='adx'/>
a41c76
+    <feature name='aes'/>
a41c76
+    <feature name='apic'/>
a41c76
+    <feature name='arat'/>
a41c76
+    <feature name='avx'/>
a41c76
+    <feature name='avx2'/>
a41c76
+    <feature name='avx512-vpopcntdq'/>
a41c76
+    <feature name='avx512bitalg'/>
a41c76
+    <feature name='avx512bw'/>
a41c76
+    <feature name='avx512cd'/>
a41c76
+    <feature name='avx512dq'/>
a41c76
+    <feature name='avx512f'/>
a41c76
+    <feature name='avx512vbmi'/>
a41c76
+    <feature name='avx512vbmi2'/>
a41c76
+    <feature name='avx512vl'/>
a41c76
+    <feature name='avx512vnni'/>
a41c76
+    <feature name='bmi1'/>
a41c76
+    <feature name='bmi2'/>
a41c76
+    <feature name='clflush'/>
a41c76
+    <feature name='clflushopt'/>
a41c76
+    <feature name='clwb'/>
a41c76
+    <feature name='cmov'/>
a41c76
+    <feature name='cx16'/>
a41c76
+    <feature name='cx8'/>
a41c76
+    <feature name='de'/>
a41c76
+    <feature name='erms'/>
a41c76
+    <feature name='f16c'/>
a41c76
+    <feature name='fma'/>
a41c76
+    <feature name='fpu'/>
a41c76
+    <feature name='fsgsbase'/>
a41c76
+    <feature name='fxsr'/>
a41c76
+    <feature name='gfni'/>
a41c76
+    <feature name='intel-pt'/>
a41c76
+    <feature name='invpcid'/>
a41c76
+    <feature name='la57'/>
a41c76
+    <feature name='lahf_lm'/>
a41c76
+    <feature name='lm'/>
a41c76
+    <feature name='mca'/>
a41c76
+    <feature name='mce'/>
a41c76
+    <feature name='mmx'/>
a41c76
+    <feature name='movbe'/>
a41c76
+    <feature name='mpx'/>
a41c76
+    <feature name='msr'/>
a41c76
+    <feature name='mtrr'/>
a41c76
+    <feature name='nx'/>
a41c76
+    <feature name='pae'/>
a41c76
+    <feature name='pat'/>
a41c76
+    <feature name='pcid'/>
a41c76
+    <feature name='pclmuldq'/>
a41c76
+    <feature name='pdpe1gb'/>
a41c76
+    <feature name='pge'/>
a41c76
+    <feature name='pku'/>
a41c76
+    <feature name='pni'/>
a41c76
+    <feature name='popcnt'/>
a41c76
+    <feature name='pse'/>
a41c76
+    <feature name='pse36'/>
a41c76
+    <feature name='rdrand'/>
a41c76
+    <feature name='rdseed'/>
a41c76
+    <feature name='rdtscp'/>
a41c76
+    <feature name='sep'/>
a41c76
+    <feature name='smap'/>
a41c76
+    <feature name='smep'/>
a41c76
+    <feature name='spec-ctrl'/>
a41c76
+    <feature name='ssbd'/>
a41c76
+    <feature name='sse'/>
a41c76
+    <feature name='sse2'/>
a41c76
+    <feature name='sse4.1'/>
a41c76
+    <feature name='sse4.2'/>
a41c76
+    <feature name='ssse3'/>
a41c76
+    <feature name='syscall'/>
a41c76
+    <feature name='tsc'/>
a41c76
+    <feature name='tsc-deadline'/>
a41c76
+    <feature name='umip'/>
a41c76
+    <feature name='vaes'/>
a41c76
+    <feature name='vme'/>
a41c76
+    <feature name='vpclmulqdq'/>
a41c76
+    <feature name='wbnoinvd'/>
a41c76
+    <feature name='x2apic'/>
a41c76
+    <feature name='xgetbv1'/>
a41c76
+    <feature name='xsave'/>
a41c76
+    <feature name='xsavec'/>
a41c76
+    <feature name='xsaveopt'/>
a41c76
+  </model>
a41c76
+</cpus>
a41c76
diff --git a/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
a41c76
new file mode 100644
a41c76
index 0000000000..3d2976692f
a41c76
--- /dev/null
a41c76
+++ b/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
a41c76
@@ -0,0 +1,73 @@
a41c76
+<cpus>
a41c76
+  <model name='Skylake-Client-noTSX-IBRS'>
a41c76
+    <signature family='6' model='94'/> 
a41c76
+    <signature family='6' model='78'/> 
a41c76
+    
a41c76
+         but we don't have specific models for them. -->
a41c76
+    <signature family='6' model='142'/> 
a41c76
+    <signature family='6' model='158'/> 
a41c76
+    <vendor name='Intel'/>
a41c76
+    <feature name='3dnowprefetch'/>
a41c76
+    <feature name='abm'/>
a41c76
+    <feature name='adx'/>
a41c76
+    <feature name='aes'/>
a41c76
+    <feature name='apic'/>
a41c76
+    <feature name='arat'/>
a41c76
+    <feature name='avx'/>
a41c76
+    <feature name='avx2'/>
a41c76
+    <feature name='bmi1'/>
a41c76
+    <feature name='bmi2'/>
a41c76
+    <feature name='clflush'/>
a41c76
+    <feature name='cmov'/>
a41c76
+    <feature name='cx16'/>
a41c76
+    <feature name='cx8'/>
a41c76
+    <feature name='de'/>
a41c76
+    <feature name='erms'/>
a41c76
+    <feature name='f16c'/>
a41c76
+    <feature name='fma'/>
a41c76
+    <feature name='fpu'/>
a41c76
+    <feature name='fsgsbase'/>
a41c76
+    <feature name='fxsr'/>
a41c76
+    <feature name='invpcid'/>
a41c76
+    <feature name='lahf_lm'/>
a41c76
+    <feature name='lm'/>
a41c76
+    <feature name='mca'/>
a41c76
+    <feature name='mce'/>
a41c76
+    <feature name='mmx'/>
a41c76
+    <feature name='movbe'/>
a41c76
+    <feature name='mpx'/>
a41c76
+    <feature name='msr'/>
a41c76
+    <feature name='mtrr'/>
a41c76
+    <feature name='nx'/>
a41c76
+    <feature name='pae'/>
a41c76
+    <feature name='pat'/>
a41c76
+    <feature name='pcid'/>
a41c76
+    <feature name='pclmuldq'/>
a41c76
+    <feature name='pge'/>
a41c76
+    <feature name='pni'/>
a41c76
+    <feature name='popcnt'/>
a41c76
+    <feature name='pse'/>
a41c76
+    <feature name='pse36'/>
a41c76
+    <feature name='rdrand'/>
a41c76
+    <feature name='rdseed'/>
a41c76
+    <feature name='rdtscp'/>
a41c76
+    <feature name='sep'/>
a41c76
+    <feature name='smap'/>
a41c76
+    <feature name='smep'/>
a41c76
+    <feature name='spec-ctrl'/>
a41c76
+    <feature name='sse'/>
a41c76
+    <feature name='sse2'/>
a41c76
+    <feature name='sse4.1'/>
a41c76
+    <feature name='sse4.2'/>
a41c76
+    <feature name='ssse3'/>
a41c76
+    <feature name='syscall'/>
a41c76
+    <feature name='tsc'/>
a41c76
+    <feature name='tsc-deadline'/>
a41c76
+    <feature name='vme'/>
a41c76
+    <feature name='x2apic'/>
a41c76
+    <feature name='xgetbv1'/>
a41c76
+    <feature name='xsave'/>
a41c76
+    <feature name='xsavec'/>
a41c76
+    <feature name='xsaveopt'/>
a41c76
+  </model>
a41c76
+</cpus>
a41c76
diff --git a/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
a41c76
new file mode 100644
a41c76
index 0000000000..455a072119
a41c76
--- /dev/null
a41c76
+++ b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
a41c76
@@ -0,0 +1,75 @@
a41c76
+<cpus>
a41c76
+  <model name='Skylake-Server-noTSX-IBRS'>
a41c76
+    <signature family='6' model='85'/> 
a41c76
+    <vendor name='Intel'/>
a41c76
+    <feature name='3dnowprefetch'/>
a41c76
+    <feature name='abm'/>
a41c76
+    <feature name='adx'/>
a41c76
+    <feature name='aes'/>
a41c76
+    <feature name='apic'/>
a41c76
+    <feature name='arat'/>
a41c76
+    <feature name='avx'/>
a41c76
+    <feature name='avx2'/>
a41c76
+    <feature name='avx512bw'/>
a41c76
+    <feature name='avx512cd'/>
a41c76
+    <feature name='avx512dq'/>
a41c76
+    <feature name='avx512f'/>
a41c76
+    <feature name='avx512vl'/>
a41c76
+    <feature name='bmi1'/>
a41c76
+    <feature name='bmi2'/>
a41c76
+    <feature name='clflush'/>
a41c76
+    <feature name='clwb'/>
a41c76
+    <feature name='cmov'/>
a41c76
+    <feature name='cx16'/>
a41c76
+    <feature name='cx8'/>
a41c76
+    <feature name='de'/>
a41c76
+    <feature name='erms'/>
a41c76
+    <feature name='f16c'/>
a41c76
+    <feature name='fma'/>
a41c76
+    <feature name='fpu'/>
a41c76
+    <feature name='fsgsbase'/>
a41c76
+    <feature name='fxsr'/>
a41c76
+    <feature name='invpcid'/>
a41c76
+    <feature name='lahf_lm'/>
a41c76
+    <feature name='lm'/>
a41c76
+    <feature name='mca'/>
a41c76
+    <feature name='mce'/>
a41c76
+    <feature name='mmx'/>
a41c76
+    <feature name='movbe'/>
a41c76
+    <feature name='mpx'/>
a41c76
+    <feature name='msr'/>
a41c76
+    <feature name='mtrr'/>
a41c76
+    <feature name='nx'/>
a41c76
+    <feature name='pae'/>
a41c76
+    <feature name='pat'/>
a41c76
+    <feature name='pcid'/>
a41c76
+    <feature name='pclmuldq'/>
a41c76
+    <feature name='pdpe1gb'/>
a41c76
+    <feature name='pge'/>
a41c76
+    <feature name='pni'/>
a41c76
+    <feature name='popcnt'/>
a41c76
+    <feature name='pse'/>
a41c76
+    <feature name='pse36'/>
a41c76
+    <feature name='rdrand'/>
a41c76
+    <feature name='rdseed'/>
a41c76
+    <feature name='rdtscp'/>
a41c76
+    <feature name='sep'/>
a41c76
+    <feature name='smap'/>
a41c76
+    <feature name='smep'/>
a41c76
+    <feature name='spec-ctrl'/>
a41c76
+    <feature name='sse'/>
a41c76
+    <feature name='sse2'/>
a41c76
+    <feature name='sse4.1'/>
a41c76
+    <feature name='sse4.2'/>
a41c76
+    <feature name='ssse3'/>
a41c76
+    <feature name='syscall'/>
a41c76
+    <feature name='tsc'/>
a41c76
+    <feature name='tsc-deadline'/>
a41c76
+    <feature name='vme'/>
a41c76
+    <feature name='x2apic'/>
a41c76
+    <feature name='xgetbv1'/>
a41c76
+    <feature name='xsave'/>
a41c76
+    <feature name='xsavec'/>
a41c76
+    <feature name='xsaveopt'/>
a41c76
+  </model>
a41c76
+</cpus>
a41c76
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml
a41c76
index 92404e4d03..e03c4a06ba 100644
a41c76
--- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml
a41c76
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml
a41c76
@@ -1,5 +1,5 @@
a41c76
 <cpu mode='custom' match='exact'>
a41c76
-  <model fallback='forbid'>Skylake-Client-IBRS</model>
a41c76
+  <model fallback='forbid'>Skylake-Client-noTSX-IBRS</model>
a41c76
   <vendor>Intel</vendor>
a41c76
   <feature policy='require' name='ds'/>
a41c76
   <feature policy='require' name='acpi'/>
a41c76
@@ -26,6 +26,4 @@
a41c76
   <feature policy='require' name='pdpe1gb'/>
a41c76
   <feature policy='require' name='invtsc'/>
a41c76
   <feature policy='require' name='skip-l1dfl-vmentry'/>
a41c76
-  <feature policy='disable' name='hle'/>
a41c76
-  <feature policy='disable' name='rtm'/>
a41c76
 </cpu>
a41c76
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml
a41c76
index 808a8ff969..7f6fe2eac3 100644
a41c76
--- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml
a41c76
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml
a41c76
@@ -1,8 +1,7 @@
a41c76
 <cpu>
a41c76
   <arch>x86_64</arch>
a41c76
-  <model>Broadwell-noTSX-IBRS</model>
a41c76
+  <model>Skylake-Client-noTSX-IBRS</model>
a41c76
   <vendor>Intel</vendor>
a41c76
-  <feature name='vme'/>
a41c76
   <feature name='ds'/>
a41c76
   <feature name='acpi'/>
a41c76
   <feature name='ss'/>
a41c76
@@ -18,22 +17,14 @@
a41c76
   <feature name='xtpr'/>
a41c76
   <feature name='pdcm'/>
a41c76
   <feature name='osxsave'/>
a41c76
-  <feature name='f16c'/>
a41c76
-  <feature name='rdrand'/>
a41c76
-  <feature name='arat'/>
a41c76
   <feature name='tsc_adjust'/>
a41c76
-  <feature name='mpx'/>
a41c76
   <feature name='clflushopt'/>
a41c76
   <feature name='intel-pt'/>
a41c76
   <feature name='md-clear'/>
a41c76
   <feature name='stibp'/>
a41c76
   <feature name='ssbd'/>
a41c76
-  <feature name='xsaveopt'/>
a41c76
-  <feature name='xsavec'/>
a41c76
-  <feature name='xgetbv1'/>
a41c76
   <feature name='xsaves'/>
a41c76
   <feature name='pdpe1gb'/>
a41c76
-  <feature name='abm'/>
a41c76
   <feature name='invtsc'/>
a41c76
   <feature name='skip-l1dfl-vmentry'/>
a41c76
 </cpu>
a41c76
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
a41c76
index 645c0934c2..3d8e6775bf 100644
a41c76
--- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
a41c76
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
a41c76
@@ -1,5 +1,5 @@
a41c76
 <cpu mode='custom' match='exact'>
a41c76
-  <model fallback='forbid'>Skylake-Client-IBRS</model>
a41c76
+  <model fallback='forbid'>Skylake-Client-noTSX-IBRS</model>
a41c76
   <vendor>Intel</vendor>
a41c76
   <feature policy='require' name='ss'/>
a41c76
   <feature policy='require' name='vmx'/>
a41c76
@@ -14,6 +14,4 @@
a41c76
   <feature policy='require' name='xsaves'/>
a41c76
   <feature policy='require' name='pdpe1gb'/>
a41c76
   <feature policy='require' name='skip-l1dfl-vmentry'/>
a41c76
-  <feature policy='disable' name='hle'/>
a41c76
-  <feature policy='disable' name='rtm'/>
a41c76
 </cpu>
a41c76
diff --git a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
a41c76
index c4c6bfb564..e257657981 100644
a41c76
--- a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
a41c76
+++ b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
a41c76
@@ -63,8 +63,10 @@
a41c76
       <model usable='no'>athlon</model>
a41c76
       <model usable='yes'>Westmere-IBRS</model>
a41c76
       <model usable='yes'>Westmere</model>
a41c76
+      <model usable='no'>Skylake-Server-noTSX-IBRS</model>
a41c76
       <model usable='no'>Skylake-Server-IBRS</model>
a41c76
       <model usable='no'>Skylake-Server</model>
a41c76
+      <model usable='yes'>Skylake-Client-noTSX-IBRS</model>
a41c76
       <model usable='yes'>Skylake-Client-IBRS</model>
a41c76
       <model usable='yes'>Skylake-Client</model>
a41c76
       <model usable='yes'>SandyBridge-IBRS</model>
a41c76
@@ -79,7 +81,9 @@
a41c76
       <model usable='yes'>Nehalem</model>
a41c76
       <model usable='yes'>IvyBridge-IBRS</model>
a41c76
       <model usable='yes'>IvyBridge</model>
a41c76
+      <model usable='no'>Icelake-Server-noTSX</model>
a41c76
       <model usable='no'>Icelake-Server</model>
a41c76
+      <model usable='no'>Icelake-Client-noTSX</model>
a41c76
       <model usable='no'>Icelake-Client</model>
a41c76
       <model usable='yes'>Haswell-noTSX-IBRS</model>
a41c76
       <model usable='yes'>Haswell-noTSX</model>
a41c76
@@ -89,6 +93,7 @@
a41c76
       <model usable='no'>EPYC</model>
a41c76
       <model usable='no'>Dhyana</model>
a41c76
       <model usable='yes'>Conroe</model>
a41c76
+      <model usable='no'>Cascadelake-Server-noTSX</model>
a41c76
       <model usable='no'>Cascadelake-Server</model>
a41c76
       <model usable='yes'>Broadwell-noTSX-IBRS</model>
a41c76
       <model usable='yes'>Broadwell-noTSX</model>
a41c76
diff --git a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
a41c76
index a7f8d9c5ee..c762b0b600 100644
a41c76
--- a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
a41c76
+++ b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
a41c76
@@ -73,8 +73,10 @@
a41c76
       <model usable='yes'>athlon</model>
a41c76
       <model usable='no'>Westmere-IBRS</model>
a41c76
       <model usable='no'>Westmere</model>
a41c76
+      <model usable='no'>Skylake-Server-noTSX-IBRS</model>
a41c76
       <model usable='no'>Skylake-Server-IBRS</model>
a41c76
       <model usable='no'>Skylake-Server</model>
a41c76
+      <model usable='no'>Skylake-Client-noTSX-IBRS</model>
a41c76
       <model usable='no'>Skylake-Client-IBRS</model>
a41c76
       <model usable='no'>Skylake-Client</model>
a41c76
       <model usable='no'>SandyBridge-IBRS</model>
a41c76
@@ -89,7 +91,9 @@
a41c76
       <model usable='no'>Nehalem</model>
a41c76
       <model usable='no'>IvyBridge-IBRS</model>
a41c76
       <model usable='no'>IvyBridge</model>
a41c76
+      <model usable='no'>Icelake-Server-noTSX</model>
a41c76
       <model usable='no'>Icelake-Server</model>
a41c76
+      <model usable='no'>Icelake-Client-noTSX</model>
a41c76
       <model usable='no'>Icelake-Client</model>
a41c76
       <model usable='no'>Haswell-noTSX-IBRS</model>
a41c76
       <model usable='no'>Haswell-noTSX</model>
a41c76
@@ -99,6 +103,7 @@
a41c76
       <model usable='no'>EPYC</model>
a41c76
       <model usable='no'>Dhyana</model>
a41c76
       <model usable='yes'>Conroe</model>
a41c76
+      <model usable='no'>Cascadelake-Server-noTSX</model>
a41c76
       <model usable='no'>Cascadelake-Server</model>
a41c76
       <model usable='no'>Broadwell-noTSX-IBRS</model>
a41c76
       <model usable='no'>Broadwell-noTSX</model>
a41c76
diff --git a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
a41c76
index f0e0f182a4..2918ba9715 100644
a41c76
--- a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
a41c76
+++ b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
a41c76
@@ -62,8 +62,10 @@
a41c76
       <model usable='no'>athlon</model>
a41c76
       <model usable='yes'>Westmere-IBRS</model>
a41c76
       <model usable='yes'>Westmere</model>
a41c76
+      <model usable='no'>Skylake-Server-noTSX-IBRS</model>
a41c76
       <model usable='no'>Skylake-Server-IBRS</model>
a41c76
       <model usable='no'>Skylake-Server</model>
a41c76
+      <model usable='yes'>Skylake-Client-noTSX-IBRS</model>
a41c76
       <model usable='yes'>Skylake-Client-IBRS</model>
a41c76
       <model usable='yes'>Skylake-Client</model>
a41c76
       <model usable='yes'>SandyBridge-IBRS</model>
a41c76
@@ -78,7 +80,9 @@
a41c76
       <model usable='yes'>Nehalem</model>
a41c76
       <model usable='yes'>IvyBridge-IBRS</model>
a41c76
       <model usable='yes'>IvyBridge</model>
a41c76
+      <model usable='no'>Icelake-Server-noTSX</model>
a41c76
       <model usable='no'>Icelake-Server</model>
a41c76
+      <model usable='no'>Icelake-Client-noTSX</model>
a41c76
       <model usable='no'>Icelake-Client</model>
a41c76
       <model usable='yes'>Haswell-noTSX-IBRS</model>
a41c76
       <model usable='yes'>Haswell-noTSX</model>
a41c76
@@ -88,6 +92,7 @@
a41c76
       <model usable='no'>EPYC</model>
a41c76
       <model usable='no'>Dhyana</model>
a41c76
       <model usable='yes'>Conroe</model>
a41c76
+      <model usable='no'>Cascadelake-Server-noTSX</model>
a41c76
       <model usable='no'>Cascadelake-Server</model>
a41c76
       <model usable='yes'>Broadwell-noTSX-IBRS</model>
a41c76
       <model usable='yes'>Broadwell-noTSX</model>
a41c76
diff --git a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
a41c76
index b635d573ef..7b2a929738 100644
a41c76
--- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
a41c76
+++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
a41c76
@@ -63,8 +63,10 @@
a41c76
       <model usable='no'>athlon</model>
a41c76
       <model usable='yes'>Westmere-IBRS</model>
a41c76
       <model usable='yes'>Westmere</model>
a41c76
+      <model usable='no'>Skylake-Server-noTSX-IBRS</model>
a41c76
       <model usable='no'>Skylake-Server-IBRS</model>
a41c76
       <model usable='no'>Skylake-Server</model>
a41c76
+      <model usable='yes'>Skylake-Client-noTSX-IBRS</model>
a41c76
       <model usable='yes'>Skylake-Client-IBRS</model>
a41c76
       <model usable='yes'>Skylake-Client</model>
a41c76
       <model usable='yes'>SandyBridge-IBRS</model>
a41c76
@@ -79,7 +81,9 @@
a41c76
       <model usable='yes'>Nehalem</model>
a41c76
       <model usable='yes'>IvyBridge-IBRS</model>
a41c76
       <model usable='yes'>IvyBridge</model>
a41c76
+      <model usable='no'>Icelake-Server-noTSX</model>
a41c76
       <model usable='no'>Icelake-Server</model>
a41c76
+      <model usable='no'>Icelake-Client-noTSX</model>
a41c76
       <model usable='no'>Icelake-Client</model>
a41c76
       <model usable='yes'>Haswell-noTSX-IBRS</model>
a41c76
       <model usable='yes'>Haswell-noTSX</model>
a41c76
@@ -89,6 +93,7 @@
a41c76
       <model usable='no'>EPYC</model>
a41c76
       <model usable='no'>Dhyana</model>
a41c76
       <model usable='yes'>Conroe</model>
a41c76
+      <model usable='no'>Cascadelake-Server-noTSX</model>
a41c76
       <model usable='no'>Cascadelake-Server</model>
a41c76
       <model usable='yes'>Broadwell-noTSX-IBRS</model>
a41c76
       <model usable='yes'>Broadwell-noTSX</model>
a41c76
diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
a41c76
index 0fbc632267..d634803b29 100644
a41c76
--- a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
a41c76
+++ b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
a41c76
@@ -72,8 +72,10 @@
a41c76
       <model usable='yes'>athlon</model>
a41c76
       <model usable='no'>Westmere-IBRS</model>
a41c76
       <model usable='yes'>Westmere</model>
a41c76
+      <model usable='no'>Skylake-Server-noTSX-IBRS</model>
a41c76
       <model usable='no'>Skylake-Server-IBRS</model>
a41c76
       <model usable='no'>Skylake-Server</model>
a41c76
+      <model usable='no'>Skylake-Client-noTSX-IBRS</model>
a41c76
       <model usable='no'>Skylake-Client-IBRS</model>
a41c76
       <model usable='no'>Skylake-Client</model>
a41c76
       <model usable='no'>SandyBridge-IBRS</model>
a41c76
@@ -88,7 +90,9 @@
a41c76
       <model usable='yes'>Nehalem</model>
a41c76
       <model usable='no'>IvyBridge-IBRS</model>
a41c76
       <model usable='no'>IvyBridge</model>
a41c76
+      <model usable='no'>Icelake-Server-noTSX</model>
a41c76
       <model usable='no'>Icelake-Server</model>
a41c76
+      <model usable='no'>Icelake-Client-noTSX</model>
a41c76
       <model usable='no'>Icelake-Client</model>
a41c76
       <model usable='no'>Haswell-noTSX-IBRS</model>
a41c76
       <model usable='no'>Haswell-noTSX</model>
a41c76
@@ -98,6 +102,7 @@
a41c76
       <model usable='no'>EPYC</model>
a41c76
       <model usable='no'>Dhyana</model>
a41c76
       <model usable='yes'>Conroe</model>
a41c76
+      <model usable='no'>Cascadelake-Server-noTSX</model>
a41c76
       <model usable='no'>Cascadelake-Server</model>
a41c76
       <model usable='no'>Broadwell-noTSX-IBRS</model>
a41c76
       <model usable='no'>Broadwell-noTSX</model>
a41c76
diff --git a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
a41c76
index 27f76a8a5e..7609d49020 100644
a41c76
--- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
a41c76
+++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
a41c76
@@ -62,8 +62,10 @@
a41c76
       <model usable='no'>athlon</model>
a41c76
       <model usable='yes'>Westmere-IBRS</model>
a41c76
       <model usable='yes'>Westmere</model>
a41c76
+      <model usable='no'>Skylake-Server-noTSX-IBRS</model>
a41c76
       <model usable='no'>Skylake-Server-IBRS</model>
a41c76
       <model usable='no'>Skylake-Server</model>
a41c76
+      <model usable='yes'>Skylake-Client-noTSX-IBRS</model>
a41c76
       <model usable='yes'>Skylake-Client-IBRS</model>
a41c76
       <model usable='yes'>Skylake-Client</model>
a41c76
       <model usable='yes'>SandyBridge-IBRS</model>
a41c76
@@ -78,7 +80,9 @@
a41c76
       <model usable='yes'>Nehalem</model>
a41c76
       <model usable='yes'>IvyBridge-IBRS</model>
a41c76
       <model usable='yes'>IvyBridge</model>
a41c76
+      <model usable='no'>Icelake-Server-noTSX</model>
a41c76
       <model usable='no'>Icelake-Server</model>
a41c76
+      <model usable='no'>Icelake-Client-noTSX</model>
a41c76
       <model usable='no'>Icelake-Client</model>
a41c76
       <model usable='yes'>Haswell-noTSX-IBRS</model>
a41c76
       <model usable='yes'>Haswell-noTSX</model>
a41c76
@@ -88,6 +92,7 @@
a41c76
       <model usable='no'>EPYC</model>
a41c76
       <model usable='no'>Dhyana</model>
a41c76
       <model usable='yes'>Conroe</model>
a41c76
+      <model usable='no'>Cascadelake-Server-noTSX</model>
a41c76
       <model usable='no'>Cascadelake-Server</model>
a41c76
       <model usable='yes'>Broadwell-noTSX-IBRS</model>
a41c76
       <model usable='yes'>Broadwell-noTSX</model>
a41c76
-- 
a41c76
2.26.2
a41c76