Currently we have a cpu_map.xml file that contains all the features and
CPU models for all architectures in one place. I frequently find myself
wondering about the differences between CPU models, but it is hard to
compare them as the list of features is huge.
With this patch series we end up with a large set of small files, one
per named CPU model, along with one for the feature and vendor
definitions
cpu_map/index.xml
cpu_map/ppc64_POWER6.xml
cpu_map/ppc64_POWER7.xml
cpu_map/ppc64_POWER8.xml
cpu_map/ppc64_POWER9.xml
cpu_map/ppc64_POWERPC_e5500.xml
cpu_map/ppc64_POWERPC_e6500.xml
cpu_map/ppc64_vendors.xml
cpu_map/x86_486.xml
cpu_map/x86_athlon.xml
cpu_map/x86_Broadwell-IBRS.xml
cpu_map/x86_Broadwell-noTSX-IBRS.xml
cpu_map/x86_Broadwell-noTSX.xml
cpu_map/x86_Broadwell.xml
cpu_map/x86_Conroe.xml
cpu_map/x86_core2duo.xml
cpu_map/x86_coreduo.xml
cpu_map/x86_cpu64-rhel5.xml
cpu_map/x86_cpu64-rhel6.xml
cpu_map/x86_EPYC-IBRS.xml
cpu_map/x86_EPYC.xml
cpu_map/x86_features.xml
cpu_map/x86_Haswell-IBRS.xml
cpu_map/x86_Haswell-noTSX-IBRS.xml
cpu_map/x86_Haswell-noTSX.xml
cpu_map/x86_Haswell.xml
cpu_map/x86_IvyBridge-IBRS.xml
cpu_map/x86_IvyBridge.xml
cpu_map/x86_kvm32.xml
cpu_map/x86_kvm64.xml
cpu_map/x86_n270.xml
cpu_map/x86_Nehalem-IBRS.xml
cpu_map/x86_Nehalem.xml
cpu_map/x86_Opteron_G1.xml
cpu_map/x86_Opteron_G2.xml
cpu_map/x86_Opteron_G3.xml
cpu_map/x86_Opteron_G4.xml
cpu_map/x86_Opteron_G5.xml
cpu_map/x86_Penryn.xml
cpu_map/x86_pentium2.xml
cpu_map/x86_pentium3.xml
cpu_map/x86_pentiumpro.xml
cpu_map/x86_pentium.xml
cpu_map/x86_phenom.xml
cpu_map/x86_qemu32.xml
cpu_map/x86_qemu64.xml
cpu_map/x86_SandyBridge-IBRS.xml
cpu_map/x86_SandyBridge.xml
cpu_map/x86_Skylake-Client-IBRS.xml
cpu_map/x86_Skylake-Client.xml
cpu_map/x86_Skylake-Server-IBRS.xml
cpu_map/x86_Skylake-Server.xml
cpu_map/x86_vendors.xml
cpu_map/x86_Westmere-IBRS.xml
cpu_map/x86_Westmere.xml
The main cpu_map/index.xml file is now just a list of <include
filename="XXX"/>
statements to pull in the individual files
Now we can easily see the differences in each model:
$ diff cpu_map/x86_Broadwell.xml cpu_map/x86_Skylake-Client.xml
2,3c2,3
< <model name='Broadwell'>
< <signature family='6' model='61'/>
---
<model name='Skylake-Client'>
<signature family='6' model='94'/>
5a6
<feature name='abm'/>
8a10
<feature name='arat'/>
18a21
<feature name='f16c'/>
30a34
<feature name='mpx'/>
42a47
<feature name='rdrand'/>
56a62
<feature name='vme'/>
57a64
<feature name='xgetbv1'/>
58a66,67
<feature name='xsavec'/>
<feature name='xsaveopt'/>
Changed in v2:
- Moved all XML files into a new src/cpu_map/ directory
- Simplify the goto labels for error code paths.
- Code style fixes
Daniel P. Berrangé (8):
cpu: allow include files for CPU definition
cpu: fix cleanup when signature parsing fails
cpu: push more parsing logic into common code
cpu: simplify failure cleanup paths
cpu: move the CPU map data files into a src/cpu_map directory
cpu: split PPC64 map data into separate files
cpu: split x86 map data into separate files
xml: report the filename (if any) when parsing files
libvirt.spec.in | 2 +-
mingw-libvirt.spec.in | 4 +-
src/Makefile.am | 7 +-
src/cpu/cpu_map.c | 161 +-
src/cpu/cpu_map.h | 22 +-
src/cpu/cpu_map.xml | 2382 ----------------------
src/cpu/cpu_ppc64.c | 142 +-
src/cpu/cpu_x86.c | 255 +--
src/cpu_map/Makefile.inc.am | 61 +
src/cpu_map/index.xml | 75 +
src/cpu_map/ppc64_POWER6.xml | 6 +
src/cpu_map/ppc64_POWER7.xml | 7 +
src/cpu_map/ppc64_POWER8.xml | 8 +
src/cpu_map/ppc64_POWER9.xml | 6 +
src/cpu_map/ppc64_POWERPC_e5500.xml | 6 +
src/cpu_map/ppc64_POWERPC_e6500.xml | 6 +
src/cpu_map/ppc64_vendors.xml | 4 +
src/cpu_map/x86_486.xml | 7 +
src/cpu_map/x86_Broadwell-IBRS.xml | 61 +
src/cpu_map/x86_Broadwell-noTSX-IBRS.xml | 59 +
src/cpu_map/x86_Broadwell-noTSX.xml | 58 +
src/cpu_map/x86_Broadwell.xml | 60 +
src/cpu_map/x86_Conroe.xml | 33 +
src/cpu_map/x86_EPYC-IBRS.xml | 73 +
src/cpu_map/x86_EPYC.xml | 72 +
src/cpu_map/x86_Haswell-IBRS.xml | 57 +
src/cpu_map/x86_Haswell-noTSX-IBRS.xml | 55 +
src/cpu_map/x86_Haswell-noTSX.xml | 54 +
src/cpu_map/x86_Haswell.xml | 56 +
src/cpu_map/x86_IvyBridge-IBRS.xml | 51 +
src/cpu_map/x86_IvyBridge.xml | 50 +
src/cpu_map/x86_Nehalem-IBRS.xml | 38 +
src/cpu_map/x86_Nehalem.xml | 37 +
src/cpu_map/x86_Opteron_G1.xml | 31 +
src/cpu_map/x86_Opteron_G2.xml | 35 +
src/cpu_map/x86_Opteron_G3.xml | 40 +
src/cpu_map/x86_Opteron_G4.xml | 50 +
src/cpu_map/x86_Opteron_G5.xml | 53 +
src/cpu_map/x86_Penryn.xml | 35 +
src/cpu_map/x86_SandyBridge-IBRS.xml | 45 +
src/cpu_map/x86_SandyBridge.xml | 44 +
src/cpu_map/x86_Skylake-Client-IBRS.xml | 70 +
src/cpu_map/x86_Skylake-Client.xml | 69 +
src/cpu_map/x86_Skylake-Server-IBRS.xml | 77 +
src/cpu_map/x86_Skylake-Server.xml | 76 +
src/cpu_map/x86_Westmere-IBRS.xml | 39 +
src/cpu_map/x86_Westmere.xml | 38 +
src/cpu_map/x86_athlon.xml | 28 +
src/cpu_map/x86_core2duo.xml | 33 +
src/cpu_map/x86_coreduo.xml | 29 +
src/cpu_map/x86_cpu64-rhel5.xml | 29 +
src/cpu_map/x86_cpu64-rhel6.xml | 31 +
src/cpu_map/x86_features.xml | 440 ++++
src/cpu_map/x86_kvm32.xml | 26 +
src/cpu_map/x86_kvm64.xml | 30 +
src/cpu_map/x86_n270.xml | 30 +
src/cpu_map/x86_pentium.xml | 13 +
src/cpu_map/x86_pentium2.xml | 22 +
src/cpu_map/x86_pentium3.xml | 23 +
src/cpu_map/x86_pentiumpro.xml | 21 +
src/cpu_map/x86_phenom.xml | 36 +
src/cpu_map/x86_qemu32.xml | 22 +
src/cpu_map/x86_qemu64.xml | 40 +
src/cpu_map/x86_vendors.xml | 4 +
src/util/virxml.c | 3 +-
65 files changed, 2819 insertions(+), 2718 deletions(-)
delete mode 100644 src/cpu/cpu_map.xml
create mode 100644 src/cpu_map/Makefile.inc.am
create mode 100644 src/cpu_map/index.xml
create mode 100644 src/cpu_map/ppc64_POWER6.xml
create mode 100644 src/cpu_map/ppc64_POWER7.xml
create mode 100644 src/cpu_map/ppc64_POWER8.xml
create mode 100644 src/cpu_map/ppc64_POWER9.xml
create mode 100644 src/cpu_map/ppc64_POWERPC_e5500.xml
create mode 100644 src/cpu_map/ppc64_POWERPC_e6500.xml
create mode 100644 src/cpu_map/ppc64_vendors.xml
create mode 100644 src/cpu_map/x86_486.xml
create mode 100644 src/cpu_map/x86_Broadwell-IBRS.xml
create mode 100644 src/cpu_map/x86_Broadwell-noTSX-IBRS.xml
create mode 100644 src/cpu_map/x86_Broadwell-noTSX.xml
create mode 100644 src/cpu_map/x86_Broadwell.xml
create mode 100644 src/cpu_map/x86_Conroe.xml
create mode 100644 src/cpu_map/x86_EPYC-IBRS.xml
create mode 100644 src/cpu_map/x86_EPYC.xml
create mode 100644 src/cpu_map/x86_Haswell-IBRS.xml
create mode 100644 src/cpu_map/x86_Haswell-noTSX-IBRS.xml
create mode 100644 src/cpu_map/x86_Haswell-noTSX.xml
create mode 100644 src/cpu_map/x86_Haswell.xml
create mode 100644 src/cpu_map/x86_IvyBridge-IBRS.xml
create mode 100644 src/cpu_map/x86_IvyBridge.xml
create mode 100644 src/cpu_map/x86_Nehalem-IBRS.xml
create mode 100644 src/cpu_map/x86_Nehalem.xml
create mode 100644 src/cpu_map/x86_Opteron_G1.xml
create mode 100644 src/cpu_map/x86_Opteron_G2.xml
create mode 100644 src/cpu_map/x86_Opteron_G3.xml
create mode 100644 src/cpu_map/x86_Opteron_G4.xml
create mode 100644 src/cpu_map/x86_Opteron_G5.xml
create mode 100644 src/cpu_map/x86_Penryn.xml
create mode 100644 src/cpu_map/x86_SandyBridge-IBRS.xml
create mode 100644 src/cpu_map/x86_SandyBridge.xml
create mode 100644 src/cpu_map/x86_Skylake-Client-IBRS.xml
create mode 100644 src/cpu_map/x86_Skylake-Client.xml
create mode 100644 src/cpu_map/x86_Skylake-Server-IBRS.xml
create mode 100644 src/cpu_map/x86_Skylake-Server.xml
create mode 100644 src/cpu_map/x86_Westmere-IBRS.xml
create mode 100644 src/cpu_map/x86_Westmere.xml
create mode 100644 src/cpu_map/x86_athlon.xml
create mode 100644 src/cpu_map/x86_core2duo.xml
create mode 100644 src/cpu_map/x86_coreduo.xml
create mode 100644 src/cpu_map/x86_cpu64-rhel5.xml
create mode 100644 src/cpu_map/x86_cpu64-rhel6.xml
create mode 100644 src/cpu_map/x86_features.xml
create mode 100644 src/cpu_map/x86_kvm32.xml
create mode 100644 src/cpu_map/x86_kvm64.xml
create mode 100644 src/cpu_map/x86_n270.xml
create mode 100644 src/cpu_map/x86_pentium.xml
create mode 100644 src/cpu_map/x86_pentium2.xml
create mode 100644 src/cpu_map/x86_pentium3.xml
create mode 100644 src/cpu_map/x86_pentiumpro.xml
create mode 100644 src/cpu_map/x86_phenom.xml
create mode 100644 src/cpu_map/x86_qemu32.xml
create mode 100644 src/cpu_map/x86_qemu64.xml
create mode 100644 src/cpu_map/x86_vendors.xml
--
2.17.1