CPU signatures in the cpu_map serve as a hint for CPUID to CPU model
matching algorithm. If the CPU signatures matches any CPU model in the
cpu_map, this model will be the preferred one.
This works out well and solved several mismatches, but in real world
CPUs which should match a single CPU model may be produced with several
different signatures. For example, low voltage Broadwell CPUs for
laptops and Broadwell CPUs for servers differ in CPU model numbers while
we should detect them all as Broadwell CPU model.
This patch adds support for storing several signatures for a single CPU
model to make this hint useful for more CPUs. Later commits will provide
additional signatures for existing CPU models, which will correct some
results in our CPU test suite.
The list of signatures corresponding to each CPU model were generated by
consulting the following sites:
https://en.wikichip.org/wiki/intel/cpuid
http://www.cpu-world.com/cgi-bin/CPUID.pl
https://ark.intel.com/content/www/us/en/ark.html
Jiri Denemark (30):
cputest: Make sure generated files pass syntax-check
cputest: Add data for Intel(R) Xeon(R) CPU E5-2630 v4
cputest: Add data for Intel(R) Core(TM) i7-7600U
cputest: Add data for Intel(R) Xeon(R) CPU E7540
cputest: Add data for Intel(R) Xeon(R) CPU E5-2650
cputest: Add data for Intel(R) Core(TM) i7-8700
cpu_x86: Separate ancestor model parsing from x86ModelParse
cpu_x86: Separate signature parsing from x86ModelParse
cpu_x86: Separate vendor parsing from x86ModelParse
cpu_x86: Separate feature list parsing from x86ModelParse
cpu_x86: Make sure CPU model names are unique in cpu_map
cpu_x86: Add x86ModelCopySignatures helper
cpu_x86: Store CPU signature in an array
cpu_x86: Allow multiple signatures for a CPU model
cpu_x86: Log decoded CPU model and signatures
qemu_capabilities: Inroduce virQEMUCapsGetCPUModelX86Data
qemu_capabilities: Introduce virQEMUCapsGetCPUModelInfo
qemu_capabilities: Use virQEMUCapsGetCPUModelInfo
cpu_x86: Add virCPUx86DataGetSignature for tests
cpu_map: Add hex representation of signatures
cputest: Test CPU signatures
cpu_map: Add more signatures for Conroe CPU model
cpu_map: Add more signatures for Penryn CPU model
cpu_map: Add more signatures for Nehalem CPU models
cpu_map: Add more signatures for Westmere CPU model
cpu_map: Add more signatures for SandyBridge CPU models
cpu_map: Add more signatures for IvyBridge CPU models
cpu_map: Add more signatures for Haswell CPU models
cpu_map: Add more signatures for Broadwell CPU models
cpu_map: Add more signatures for Skylake-Client CPU models
src/cpu/cpu_x86.c | 357 ++++--
src/cpu/cpu_x86.h | 5 +
src/cpu_map/x86_Broadwell-IBRS.xml | 5 +-
src/cpu_map/x86_Broadwell-noTSX-IBRS.xml | 5 +-
src/cpu_map/x86_Broadwell-noTSX.xml | 5 +-
src/cpu_map/x86_Broadwell.xml | 5 +-
src/cpu_map/x86_Conroe.xml | 3 +-
src/cpu_map/x86_EPYC-IBRS.xml | 2 +-
src/cpu_map/x86_EPYC.xml | 2 +-
src/cpu_map/x86_Haswell-IBRS.xml | 5 +-
src/cpu_map/x86_Haswell-noTSX-IBRS.xml | 5 +-
src/cpu_map/x86_Haswell-noTSX.xml | 5 +-
src/cpu_map/x86_Haswell.xml | 5 +-
src/cpu_map/x86_Icelake-Client.xml | 2 +-
src/cpu_map/x86_Icelake-Server.xml | 2 +-
src/cpu_map/x86_IvyBridge-IBRS.xml | 3 +-
src/cpu_map/x86_IvyBridge.xml | 3 +-
src/cpu_map/x86_Nehalem-IBRS.xml | 5 +-
src/cpu_map/x86_Nehalem.xml | 5 +-
src/cpu_map/x86_Opteron_G1.xml | 2 +-
src/cpu_map/x86_Opteron_G2.xml | 2 +-
src/cpu_map/x86_Opteron_G3.xml | 2 +-
src/cpu_map/x86_Opteron_G4.xml | 2 +-
src/cpu_map/x86_Opteron_G5.xml | 2 +-
src/cpu_map/x86_Penryn.xml | 3 +-
src/cpu_map/x86_SandyBridge-IBRS.xml | 3 +-
src/cpu_map/x86_SandyBridge.xml | 3 +-
src/cpu_map/x86_Skylake-Client-IBRS.xml | 7 +-
src/cpu_map/x86_Skylake-Client.xml | 7 +-
src/cpu_map/x86_Skylake-Server-IBRS.xml | 2 +-
src/cpu_map/x86_Skylake-Server.xml | 2 +-
src/cpu_map/x86_Westmere-IBRS.xml | 2 +-
src/cpu_map/x86_Westmere.xml | 4 +-
src/libvirt_private.syms | 1 +
src/qemu/qemu_capabilities.c | 91 +-
src/qemu/qemu_capspriv.h | 8 +
tests/cputest.c | 91 ++
tests/cputestdata/cpu-reformat.py | 2 +-
tests/cputestdata/x86_64-cpuid-A10-5800K.sig | 4 +
tests/cputestdata/x86_64-cpuid-Atom-D510.sig | 4 +
tests/cputestdata/x86_64-cpuid-Atom-N450.sig | 4 +
.../cputestdata/x86_64-cpuid-Core-i5-2500.sig | 4 +
.../x86_64-cpuid-Core-i5-2540M.sig | 4 +
.../x86_64-cpuid-Core-i5-4670T.sig | 4 +
.../x86_64-cpuid-Core-i5-650-json.xml | 9 +-
.../cputestdata/x86_64-cpuid-Core-i5-650.sig | 4 +
.../cputestdata/x86_64-cpuid-Core-i5-6600.sig | 4 +
.../x86_64-cpuid-Core-i7-2600-xsaveopt.sig | 4 +
.../cputestdata/x86_64-cpuid-Core-i7-2600.sig | 4 +
.../x86_64-cpuid-Core-i7-3520M.sig | 4 +
.../x86_64-cpuid-Core-i7-3740QM.sig | 4 +
.../cputestdata/x86_64-cpuid-Core-i7-3770.sig | 4 +
.../x86_64-cpuid-Core-i7-4510U.sig | 4 +
.../x86_64-cpuid-Core-i7-4600U.sig | 4 +
.../x86_64-cpuid-Core-i7-5600U-arat.sig | 4 +
.../x86_64-cpuid-Core-i7-5600U-ibrs.sig | 4 +
.../x86_64-cpuid-Core-i7-5600U.sig | 4 +
.../x86_64-cpuid-Core-i7-7600U-disabled.xml | 6 +
.../x86_64-cpuid-Core-i7-7600U-enabled.xml | 8 +
.../x86_64-cpuid-Core-i7-7600U-guest.xml | 28 +
.../x86_64-cpuid-Core-i7-7600U-host.xml | 29 +
.../x86_64-cpuid-Core-i7-7600U-json.xml | 13 +
.../x86_64-cpuid-Core-i7-7600U.json | 755 +++++++++++
.../x86_64-cpuid-Core-i7-7600U.sig | 4 +
.../x86_64-cpuid-Core-i7-7600U.xml | 47 +
.../cputestdata/x86_64-cpuid-Core-i7-7700.sig | 4 +
.../x86_64-cpuid-Core-i7-8700-disabled.xml | 6 +
.../x86_64-cpuid-Core-i7-8700-enabled.xml | 8 +
.../x86_64-cpuid-Core-i7-8700-guest.xml | 28 +
.../x86_64-cpuid-Core-i7-8700-host.xml | 29 +
.../x86_64-cpuid-Core-i7-8700-json.xml | 12 +
.../x86_64-cpuid-Core-i7-8700.json | 650 ++++++++++
.../cputestdata/x86_64-cpuid-Core-i7-8700.sig | 4 +
.../cputestdata/x86_64-cpuid-Core-i7-8700.xml | 47 +
.../cputestdata/x86_64-cpuid-Core2-E6850.sig | 4 +
.../cputestdata/x86_64-cpuid-Core2-Q9500.sig | 4 +
.../x86_64-cpuid-EPYC-7601-32-Core-ibpb.sig | 4 +
.../x86_64-cpuid-EPYC-7601-32-Core.sig | 4 +
tests/cputestdata/x86_64-cpuid-FX-8150.sig | 4 +
.../cputestdata/x86_64-cpuid-Opteron-1352.sig | 4 +
.../cputestdata/x86_64-cpuid-Opteron-2350.sig | 4 +
.../cputestdata/x86_64-cpuid-Opteron-6234.sig | 4 +
.../cputestdata/x86_64-cpuid-Opteron-6282.sig | 4 +
.../x86_64-cpuid-Pentium-P6100-guest.xml | 10 +-
.../x86_64-cpuid-Pentium-P6100.sig | 4 +
tests/cputestdata/x86_64-cpuid-Phenom-B95.sig | 4 +
.../x86_64-cpuid-Ryzen-7-1800X-Eight-Core.sig | 4 +
tests/cputestdata/x86_64-cpuid-Xeon-5110.sig | 4 +
.../x86_64-cpuid-Xeon-E3-1245-v5.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2609-v3.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2623-v4-guest.xml | 11 +-
.../x86_64-cpuid-Xeon-E5-2623-v4-json.xml | 11 +-
.../x86_64-cpuid-Xeon-E5-2623-v4.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2630-v3.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2630-v4-disabled.xml | 7 +
.../x86_64-cpuid-Xeon-E5-2630-v4-enabled.xml | 8 +
.../x86_64-cpuid-Xeon-E5-2630-v4-guest.xml | 34 +
.../x86_64-cpuid-Xeon-E5-2630-v4-host.xml | 35 +
.../x86_64-cpuid-Xeon-E5-2630-v4-json.xml | 14 +
.../x86_64-cpuid-Xeon-E5-2630-v4.json | 596 +++++++++
.../x86_64-cpuid-Xeon-E5-2630-v4.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2630-v4.xml | 43 +
.../x86_64-cpuid-Xeon-E5-2650-disabled.xml | 5 +
.../x86_64-cpuid-Xeon-E5-2650-enabled.xml | 8 +
.../x86_64-cpuid-Xeon-E5-2650-guest.xml | 29 +
.../x86_64-cpuid-Xeon-E5-2650-host.xml | 30 +
.../x86_64-cpuid-Xeon-E5-2650-json.xml | 14 +
.../x86_64-cpuid-Xeon-E5-2650-v3.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2650-v4-guest.xml | 11 +-
.../x86_64-cpuid-Xeon-E5-2650-v4-json.xml | 11 +-
.../x86_64-cpuid-Xeon-E5-2650-v4.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2650.json | 931 ++++++++++++++
.../cputestdata/x86_64-cpuid-Xeon-E5-2650.sig | 4 +
.../cputestdata/x86_64-cpuid-Xeon-E5-2650.xml | 34 +
.../x86_64-cpuid-Xeon-E7-4820-guest.xml | 8 +-
.../x86_64-cpuid-Xeon-E7-4820-json.xml | 8 +-
.../cputestdata/x86_64-cpuid-Xeon-E7-4820.sig | 4 +
.../x86_64-cpuid-Xeon-E7-4830-json.xml | 9 +-
.../cputestdata/x86_64-cpuid-Xeon-E7-4830.sig | 4 +
.../x86_64-cpuid-Xeon-E7-8890-v3.sig | 4 +
.../x86_64-cpuid-Xeon-E7540-disabled.xml | 5 +
.../x86_64-cpuid-Xeon-E7540-enabled.xml | 7 +
.../x86_64-cpuid-Xeon-E7540-guest.xml | 25 +
.../x86_64-cpuid-Xeon-E7540-host.xml | 26 +
.../x86_64-cpuid-Xeon-E7540-json.xml | 14 +
.../cputestdata/x86_64-cpuid-Xeon-E7540.json | 1117 +++++++++++++++++
tests/cputestdata/x86_64-cpuid-Xeon-E7540.sig | 4 +
tests/cputestdata/x86_64-cpuid-Xeon-E7540.xml | 30 +
.../x86_64-cpuid-Xeon-Gold-5115.sig | 4 +
.../x86_64-cpuid-Xeon-Gold-6148.sig | 4 +
tests/cputestdata/x86_64-cpuid-Xeon-W3520.sig | 4 +
tests/cputestdata/x86_64-cpuid-Xeon-X5460.sig | 4 +
132 files changed, 5425 insertions(+), 206 deletions(-)
create mode 100644 tests/cputestdata/x86_64-cpuid-A10-5800K.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Atom-D510.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Atom-N450.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i5-2500.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i5-2540M.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i5-4670T.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i5-650.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i5-6600.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-3520M.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-3740QM.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-3770.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-4510U.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-4600U.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-5600U-arat.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-5600U-ibrs.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-5600U.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-7600U-disabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-7600U-enabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-7600U-guest.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-7600U-host.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-7600U.json
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-7600U.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-7600U.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-7700.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-8700-disabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-8700-enabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-8700-guest.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-8700-host.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-8700-json.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-8700.json
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-8700.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-8700.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Core2-E6850.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core2-Q9500.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-FX-8150.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Opteron-1352.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Opteron-2350.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Opteron-6234.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Opteron-6282.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Pentium-P6100.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Phenom-B95.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-5110.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2609-v3.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2623-v4.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v3.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v4-disabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v4-enabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v4-guest.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v4-host.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v4-json.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v4.json
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v4.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v4.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-disabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-enabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-guest.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-host.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-json.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-v3.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-v4.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650.json
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4820.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-8890-v3.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7540-disabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7540-enabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7540-guest.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7540-host.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7540-json.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7540.json
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7540.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7540.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-W3520.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-X5460.sig
--
2.21.0