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