On Wed, Mar 18, 2020 at 11:13 AM Jiri Denemark <jdenemar@redhat.com> wrote:
Christian Ehrhardt (1):
  cpu_map: Add more -noTSX x86 CPU models

Jiri Denemark (3):
  cpu_map: Add <decode> element to x86 CPU model definitions
  cpu_x86: Honor CPU models' <decode> element
  cpu_map: Don't use new noTSX models for host-model CPUs


Hi,
for the Ubuntu bug that got all of this started I applied your patches, built in a PPA and tested the case.

#1 virsh capabilities
Before:
Broadwell-noTSX-IBRS + 33 features

After:
Skylake-Client-noTSX-IBRS +24 features

=> good



#2 virsh domcapabilities
Before:
Skylake-Client-IBRS + 16 features

After:
Skylake-Client-IBRS + 16 features (unchanged as intended for compatibility)

=> good



#3 usable models
Before:
only older types

After:
now added "Skylake-Client-noTSX-IBRS" which is a more modern IBRS type than the others I had

=> good


#4 use the new types

My system isn't new enough to get the others added, but that is fine as a test.
Also the type "Skylake-Server-noTSX-IBRS" worked, auto-disabling the avx features my chip is missing.

I started a guest with such a type through libvirt and it looks as expected:
  -cpu Skylake-Client-noTSX-IBRS

=> good

#5 and finally the adapted tests still ran fien at build time.

Thank you Jiri for the changes, please feel free to add my:

Reviewed-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Tested-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>


 src/cpu/cpu_x86.c                             | 65 ++++++++++++-
 src/cpu_map/Makefile.inc.am                   |  5 +
 src/cpu_map/index.xml                         |  5 +
 src/cpu_map/x86_486.xml                       |  1 +
 src/cpu_map/x86_Broadwell-IBRS.xml            |  1 +
 src/cpu_map/x86_Broadwell-noTSX-IBRS.xml      |  1 +
 src/cpu_map/x86_Broadwell-noTSX.xml           |  1 +
 src/cpu_map/x86_Broadwell.xml                 |  1 +
 src/cpu_map/x86_Cascadelake-Server-noTSX.xml  | 79 ++++++++++++++++
 src/cpu_map/x86_Cascadelake-Server.xml        |  1 +
 src/cpu_map/x86_Conroe.xml                    |  1 +
 src/cpu_map/x86_Dhyana.xml                    |  1 +
 src/cpu_map/x86_EPYC-IBPB.xml                 |  1 +
 src/cpu_map/x86_EPYC.xml                      |  1 +
 src/cpu_map/x86_Haswell-IBRS.xml              |  1 +
 src/cpu_map/x86_Haswell-noTSX-IBRS.xml        |  1 +
 src/cpu_map/x86_Haswell-noTSX.xml             |  1 +
 src/cpu_map/x86_Haswell.xml                   |  1 +
 src/cpu_map/x86_Icelake-Client-noTSX.xml      | 82 +++++++++++++++++
 src/cpu_map/x86_Icelake-Client.xml            |  1 +
 src/cpu_map/x86_Icelake-Server-noTSX.xml      | 91 +++++++++++++++++++
 src/cpu_map/x86_Icelake-Server.xml            |  1 +
 src/cpu_map/x86_IvyBridge-IBRS.xml            |  1 +
 src/cpu_map/x86_IvyBridge.xml                 |  1 +
 src/cpu_map/x86_Nehalem-IBRS.xml              |  1 +
 src/cpu_map/x86_Nehalem.xml                   |  1 +
 src/cpu_map/x86_Opteron_G1.xml                |  1 +
 src/cpu_map/x86_Opteron_G2.xml                |  1 +
 src/cpu_map/x86_Opteron_G3.xml                |  1 +
 src/cpu_map/x86_Opteron_G4.xml                |  1 +
 src/cpu_map/x86_Opteron_G5.xml                |  1 +
 src/cpu_map/x86_Penryn.xml                    |  1 +
 src/cpu_map/x86_SandyBridge-IBRS.xml          |  1 +
 src/cpu_map/x86_SandyBridge.xml               |  1 +
 src/cpu_map/x86_Skylake-Client-IBRS.xml       |  1 +
 src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml | 74 +++++++++++++++
 src/cpu_map/x86_Skylake-Client.xml            |  1 +
 src/cpu_map/x86_Skylake-Server-IBRS.xml       |  1 +
 src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml | 76 ++++++++++++++++
 src/cpu_map/x86_Skylake-Server.xml            |  1 +
 src/cpu_map/x86_Westmere-IBRS.xml             |  1 +
 src/cpu_map/x86_Westmere.xml                  |  1 +
 src/cpu_map/x86_athlon.xml                    |  1 +
 src/cpu_map/x86_core2duo.xml                  |  1 +
 src/cpu_map/x86_coreduo.xml                   |  1 +
 src/cpu_map/x86_cpu64-rhel5.xml               |  1 +
 src/cpu_map/x86_cpu64-rhel6.xml               |  1 +
 src/cpu_map/x86_kvm32.xml                     |  1 +
 src/cpu_map/x86_kvm64.xml                     |  1 +
 src/cpu_map/x86_n270.xml                      |  1 +
 src/cpu_map/x86_pentium.xml                   |  1 +
 src/cpu_map/x86_pentium2.xml                  |  1 +
 src/cpu_map/x86_pentium3.xml                  |  1 +
 src/cpu_map/x86_pentiumpro.xml                |  1 +
 src/cpu_map/x86_phenom.xml                    |  1 +
 src/cpu_map/x86_qemu32.xml                    |  1 +
 src/cpu_map/x86_qemu64.xml                    |  1 +
 .../x86_64-cpuid-Core-i7-8550U-host.xml       | 11 +--
 .../domaincapsdata/qemu_4.2.0-q35.x86_64.xml  |  5 +
 .../domaincapsdata/qemu_4.2.0-tcg.x86_64.xml  |  5 +
 tests/domaincapsdata/qemu_4.2.0.x86_64.xml    |  5 +
 .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml  |  5 +
 .../domaincapsdata/qemu_5.0.0-tcg.x86_64.xml  |  5 +
 tests/domaincapsdata/qemu_5.0.0.x86_64.xml    |  5 +
 64 files changed, 552 insertions(+), 15 deletions(-)
 create mode 100644 src/cpu_map/x86_Cascadelake-Server-noTSX.xml
 create mode 100644 src/cpu_map/x86_Icelake-Client-noTSX.xml
 create mode 100644 src/cpu_map/x86_Icelake-Server-noTSX.xml
 create mode 100644 src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
 create mode 100644 src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml

--
2.25.1



--
Christian Ehrhardt
Staff Engineer, Ubuntu Server
Canonical Ltd