docs: add a table showing x86-64 ABI compatibility levels

It is useful to know which CPUs satisfy each x86-64 ABI
compatibility level, when dealing with guest OS that require
something newer than the baseline ABI.

These ABI levels are defined in:

  https://gitlab.com/x86-psABIs/x86-64-ABI/

and supported by GCC, Clang, glibc and more.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20210607135843.196595-2-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2021-06-07 14:58:40 +01:00 committed by Eduardo Habkost
parent d44df1d73c
commit 38dec0ef76
3 changed files with 90 additions and 1 deletions

View File

@ -328,7 +328,7 @@ F: tests/tcg/i386/
F: tests/tcg/x86_64/
F: hw/i386/
F: disas/i386.c
F: docs/system/cpu-models-x86.rst.inc
F: docs/system/cpu-models-x86*
T: git https://gitlab.com/ehabkost/qemu.git x86-next
Xtensa TCG CPUs

View File

@ -0,0 +1,67 @@
Model,baseline,v2,v3,v4
486-v1,,,,
Broadwell-v1,✅,✅,✅,
Broadwell-v2,✅,✅,✅,
Broadwell-v3,✅,✅,✅,
Broadwell-v4,✅,✅,✅,
Cascadelake-Server-v1,✅,✅,✅,✅
Cascadelake-Server-v2,✅,✅,✅,✅
Cascadelake-Server-v3,✅,✅,✅,✅
Cascadelake-Server-v4,✅,✅,✅,✅
Conroe-v1,✅,,,
Cooperlake-v1,✅,✅,✅,✅
Denverton-v1,✅,✅,,
Denverton-v2,✅,✅,,
Dhyana-v1,✅,✅,✅,
EPYC-Milan-v1,✅,✅,✅,
EPYC-Rome-v1,✅,✅,✅,
EPYC-Rome-v2,✅,✅,✅,
EPYC-v1,✅,✅,✅,
EPYC-v2,✅,✅,✅,
EPYC-v3,✅,✅,✅,
Haswell-v1,✅,✅,✅,
Haswell-v2,✅,✅,✅,
Haswell-v3,✅,✅,✅,
Haswell-v4,✅,✅,✅,
Icelake-Client-v1,✅,✅,✅,
Icelake-Client-v2,✅,✅,✅,
Icelake-Server-v1,✅,✅,✅,✅
Icelake-Server-v2,✅,✅,✅,✅
Icelake-Server-v3,✅,✅,✅,✅
Icelake-Server-v4,✅,✅,✅,✅
IvyBridge-v1,✅,✅,,
IvyBridge-v2,✅,✅,,
KnightsMill-v1,✅,✅,✅,
Nehalem-v1,✅,✅,,
Nehalem-v2,✅,✅,,
Opteron_G1-v1,✅,,,
Opteron_G2-v1,✅,,,
Opteron_G3-v1,✅,,,
Opteron_G4-v1,✅,✅,,
Opteron_G5-v1,✅,✅,,
Penryn-v1,✅,,,
SandyBridge-v1,✅,✅,,
SandyBridge-v2,✅,✅,,
Skylake-Client-v1,✅,✅,✅,
Skylake-Client-v2,✅,✅,✅,
Skylake-Client-v3,✅,✅,✅,
Skylake-Server-v1,✅,✅,✅,✅
Skylake-Server-v2,✅,✅,✅,✅
Skylake-Server-v3,✅,✅,✅,✅
Skylake-Server-v4,✅,✅,✅,✅
Snowridge-v1,✅,✅,,
Snowridge-v2,✅,✅,,
Westmere-v1,✅,✅,,
Westmere-v2,✅,✅,,
athlon-v1,,,,
core2duo-v1,✅,,,
coreduo-v1,,,,
kvm32-v1,,,,
kvm64-v1,✅,,,
n270-v1,,,,
pentium-v1,,,,
pentium2-v1,,,,
pentium3-v1,,,,
phenom-v1,✅,,,
qemu32-v1,,,,
qemu64-v1,✅,,,
1 Model baseline v2 v3 v4
2 486-v1
3 Broadwell-v1
4 Broadwell-v2
5 Broadwell-v3
6 Broadwell-v4
7 Cascadelake-Server-v1
8 Cascadelake-Server-v2
9 Cascadelake-Server-v3
10 Cascadelake-Server-v4
11 Conroe-v1
12 Cooperlake-v1
13 Denverton-v1
14 Denverton-v2
15 Dhyana-v1
16 EPYC-Milan-v1
17 EPYC-Rome-v1
18 EPYC-Rome-v2
19 EPYC-v1
20 EPYC-v2
21 EPYC-v3
22 Haswell-v1
23 Haswell-v2
24 Haswell-v3
25 Haswell-v4
26 Icelake-Client-v1
27 Icelake-Client-v2
28 Icelake-Server-v1
29 Icelake-Server-v2
30 Icelake-Server-v3
31 Icelake-Server-v4
32 IvyBridge-v1
33 IvyBridge-v2
34 KnightsMill-v1
35 Nehalem-v1
36 Nehalem-v2
37 Opteron_G1-v1
38 Opteron_G2-v1
39 Opteron_G3-v1
40 Opteron_G4-v1
41 Opteron_G5-v1
42 Penryn-v1
43 SandyBridge-v1
44 SandyBridge-v2
45 Skylake-Client-v1
46 Skylake-Client-v2
47 Skylake-Client-v3
48 Skylake-Server-v1
49 Skylake-Server-v2
50 Skylake-Server-v3
51 Skylake-Server-v4
52 Snowridge-v1
53 Snowridge-v2
54 Westmere-v1
55 Westmere-v2
56 athlon-v1
57 core2duo-v1
58 coreduo-v1
59 kvm32-v1
60 kvm64-v1
61 n270-v1
62 pentium-v1
63 pentium2-v1
64 pentium3-v1
65 phenom-v1
66 qemu32-v1
67 qemu64-v1

View File

@ -39,6 +39,28 @@ CPU, as they would with "Host passthrough", but gives much of the
benefit of passthrough, while making live migration safe.
ABI compatibility levels for CPU models
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The x86_64 architecture has a number of `ABI compatibility levels`_
defined. Traditionally most operating systems and toolchains would
only target the original baseline ABI. It is expected that in
future OS and toolchains are likely to target newer ABIs. The
table that follows illustrates which ABI compatibility levels
can be satisfied by the QEMU CPU models. Note that the table only
lists the long term stable CPU model versions (eg Haswell-v4).
In addition to whats listed, there are also many CPU model
aliases which resolve to a different CPU model version,
depending on the machine type is in use.
.. _ABI compatibility levels: https://gitlab.com/x86-psABIs/x86-64-ABI/
.. csv-table:: x86-64 ABI compatibility levels
:file: cpu-models-x86-abi.csv
:widths: 40,15,15,15,15
:header-rows: 2
Preferred CPU models for Intel x86 hosts
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^