...
...
37
- integrated all suggestions from Daniel and Peter (thanks for all your comments)
37
- integrated all suggestions from Daniel and Peter (thanks for all your comments)
38
- Note: build environment keeps mentioning windows-arm64 because we solved the
38
- Note: build environment keeps mentioning windows-arm64 because we solved the
39
issue with gcc_struct attribute. The related series will be merged before this
39
issue with gcc_struct attribute. The related series will be merged before this
40
documentation.
40
documentation.
41
41
42
v3:
43
- added a comment about git-publish asked by Daniel.
44
42
Pierrick Bouvier (6):
45
Pierrick Bouvier (6):
43
docs/devel: remove dead video link for sourcehut submit process
46
docs/devel: remove dead video link for sourcehut submit process
44
docs/devel: add git-publish for patch submitting
47
docs/devel: add git-publish for patch submitting
45
docs/devel: add b4 for patch retrieval
48
docs/devel: add b4 for patch retrieval
46
docs/devel: add information on how to setup build environments
49
docs/devel: add information on how to setup build environments
...
...
58
docs/devel/index-internals.rst | 2 +
61
docs/devel/index-internals.rst | 2 +
59
docs/devel/index.rst | 1 +
62
docs/devel/index.rst | 1 +
60
docs/devel/migration/main.rst | 2 +
63
docs/devel/migration/main.rst | 2 +
61
docs/devel/multi-thread-tcg.rst | 2 +
64
docs/devel/multi-thread-tcg.rst | 2 +
62
docs/devel/qapi-code-gen.rst | 1 +
65
docs/devel/qapi-code-gen.rst | 1 +
63
docs/devel/submitting-a-patch.rst | 34 ++-
66
docs/devel/submitting-a-patch.rst | 40 +++-
64
docs/devel/testing/main.rst | 9 +-
67
docs/devel/testing/main.rst | 9 +-
65
docs/devel/testing/qtest.rst | 2 +
68
docs/devel/testing/qtest.rst | 2 +
66
docs/glossary.rst | 280 +++++++++++++++++++++++++
69
docs/glossary.rst | 280 +++++++++++++++++++++++++
67
docs/index.rst | 3 +
70
docs/index.rst | 3 +
68
docs/interop/qemu-ga.rst | 2 +
71
docs/interop/qemu-ga.rst | 2 +
69
docs/system/arm/virt.rst | 2 +
72
docs/system/arm/virt.rst | 2 +
70
docs/system/images.rst | 2 +
73
docs/system/images.rst | 2 +
71
docs/system/qemu-block-drivers.rst.inc | 2 +
74
docs/system/qemu-block-drivers.rst.inc | 2 +
72
docs/tools/qemu-nbd.rst | 2 +
75
docs/tools/qemu-nbd.rst | 2 +
73
docs/tools/qemu-storage-daemon.rst | 2 +
76
docs/tools/qemu-storage-daemon.rst | 2 +
74
docs/user/main.rst | 6 +
77
docs/user/main.rst | 6 +
75
25 files changed, 697 insertions(+), 6 deletions(-)
78
25 files changed, 703 insertions(+), 6 deletions(-)
76
create mode 100644 docs/devel/build-environment.rst
79
create mode 100644 docs/devel/build-environment.rst
77
create mode 100644 docs/devel/codebase.rst
80
create mode 100644 docs/devel/codebase.rst
78
create mode 100644 docs/glossary.rst
81
create mode 100644 docs/glossary.rst
79
82
80
--
83
--
81
2.39.5
84
2.39.5
diff view generated by jsdifflib
1
Reviewed-by: Thomas Huth <thuth@redhat.com>
1
Reviewed-by: Thomas Huth <thuth@redhat.com>
2
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
2
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
3
---
3
---
4
docs/devel/submitting-a-patch.rst | 5 +----
4
docs/devel/submitting-a-patch.rst | 5 +----
5
1 file changed, 1 insertion(+), 4 deletions(-)
5
1 file changed, 1 insertion(+), 4 deletions(-)
6
6
7
diff --git a/docs/devel/submitting-a-patch.rst b/docs/devel/submitting-a-patch.rst
7
diff --git a/docs/devel/submitting-a-patch.rst b/docs/devel/submitting-a-patch.rst
8
index XXXXXXX..XXXXXXX 100644
8
index XXXXXXX..XXXXXXX 100644
9
--- a/docs/devel/submitting-a-patch.rst
9
--- a/docs/devel/submitting-a-patch.rst
10
+++ b/docs/devel/submitting-a-patch.rst
10
+++ b/docs/devel/submitting-a-patch.rst
11
@@ -XXX,XX +XXX,XX @@ patches to the QEMU mailing list by following these steps:
11
@@ -XXX,XX +XXX,XX @@ patches to the QEMU mailing list by following these steps:
12
#. Send your patches to the QEMU mailing list using the web-based
12
#. Send your patches to the QEMU mailing list using the web-based
13
``git-send-email`` UI at https://git.sr.ht/~USERNAME/qemu/send-email
13
``git-send-email`` UI at https://git.sr.ht/~USERNAME/qemu/send-email
14
14
15
-`This video
15
-`This video
16
-<https://spacepub.space/videos/watch/ad258d23-0ac6-488c-83fc-2bacf578de3a>`__
16
-<https://spacepub.space/videos/watch/ad258d23-0ac6-488c-83fc-2bacf578de3a>`__
17
-shows the web-based ``git-send-email`` workflow. Documentation is
17
-shows the web-based ``git-send-email`` workflow. Documentation is
18
-available `here
18
-available `here
19
+Documentation for sourcehut is available `here
19
+Documentation for sourcehut is available `here
20
<https://man.sr.ht/git.sr.ht/#sending-patches-upstream>`__.
20
<https://man.sr.ht/git.sr.ht/#sending-patches-upstream>`__.
21
21
22
.. _cc_the_relevant_maintainer:
22
.. _cc_the_relevant_maintainer:
23
--
23
--
24
2.39.5
24
2.39.5
diff view generated by jsdifflib
1
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
1
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
2
---
2
---
3
docs/devel/submitting-a-patch.rst | 19 +++++++++++++++++++
3
docs/devel/submitting-a-patch.rst | 25 +++++++++++++++++++++++++
4
1 file changed, 19 insertions(+)
4
1 file changed, 25 insertions(+)
5
5
6
diff --git a/docs/devel/submitting-a-patch.rst b/docs/devel/submitting-a-patch.rst
6
diff --git a/docs/devel/submitting-a-patch.rst b/docs/devel/submitting-a-patch.rst
7
index XXXXXXX..XXXXXXX 100644
7
index XXXXXXX..XXXXXXX 100644
8
--- a/docs/devel/submitting-a-patch.rst
8
--- a/docs/devel/submitting-a-patch.rst
9
+++ b/docs/devel/submitting-a-patch.rst
9
+++ b/docs/devel/submitting-a-patch.rst
...
...
28
+ $ git publish # will send a v2
28
+ $ git publish # will send a v2
29
+
29
+
30
+Each time you post a series, git-publish will create a local tag with the format
30
+Each time you post a series, git-publish will create a local tag with the format
31
+``<branchname>-v<version>`` to record the patch series.
31
+``<branchname>-v<version>`` to record the patch series.
32
+
32
+
33
+When sending patch emails, 'git publish' will consult the output of
34
+'scripts/get_maintainers.pl' and automatically CC anyone listed as maintainers
35
+of the affected code. Generally you should accept the suggested CC list, but
36
+there may sometimes be scenarios where it is appropriate to cut it down (eg on
37
+certain large tree-wide cleanups), or augment it with other interested people.
38
+
33
.. _if_you_cannot_send_patch_emails:
39
.. _if_you_cannot_send_patch_emails:
34
40
35
If you cannot send patch emails
41
If you cannot send patch emails
36
--
42
--
37
2.39.5
43
2.39.5
diff view generated by jsdifflib
1
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
1
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
2
---
2
---
3
docs/devel/submitting-a-patch.rst | 10 ++++++++++
3
docs/devel/submitting-a-patch.rst | 10 ++++++++++
4
1 file changed, 10 insertions(+)
4
1 file changed, 10 insertions(+)
5
5
6
diff --git a/docs/devel/submitting-a-patch.rst b/docs/devel/submitting-a-patch.rst
6
diff --git a/docs/devel/submitting-a-patch.rst b/docs/devel/submitting-a-patch.rst
7
index XXXXXXX..XXXXXXX 100644
7
index XXXXXXX..XXXXXXX 100644
8
--- a/docs/devel/submitting-a-patch.rst
8
--- a/docs/devel/submitting-a-patch.rst
9
+++ b/docs/devel/submitting-a-patch.rst
9
+++ b/docs/devel/submitting-a-patch.rst
10
@@ -XXX,XX +XXX,XX @@ For more details on how QEMU's stable process works, refer to the
10
@@ -XXX,XX +XXX,XX @@ For more details on how QEMU's stable process works, refer to the
11
11
12
.. _participating_in_code_review:
12
.. _participating_in_code_review:
13
13
14
+Retrieve an existing series
14
+Retrieve an existing series
15
+---------------------------
15
+---------------------------
16
+
16
+
17
+If you want to apply an existing series on top of your tree, you can simply use
17
+If you want to apply an existing series on top of your tree, you can simply use
18
+`b4 <https://github.com/mricon/b4>`__.
18
+`b4 <https://github.com/mricon/b4>`__.
19
+
19
+
20
+::
20
+::
21
+
21
+
22
+ b4 shazam $msg-id
22
+ b4 shazam $msg-id
23
+
23
+
24
Participating in Code Review
24
Participating in Code Review
25
----------------------------
25
----------------------------
26
26
27
--
27
--
28
2.39.5
28
2.39.5
diff view generated by jsdifflib
1
MacOS and Linux are straightforward, but Windows needs a bit more
1
MacOS and Linux are straightforward, but Windows needs a bit more
2
details.
2
details.
3
3
4
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
4
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
5
---
5
---
6
docs/about/build-platforms.rst | 4 +-
6
docs/about/build-platforms.rst | 4 +-
7
docs/devel/build-environment.rst | 118 +++++++++++++++++++++++++++++++
7
docs/devel/build-environment.rst | 118 +++++++++++++++++++++++++++++++
8
docs/devel/index-build.rst | 1 +
8
docs/devel/index-build.rst | 1 +
9
3 files changed, 122 insertions(+), 1 deletion(-)
9
3 files changed, 122 insertions(+), 1 deletion(-)
10
create mode 100644 docs/devel/build-environment.rst
10
create mode 100644 docs/devel/build-environment.rst
11
11
12
diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst
12
diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst
13
index XXXXXXX..XXXXXXX 100644
13
index XXXXXXX..XXXXXXX 100644
14
--- a/docs/about/build-platforms.rst
14
--- a/docs/about/build-platforms.rst
15
+++ b/docs/about/build-platforms.rst
15
+++ b/docs/about/build-platforms.rst
16
@@ -XXX,XX +XXX,XX @@ The `Repology`_ site is a useful resource to identify
16
@@ -XXX,XX +XXX,XX @@ The `Repology`_ site is a useful resource to identify
17
currently shipped versions of software in various operating systems,
17
currently shipped versions of software in various operating systems,
18
though it does not cover all distros listed below.
18
though it does not cover all distros listed below.
19
19
20
+You can find how to install build dependencies for different systems on the
20
+You can find how to install build dependencies for different systems on the
21
+:ref:`setup-build-env` page.
21
+:ref:`setup-build-env` page.
22
+
22
+
23
Supported host architectures
23
Supported host architectures
24
----------------------------
24
----------------------------
25
25
26
@@ -XXX,XX +XXX,XX @@ Optional build dependencies
26
@@ -XXX,XX +XXX,XX @@ Optional build dependencies
27
cross compilation using ``docker`` or ``podman``, or to use pre-built
27
cross compilation using ``docker`` or ``podman``, or to use pre-built
28
binaries distributed with QEMU.
28
binaries distributed with QEMU.
29
29
30
-
30
-
31
Windows
31
Windows
32
-------
32
-------
33
33
34
diff --git a/docs/devel/build-environment.rst b/docs/devel/build-environment.rst
34
diff --git a/docs/devel/build-environment.rst b/docs/devel/build-environment.rst
35
new file mode 100644
35
new file mode 100644
36
index XXXXXXX..XXXXXXX
36
index XXXXXXX..XXXXXXX
37
--- /dev/null
37
--- /dev/null
38
+++ b/docs/devel/build-environment.rst
38
+++ b/docs/devel/build-environment.rst
39
@@ -XXX,XX +XXX,XX @@
39
@@ -XXX,XX +XXX,XX @@
40
+
40
+
41
+.. _setup-build-env:
41
+.. _setup-build-env:
42
+
42
+
43
+Setup build environment
43
+Setup build environment
44
+=======================
44
+=======================
45
+
45
+
46
+QEMU uses a lot of dependencies on the host system. glib2 is used everywhere in
46
+QEMU uses a lot of dependencies on the host system. glib2 is used everywhere in
47
+the code base, and most of the other dependencies are optional.
47
+the code base, and most of the other dependencies are optional.
48
+
48
+
49
+We present here simple instructions to enable native builds on most popular
49
+We present here simple instructions to enable native builds on most popular
50
+systems.
50
+systems.
51
+
51
+
52
+You can find additional instructions on `QEMU wiki <https://wiki.qemu.org/>`_:
52
+You can find additional instructions on `QEMU wiki <https://wiki.qemu.org/>`_:
53
+
53
+
54
+- `Linux <https://wiki.qemu.org/Hosts/Linux>`_
54
+- `Linux <https://wiki.qemu.org/Hosts/Linux>`_
55
+- `MacOS <https://wiki.qemu.org/Hosts/Mac>`_
55
+- `MacOS <https://wiki.qemu.org/Hosts/Mac>`_
56
+- `Windows <https://wiki.qemu.org/Hosts/W32>`_
56
+- `Windows <https://wiki.qemu.org/Hosts/W32>`_
57
+- `BSD <https://wiki.qemu.org/Hosts/BSD>`_
57
+- `BSD <https://wiki.qemu.org/Hosts/BSD>`_
58
+
58
+
59
+Note: Installing dependencies using your package manager build dependencies may
59
+Note: Installing dependencies using your package manager build dependencies may
60
+miss out on deps that have been newly introduced in qemu.git. In more, it misses
60
+miss out on deps that have been newly introduced in qemu.git. In more, it misses
61
+deps the distribution has decided to exclude.
61
+deps the distribution has decided to exclude.
62
+
62
+
63
+Linux
63
+Linux
64
+-----
64
+-----
65
+
65
+
66
+Fedora
66
+Fedora
67
+++++++
67
+++++++
68
+
68
+
69
+::
69
+::
70
+
70
+
71
+ sudo dnf update && sudo dnf builddep qemu
71
+ sudo dnf update && sudo dnf builddep qemu
72
+
72
+
73
+Debian/Ubuntu
73
+Debian/Ubuntu
74
++++++++++++++
74
++++++++++++++
75
+
75
+
76
+You first need to enable `Sources List <https://wiki.debian.org/SourcesList>`_.
76
+You first need to enable `Sources List <https://wiki.debian.org/SourcesList>`_.
77
+Then, use apt to install dependencies:
77
+Then, use apt to install dependencies:
78
+
78
+
79
+::
79
+::
80
+
80
+
81
+ sudo apt update && sudo apt build-dep qemu
81
+ sudo apt update && sudo apt build-dep qemu
82
+
82
+
83
+MacOS
83
+MacOS
84
+-----
84
+-----
85
+
85
+
86
+You first need to install `Homebrew <https://brew.sh/>`_. Then, use it to
86
+You first need to install `Homebrew <https://brew.sh/>`_. Then, use it to
87
+install dependencies:
87
+install dependencies:
88
+
88
+
89
+::
89
+::
90
+
90
+
91
+ brew update && brew install $(brew deps --include-build qemu)
91
+ brew update && brew install $(brew deps --include-build qemu)
92
+
92
+
93
+Windows
93
+Windows
94
+-------
94
+-------
95
+
95
+
96
+You first need to install `MSYS2 <https://www.msys2.org/>`_.
96
+You first need to install `MSYS2 <https://www.msys2.org/>`_.
97
+MSYS2 offers `different environments <https://www.msys2.org/docs/environments/>`_.
97
+MSYS2 offers `different environments <https://www.msys2.org/docs/environments/>`_.
98
+x86_64 environments are based on GCC, while aarch64 is based on Clang.
98
+x86_64 environments are based on GCC, while aarch64 is based on Clang.
99
+
99
+
100
+We recommend to use MINGW64 for windows-x86_64 and CLANGARM64 for windows-aarch64
100
+We recommend to use MINGW64 for windows-x86_64 and CLANGARM64 for windows-aarch64
101
+(only available on windows-aarch64 hosts).
101
+(only available on windows-aarch64 hosts).
102
+
102
+
103
+Then, you can open a windows shell, and enter msys2 env using:
103
+Then, you can open a windows shell, and enter msys2 env using:
104
+
104
+
105
+::
105
+::
106
+
106
+
107
+ c:/msys64/msys2_shell.cmd -defterm -here -no-start -mingw64
107
+ c:/msys64/msys2_shell.cmd -defterm -here -no-start -mingw64
108
+ # Replace -ucrt64 by -clangarm64 or -ucrt64 for other environments.
108
+ # Replace -ucrt64 by -clangarm64 or -ucrt64 for other environments.
109
+
109
+
110
+MSYS2 package manager does not offer a built-in way to install build
110
+MSYS2 package manager does not offer a built-in way to install build
111
+dependencies. You can start with this list of packages using pacman:
111
+dependencies. You can start with this list of packages using pacman:
112
+
112
+
113
+Note: Dependencies need to be installed again if you use a different MSYS2
113
+Note: Dependencies need to be installed again if you use a different MSYS2
114
+environment.
114
+environment.
115
+
115
+
116
+::
116
+::
117
+
117
+
118
+ # update MSYS2 itself, you need to reopen your shell at the end.
118
+ # update MSYS2 itself, you need to reopen your shell at the end.
119
+ pacman -Syu
119
+ pacman -Syu
120
+ pacman -S \
120
+ pacman -S \
121
+ base-devel binutils bison diffutils flex git grep make sed \
121
+ base-devel binutils bison diffutils flex git grep make sed \
122
+ ${MINGW_PACKAGE_PREFIX}-toolchain \
122
+ ${MINGW_PACKAGE_PREFIX}-toolchain \
123
+ ${MINGW_PACKAGE_PREFIX}-glib2 \
123
+ ${MINGW_PACKAGE_PREFIX}-glib2 \
124
+ ${MINGW_PACKAGE_PREFIX}-gtk3 \
124
+ ${MINGW_PACKAGE_PREFIX}-gtk3 \
125
+ ${MINGW_PACKAGE_PREFIX}-libnfs \
125
+ ${MINGW_PACKAGE_PREFIX}-libnfs \
126
+ ${MINGW_PACKAGE_PREFIX}-libssh \
126
+ ${MINGW_PACKAGE_PREFIX}-libssh \
127
+ ${MINGW_PACKAGE_PREFIX}-ninja \
127
+ ${MINGW_PACKAGE_PREFIX}-ninja \
128
+ ${MINGW_PACKAGE_PREFIX}-pixman \
128
+ ${MINGW_PACKAGE_PREFIX}-pixman \
129
+ ${MINGW_PACKAGE_PREFIX}-pkgconf \
129
+ ${MINGW_PACKAGE_PREFIX}-pkgconf \
130
+ ${MINGW_PACKAGE_PREFIX}-python \
130
+ ${MINGW_PACKAGE_PREFIX}-python \
131
+ ${MINGW_PACKAGE_PREFIX}-SDL2 \
131
+ ${MINGW_PACKAGE_PREFIX}-SDL2 \
132
+ ${MINGW_PACKAGE_PREFIX}-zstd
132
+ ${MINGW_PACKAGE_PREFIX}-zstd
133
+
133
+
134
+If you want to install all dependencies, it's possible to use recipe used to
134
+If you want to install all dependencies, it's possible to use recipe used to
135
+build QEMU in MSYS2 itself.
135
+build QEMU in MSYS2 itself.
136
+
136
+
137
+::
137
+::
138
+
138
+
139
+ pacman -S wget
139
+ pacman -S wget
140
+ wget https://raw.githubusercontent.com/msys2/MINGW-packages/refs/heads/master/mingw-w64-qemu/PKGBUILD
140
+ wget https://raw.githubusercontent.com/msys2/MINGW-packages/refs/heads/master/mingw-w64-qemu/PKGBUILD
141
+ # Some packages may be missing for your environment, installation will still
141
+ # Some packages may be missing for your environment, installation will still
142
+ # be done though.
142
+ # be done though.
143
+ makepkg -s PKGBUILD || true
143
+ makepkg -s PKGBUILD || true
144
+
144
+
145
+Build on windows-aarch64
145
+Build on windows-aarch64
146
+++++++++++++++++++++++++
146
+++++++++++++++++++++++++
147
+
147
+
148
+When trying to cross compile meson for x86_64 using UCRT64 or MINGW64 env,
148
+When trying to cross compile meson for x86_64 using UCRT64 or MINGW64 env,
149
+configure will run into an error because the cpu detected is not correct.
149
+configure will run into an error because the cpu detected is not correct.
150
+
150
+
151
+Meson detects x86_64 processes emulated, so you need to manually set the cpu,
151
+Meson detects x86_64 processes emulated, so you need to manually set the cpu,
152
+and force a cross compilation (with empty prefix).
152
+and force a cross compilation (with empty prefix).
153
+
153
+
154
+::
154
+::
155
+
155
+
156
+ ./configure --cpu=x86_64 --cross-prefix=
156
+ ./configure --cpu=x86_64 --cross-prefix=
157
+
157
+
158
diff --git a/docs/devel/index-build.rst b/docs/devel/index-build.rst
158
diff --git a/docs/devel/index-build.rst b/docs/devel/index-build.rst
159
index XXXXXXX..XXXXXXX 100644
159
index XXXXXXX..XXXXXXX 100644
160
--- a/docs/devel/index-build.rst
160
--- a/docs/devel/index-build.rst
161
+++ b/docs/devel/index-build.rst
161
+++ b/docs/devel/index-build.rst
162
@@ -XXX,XX +XXX,XX @@ some of the basics if you are adding new files and targets to the build.
162
@@ -XXX,XX +XXX,XX @@ some of the basics if you are adding new files and targets to the build.
163
:maxdepth: 3
163
:maxdepth: 3
164
164
165
build-system
165
build-system
166
+ build-environment
166
+ build-environment
167
kconfig
167
kconfig
168
docs
168
docs
169
qapi-code-gen
169
qapi-code-gen
170
--
170
--
171
2.39.5
171
2.39.5
diff view generated by jsdifflib
1
Present the various parts of QEMU and organization of codebase.
1
Present the various parts of QEMU and organization of codebase.
2
2
3
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
3
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
4
---
4
---
5
docs/about/emulation.rst | 2 +
5
docs/about/emulation.rst | 2 +
6
docs/devel/codebase.rst | 218 +++++++++++++++++++++++++
6
docs/devel/codebase.rst | 218 +++++++++++++++++++++++++
7
docs/devel/decodetree.rst | 2 +
7
docs/devel/decodetree.rst | 2 +
8
docs/devel/ebpf_rss.rst | 2 +
8
docs/devel/ebpf_rss.rst | 2 +
9
docs/devel/index-internals.rst | 2 +
9
docs/devel/index-internals.rst | 2 +
10
docs/devel/index.rst | 1 +
10
docs/devel/index.rst | 1 +
11
docs/devel/migration/main.rst | 2 +
11
docs/devel/migration/main.rst | 2 +
12
docs/devel/qapi-code-gen.rst | 1 +
12
docs/devel/qapi-code-gen.rst | 1 +
13
docs/devel/testing/main.rst | 9 +-
13
docs/devel/testing/main.rst | 9 +-
14
docs/devel/testing/qtest.rst | 2 +
14
docs/devel/testing/qtest.rst | 2 +
15
docs/index.rst | 2 +
15
docs/index.rst | 2 +
16
docs/interop/qemu-ga.rst | 2 +
16
docs/interop/qemu-ga.rst | 2 +
17
docs/system/qemu-block-drivers.rst.inc | 2 +
17
docs/system/qemu-block-drivers.rst.inc | 2 +
18
docs/tools/qemu-storage-daemon.rst | 2 +
18
docs/tools/qemu-storage-daemon.rst | 2 +
19
docs/user/main.rst | 6 +
19
docs/user/main.rst | 6 +
20
15 files changed, 254 insertions(+), 1 deletion(-)
20
15 files changed, 254 insertions(+), 1 deletion(-)
21
create mode 100644 docs/devel/codebase.rst
21
create mode 100644 docs/devel/codebase.rst
22
22
23
diff --git a/docs/about/emulation.rst b/docs/about/emulation.rst
23
diff --git a/docs/about/emulation.rst b/docs/about/emulation.rst
24
index XXXXXXX..XXXXXXX 100644
24
index XXXXXXX..XXXXXXX 100644
25
--- a/docs/about/emulation.rst
25
--- a/docs/about/emulation.rst
26
+++ b/docs/about/emulation.rst
26
+++ b/docs/about/emulation.rst
27
@@ -XXX,XX +XXX,XX @@ for that architecture.
27
@@ -XXX,XX +XXX,XX @@ for that architecture.
28
- System
28
- System
29
- Tensilica ISS SIMCALL
29
- Tensilica ISS SIMCALL
30
30
31
+.. _tcg-plugins:
31
+.. _tcg-plugins:
32
+
32
+
33
TCG Plugins
33
TCG Plugins
34
-----------
34
-----------
35
35
36
diff --git a/docs/devel/codebase.rst b/docs/devel/codebase.rst
36
diff --git a/docs/devel/codebase.rst b/docs/devel/codebase.rst
37
new file mode 100644
37
new file mode 100644
38
index XXXXXXX..XXXXXXX
38
index XXXXXXX..XXXXXXX
39
--- /dev/null
39
--- /dev/null
40
+++ b/docs/devel/codebase.rst
40
+++ b/docs/devel/codebase.rst
41
@@ -XXX,XX +XXX,XX @@
41
@@ -XXX,XX +XXX,XX @@
42
+========
42
+========
43
+Codebase
43
+Codebase
44
+========
44
+========
45
+
45
+
46
+This section presents the various parts of QEMU and how the codebase is
46
+This section presents the various parts of QEMU and how the codebase is
47
+organized.
47
+organized.
48
+
48
+
49
+Beyond giving succint descriptions, the goal is to offer links to various
49
+Beyond giving succint descriptions, the goal is to offer links to various
50
+parts of the documentation/codebase.
50
+parts of the documentation/codebase.
51
+
51
+
52
+Subsystems
52
+Subsystems
53
+----------
53
+----------
54
+
54
+
55
+An exhaustive list of subsystems and associated files can be found in the
55
+An exhaustive list of subsystems and associated files can be found in the
56
+`MAINTAINERS <https://gitlab.com/qemu-project/qemu/-/blob/master/MAINTAINERS>`_
56
+`MAINTAINERS <https://gitlab.com/qemu-project/qemu/-/blob/master/MAINTAINERS>`_
57
+file.
57
+file.
58
+
58
+
59
+Some of the main QEMU subsystems are:
59
+Some of the main QEMU subsystems are:
60
+
60
+
61
+- `Accelerators<Accelerators>`
61
+- `Accelerators<Accelerators>`
62
+- Block devices and `disk images<disk images>` support
62
+- Block devices and `disk images<disk images>` support
63
+- `CI<ci>` and `Tests<testing>`
63
+- `CI<ci>` and `Tests<testing>`
64
+- `Devices<device-emulation>` & Board models
64
+- `Devices<device-emulation>` & Board models
65
+- `Documentation <documentation-root>`
65
+- `Documentation <documentation-root>`
66
+- `GDB support<GDB usage>`
66
+- `GDB support<GDB usage>`
67
+- `Migration<migration>`
67
+- `Migration<migration>`
68
+- `Monitor<QEMU monitor>`
68
+- `Monitor<QEMU monitor>`
69
+- :ref:`QOM (QEMU Object Model)<qom>`
69
+- :ref:`QOM (QEMU Object Model)<qom>`
70
+- `System mode<System emulation>`
70
+- `System mode<System emulation>`
71
+- :ref:`TCG (Tiny Code Generator)<tcg>`
71
+- :ref:`TCG (Tiny Code Generator)<tcg>`
72
+- `User mode<user-mode>` (`Linux<linux-user-mode>` & `BSD<bsd-user-mode>`)
72
+- `User mode<user-mode>` (`Linux<linux-user-mode>` & `BSD<bsd-user-mode>`)
73
+- User Interfaces
73
+- User Interfaces
74
+
74
+
75
+More documentation on QEMU subsystems can be found on :ref:`internal-subsystem`
75
+More documentation on QEMU subsystems can be found on :ref:`internal-subsystem`
76
+page.
76
+page.
77
+
77
+
78
+The Grand tour
78
+The Grand tour
79
+--------------
79
+--------------
80
+
80
+
81
+We present briefly here what every folder of the codebase contains. Hop on!
81
+We present briefly here what every folder of the codebase contains. Hop on!
82
+
82
+
83
+The folder name links here will take you to that folder in our gitlab
83
+The folder name links here will take you to that folder in our gitlab
84
+repository. Other links will take you to more detailed documentation for that
84
+repository. Other links will take you to more detailed documentation for that
85
+subsystem, where we have it. Unfortunately not every subsystem has documentation
85
+subsystem, where we have it. Unfortunately not every subsystem has documentation
86
+yet, so sometimes the source code is all you have.
86
+yet, so sometimes the source code is all you have.
87
+
87
+
88
+* `accel <https://gitlab.com/qemu-project/qemu/-/tree/master/accel>`_:
88
+* `accel <https://gitlab.com/qemu-project/qemu/-/tree/master/accel>`_:
89
+ Infrastructure and architecture agnostic code related to the various
89
+ Infrastructure and architecture agnostic code related to the various
90
+ `accelerators <Accelerators>` supported by QEMU
90
+ `accelerators <Accelerators>` supported by QEMU
91
+ (TCG, KVM, hvf, whpx, xen, nvmm).
91
+ (TCG, KVM, hvf, whpx, xen, nvmm).
92
+ Contains interfaces for operations that will be implemented per
92
+ Contains interfaces for operations that will be implemented per
93
+ `target <https://gitlab.com/qemu-project/qemu/-/tree/master/target>`_.
93
+ `target <https://gitlab.com/qemu-project/qemu/-/tree/master/target>`_.
94
+* `audio <https://gitlab.com/qemu-project/qemu/-/tree/master/audio>`_:
94
+* `audio <https://gitlab.com/qemu-project/qemu/-/tree/master/audio>`_:
95
+ Audio (host) support.
95
+ Audio (host) support.
96
+* `authz <https://gitlab.com/qemu-project/qemu/-/tree/master/authz>`_:
96
+* `authz <https://gitlab.com/qemu-project/qemu/-/tree/master/authz>`_:
97
+ `QEMU Authorization framework<client authorization>`.
97
+ `QEMU Authorization framework<client authorization>`.
98
+* `backends <https://gitlab.com/qemu-project/qemu/-/tree/master/backends>`_:
98
+* `backends <https://gitlab.com/qemu-project/qemu/-/tree/master/backends>`_:
99
+ Various backends used for device emulation.
99
+ Various backends used for device emulation.
100
+* `block <https://gitlab.com/qemu-project/qemu/-/tree/master/block>`_:
100
+* `block <https://gitlab.com/qemu-project/qemu/-/tree/master/block>`_:
101
+ Block devices and `image formats<disk images>` implementation.
101
+ Block devices and `image formats<disk images>` implementation.
102
+* `bsd-user <https://gitlab.com/qemu-project/qemu/-/tree/master/bsd-user>`_:
102
+* `bsd-user <https://gitlab.com/qemu-project/qemu/-/tree/master/bsd-user>`_:
103
+ `BSD User mode<bsd-user-mode>`.
103
+ `BSD User mode<bsd-user-mode>`.
104
+* build: Where the code built goes by default. You can tell the QEMU build
104
+* build: Where the code built goes by default. You can tell the QEMU build
105
+ system to put the built code anywhere else you like.
105
+ system to put the built code anywhere else you like.
106
+* `chardev <https://gitlab.com/qemu-project/qemu/-/tree/master/chardev>`_:
106
+* `chardev <https://gitlab.com/qemu-project/qemu/-/tree/master/chardev>`_:
107
+ Various backends used by char devices.
107
+ Various backends used by char devices.
108
+* `common-user <https://gitlab.com/qemu-project/qemu/-/tree/master/common-user>`_:
108
+* `common-user <https://gitlab.com/qemu-project/qemu/-/tree/master/common-user>`_:
109
+ User-mode assembly code for dealing with signals occuring during syscalls.
109
+ User-mode assembly code for dealing with signals occuring during syscalls.
110
+* `configs <https://gitlab.com/qemu-project/qemu/-/tree/master/configs>`_:
110
+* `configs <https://gitlab.com/qemu-project/qemu/-/tree/master/configs>`_:
111
+ Makefiles defining configurations to build QEMU.
111
+ Makefiles defining configurations to build QEMU.
112
+* `contrib <https://gitlab.com/qemu-project/qemu/-/tree/master/contrib>`_:
112
+* `contrib <https://gitlab.com/qemu-project/qemu/-/tree/master/contrib>`_:
113
+ Community contributed devices/plugins/tools.
113
+ Community contributed devices/plugins/tools.
114
+* `crypto <https://gitlab.com/qemu-project/qemu/-/tree/master/crypto>`_:
114
+* `crypto <https://gitlab.com/qemu-project/qemu/-/tree/master/crypto>`_:
115
+ Cryptographic algorithms used in QEMU.
115
+ Cryptographic algorithms used in QEMU.
116
+* `disas <https://gitlab.com/qemu-project/qemu/-/tree/master/disas>`_:
116
+* `disas <https://gitlab.com/qemu-project/qemu/-/tree/master/disas>`_:
117
+ Disassembly functions used by QEMU target code.
117
+ Disassembly functions used by QEMU target code.
118
+* `docs <https://gitlab.com/qemu-project/qemu/-/tree/master/docs>`_:
118
+* `docs <https://gitlab.com/qemu-project/qemu/-/tree/master/docs>`_:
119
+ QEMU Documentation.
119
+ QEMU Documentation.
120
+* `dump <https://gitlab.com/qemu-project/qemu/-/tree/master/dump>`_:
120
+* `dump <https://gitlab.com/qemu-project/qemu/-/tree/master/dump>`_:
121
+ Code to dump memory of a running VM.
121
+ Code to dump memory of a running VM.
122
+* `ebpf <https://gitlab.com/qemu-project/qemu/-/tree/master/ebpf>`_:
122
+* `ebpf <https://gitlab.com/qemu-project/qemu/-/tree/master/ebpf>`_:
123
+ eBPF program support in QEMU. `virtio-net RSS<ebpf-rss>` uses it.
123
+ eBPF program support in QEMU. `virtio-net RSS<ebpf-rss>` uses it.
124
+* `fpu <https://gitlab.com/qemu-project/qemu/-/tree/master/fpu>`_:
124
+* `fpu <https://gitlab.com/qemu-project/qemu/-/tree/master/fpu>`_:
125
+ Floating-point software emulation.
125
+ Floating-point software emulation.
126
+* `fsdev <https://gitlab.com/qemu-project/qemu/-/tree/master/fsdev>`_:
126
+* `fsdev <https://gitlab.com/qemu-project/qemu/-/tree/master/fsdev>`_:
127
+ `VirtFS <https://www.linux-kvm.org/page/VirtFS>`_ support.
127
+ `VirtFS <https://www.linux-kvm.org/page/VirtFS>`_ support.
128
+* `gdbstub <https://gitlab.com/qemu-project/qemu/-/tree/master/gdbstub>`_:
128
+* `gdbstub <https://gitlab.com/qemu-project/qemu/-/tree/master/gdbstub>`_:
129
+ `GDB <GDB usage>` support.
129
+ `GDB <GDB usage>` support.
130
+* `gdb-xml <https://gitlab.com/qemu-project/qemu/-/tree/master/gdb-xml>`_:
130
+* `gdb-xml <https://gitlab.com/qemu-project/qemu/-/tree/master/gdb-xml>`_:
131
+ Set of XML files describing architectures and used by `gdbstub <GDB usage>`.
131
+ Set of XML files describing architectures and used by `gdbstub <GDB usage>`.
132
+* `host <https://gitlab.com/qemu-project/qemu/-/tree/master/host>`_:
132
+* `host <https://gitlab.com/qemu-project/qemu/-/tree/master/host>`_:
133
+ Various architecture specific header files (crypto, atomic, memory
133
+ Various architecture specific header files (crypto, atomic, memory
134
+ operations).
134
+ operations).
135
+* `linux-headers <https://gitlab.com/qemu-project/qemu/-/tree/master/linux-headers>`_:
135
+* `linux-headers <https://gitlab.com/qemu-project/qemu/-/tree/master/linux-headers>`_:
136
+ A subset of headers imported from Linux kernel and used for implementing
136
+ A subset of headers imported from Linux kernel and used for implementing
137
+ KVM support and user-mode.
137
+ KVM support and user-mode.
138
+* `linux-user <https://gitlab.com/qemu-project/qemu/-/tree/master/linux-user>`_:
138
+* `linux-user <https://gitlab.com/qemu-project/qemu/-/tree/master/linux-user>`_:
139
+ `User mode <user-mode>` implementation. Contains one folder per target
139
+ `User mode <user-mode>` implementation. Contains one folder per target
140
+ architecture.
140
+ architecture.
141
+* `.gitlab-ci.d <https://gitlab.com/qemu-project/qemu/-/tree/master/.gitlab-ci.d>`_:
141
+* `.gitlab-ci.d <https://gitlab.com/qemu-project/qemu/-/tree/master/.gitlab-ci.d>`_:
142
+ `CI <ci>` yaml and scripts.
142
+ `CI <ci>` yaml and scripts.
143
+* `include <https://gitlab.com/qemu-project/qemu/-/tree/master/include>`_:
143
+* `include <https://gitlab.com/qemu-project/qemu/-/tree/master/include>`_:
144
+ All headers associated to different subsystems in QEMU. The hierachy used
144
+ All headers associated to different subsystems in QEMU. The hierachy used
145
+ mirrors source code organization and naming.
145
+ mirrors source code organization and naming.
146
+* `hw <https://gitlab.com/qemu-project/qemu/-/tree/master/hw>`_:
146
+* `hw <https://gitlab.com/qemu-project/qemu/-/tree/master/hw>`_:
147
+ `Devices <device-emulation>` and boards emulation. Devices are categorized by
147
+ `Devices <device-emulation>` and boards emulation. Devices are categorized by
148
+ type/protocol/architecture and located in associated subfolder.
148
+ type/protocol/architecture and located in associated subfolder.
149
+* `io <https://gitlab.com/qemu-project/qemu/-/tree/master/io>`_:
149
+* `io <https://gitlab.com/qemu-project/qemu/-/tree/master/io>`_:
150
+ QEMU `I/O channels <https://lists.gnu.org/archive/html/qemu-devel/2015-11/msg04208.html>`_.
150
+ QEMU `I/O channels <https://lists.gnu.org/archive/html/qemu-devel/2015-11/msg04208.html>`_.
151
+* `libdecnumber <https://gitlab.com/qemu-project/qemu/-/tree/master/libdecnumber>`_:
151
+* `libdecnumber <https://gitlab.com/qemu-project/qemu/-/tree/master/libdecnumber>`_:
152
+ Import of gcc library, used to implement decimal number arithmetic.
152
+ Import of gcc library, used to implement decimal number arithmetic.
153
+* `migration <https://gitlab.com/qemu-project/qemu/-/tree/master/migration>`__:
153
+* `migration <https://gitlab.com/qemu-project/qemu/-/tree/master/migration>`__:
154
+ `Migration framework <migration>`.
154
+ `Migration framework <migration>`.
155
+* `monitor <https://gitlab.com/qemu-project/qemu/-/tree/master/monitor>`_:
155
+* `monitor <https://gitlab.com/qemu-project/qemu/-/tree/master/monitor>`_:
156
+ `Monitor <QEMU monitor>` implementation (HMP & QMP).
156
+ `Monitor <QEMU monitor>` implementation (HMP & QMP).
157
+* `nbd <https://gitlab.com/qemu-project/qemu/-/tree/master/nbd>`_:
157
+* `nbd <https://gitlab.com/qemu-project/qemu/-/tree/master/nbd>`_:
158
+ QEMU `NBD (Network Block Device) <nbd>` server.
158
+ QEMU `NBD (Network Block Device) <nbd>` server.
159
+* `net <https://gitlab.com/qemu-project/qemu/-/tree/master/net>`_:
159
+* `net <https://gitlab.com/qemu-project/qemu/-/tree/master/net>`_:
160
+ Network (host) support.
160
+ Network (host) support.
161
+* `pc-bios <https://gitlab.com/qemu-project/qemu/-/tree/master/pc-bios>`_:
161
+* `pc-bios <https://gitlab.com/qemu-project/qemu/-/tree/master/pc-bios>`_:
162
+ Contains pre-built firmware binaries and boot images, ready to use in
162
+ Contains pre-built firmware binaries and boot images, ready to use in
163
+ QEMU without compilation.
163
+ QEMU without compilation.
164
+* `plugins <https://gitlab.com/qemu-project/qemu/-/tree/master/plugins>`_:
164
+* `plugins <https://gitlab.com/qemu-project/qemu/-/tree/master/plugins>`_:
165
+ :ref:`TCG plugins <tcg-plugins>` core implementation. Plugins can be found in
165
+ :ref:`TCG plugins <tcg-plugins>` core implementation. Plugins can be found in
166
+ `tests <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/tcg/plugins>`__
166
+ `tests <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/tcg/plugins>`__
167
+ and `contrib <https://gitlab.com/qemu-project/qemu/-/tree/master/contrib/plugins>`__
167
+ and `contrib <https://gitlab.com/qemu-project/qemu/-/tree/master/contrib/plugins>`__
168
+ folders.
168
+ folders.
169
+* `po <https://gitlab.com/qemu-project/qemu/-/tree/master/po>`_:
169
+* `po <https://gitlab.com/qemu-project/qemu/-/tree/master/po>`_:
170
+ Translation files.
170
+ Translation files.
171
+* `python <https://gitlab.com/qemu-project/qemu/-/tree/master/python>`_:
171
+* `python <https://gitlab.com/qemu-project/qemu/-/tree/master/python>`_:
172
+ Python part of our build/test system.
172
+ Python part of our build/test system.
173
+* `qapi <https://gitlab.com/qemu-project/qemu/-/tree/master/qapi>`_:
173
+* `qapi <https://gitlab.com/qemu-project/qemu/-/tree/master/qapi>`_:
174
+ `QAPI <qapi>` implementation.
174
+ `QAPI <qapi>` implementation.
175
+* `qobject <https://gitlab.com/qemu-project/qemu/-/tree/master/qobject>`_:
175
+* `qobject <https://gitlab.com/qemu-project/qemu/-/tree/master/qobject>`_:
176
+ QEMU Object implementation.
176
+ QEMU Object implementation.
177
+* `qga <https://gitlab.com/qemu-project/qemu/-/tree/master/qga>`_:
177
+* `qga <https://gitlab.com/qemu-project/qemu/-/tree/master/qga>`_:
178
+ QEMU `Guest agent <qemu-ga>` implementation.
178
+ QEMU `Guest agent <qemu-ga>` implementation.
179
+* `qom <https://gitlab.com/qemu-project/qemu/-/tree/master/qom>`_:
179
+* `qom <https://gitlab.com/qemu-project/qemu/-/tree/master/qom>`_:
180
+ QEMU :ref:`Object model <qom>` implementation, with monitor associated commands.
180
+ QEMU :ref:`Object model <qom>` implementation, with monitor associated commands.
181
+* `replay <https://gitlab.com/qemu-project/qemu/-/tree/master/replay>`_:
181
+* `replay <https://gitlab.com/qemu-project/qemu/-/tree/master/replay>`_:
182
+ QEMU :ref:`Record/replay <replay>` implementation.
182
+ QEMU :ref:`Record/replay <replay>` implementation.
183
+* `roms <https://gitlab.com/qemu-project/qemu/-/tree/master/roms>`_:
183
+* `roms <https://gitlab.com/qemu-project/qemu/-/tree/master/roms>`_:
184
+ Contains source code for various firmware and ROMs, which can be compiled if
184
+ Contains source code for various firmware and ROMs, which can be compiled if
185
+ custom or updated versions are needed.
185
+ custom or updated versions are needed.
186
+* `rust <https://gitlab.com/qemu-project/qemu/-/tree/master/rust>`_:
186
+* `rust <https://gitlab.com/qemu-project/qemu/-/tree/master/rust>`_:
187
+ Rust integration in QEMU. It contains the new interfaces defined and
187
+ Rust integration in QEMU. It contains the new interfaces defined and
188
+ associated devices using it.
188
+ associated devices using it.
189
+* `scripts <https://gitlab.com/qemu-project/qemu/-/tree/master/scripts>`_:
189
+* `scripts <https://gitlab.com/qemu-project/qemu/-/tree/master/scripts>`_:
190
+ Collection of scripts used in build and test systems, and various
190
+ Collection of scripts used in build and test systems, and various
191
+ tools for QEMU codebase and execution traces.
191
+ tools for QEMU codebase and execution traces.
192
+* `scsi <https://gitlab.com/qemu-project/qemu/-/tree/master/scsi>`_:
192
+* `scsi <https://gitlab.com/qemu-project/qemu/-/tree/master/scsi>`_:
193
+ Code related to SCSI support, used by SCSI devices.
193
+ Code related to SCSI support, used by SCSI devices.
194
+* `semihosting <https://gitlab.com/qemu-project/qemu/-/tree/master/semihosting>`_:
194
+* `semihosting <https://gitlab.com/qemu-project/qemu/-/tree/master/semihosting>`_:
195
+ QEMU `Semihosting <Semihosting>` implementation.
195
+ QEMU `Semihosting <Semihosting>` implementation.
196
+* `stats <https://gitlab.com/qemu-project/qemu/-/tree/master/stats>`_:
196
+* `stats <https://gitlab.com/qemu-project/qemu/-/tree/master/stats>`_:
197
+ `Monitor <QEMU monitor>` stats commands implementation.
197
+ `Monitor <QEMU monitor>` stats commands implementation.
198
+* `storage-daemon <https://gitlab.com/qemu-project/qemu/-/tree/master/storage-daemon>`_:
198
+* `storage-daemon <https://gitlab.com/qemu-project/qemu/-/tree/master/storage-daemon>`_:
199
+ QEMU `Storage daemon <storage-daemon>` implementation.
199
+ QEMU `Storage daemon <storage-daemon>` implementation.
200
+* `stubs <https://gitlab.com/qemu-project/qemu/-/tree/master/stubs>`_:
200
+* `stubs <https://gitlab.com/qemu-project/qemu/-/tree/master/stubs>`_:
201
+ Various stubs (empty functions) used to compile QEMU with specific
201
+ Various stubs (empty functions) used to compile QEMU with specific
202
+ configurations.
202
+ configurations.
203
+* `subprojects <https://gitlab.com/qemu-project/qemu/-/tree/master/subprojects>`_:
203
+* `subprojects <https://gitlab.com/qemu-project/qemu/-/tree/master/subprojects>`_:
204
+ QEMU submodules used by QEMU build system.
204
+ QEMU submodules used by QEMU build system.
205
+* `system <https://gitlab.com/qemu-project/qemu/-/tree/master/system>`_:
205
+* `system <https://gitlab.com/qemu-project/qemu/-/tree/master/system>`_:
206
+ QEMU `system mode <System emulation>` implementation (cpu, mmu, boot support).
206
+ QEMU `system mode <System emulation>` implementation (cpu, mmu, boot support).
207
+* `target <https://gitlab.com/qemu-project/qemu/-/tree/master/target>`_:
207
+* `target <https://gitlab.com/qemu-project/qemu/-/tree/master/target>`_:
208
+ Contains code for all target architectures supported (one subfolder
208
+ Contains code for all target architectures supported (one subfolder
209
+ per arch). For every architecture, you can find accelerator specific
209
+ per arch). For every architecture, you can find accelerator specific
210
+ implementations.
210
+ implementations.
211
+* `tcg <https://gitlab.com/qemu-project/qemu/-/tree/master/tcg>`_:
211
+* `tcg <https://gitlab.com/qemu-project/qemu/-/tree/master/tcg>`_:
212
+ :ref:`TCG <tcg>` related code.
212
+ :ref:`TCG <tcg>` related code.
213
+ Contains one subfolder per host supported architecture.
213
+ Contains one subfolder per host supported architecture.
214
+* `tests <https://gitlab.com/qemu-project/qemu/-/tree/master/tests>`_:
214
+* `tests <https://gitlab.com/qemu-project/qemu/-/tree/master/tests>`_:
215
+ QEMU `test <testing>` suite
215
+ QEMU `test <testing>` suite
216
+
216
+
217
+ - `avocado <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/avocado>`_:
217
+ - `avocado <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/avocado>`_:
218
+ Functional tests booting full VM using `Avocado framework <checkavocado-ref>`.
218
+ Functional tests booting full VM using `Avocado framework <checkavocado-ref>`.
219
+ Those tests will be transformed and moved into
219
+ Those tests will be transformed and moved into
220
+ `tests/functional <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/functional>`_
220
+ `tests/functional <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/functional>`_
221
+ in the future.
221
+ in the future.
222
+ - `data <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/data>`_:
222
+ - `data <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/data>`_:
223
+ Data for various tests.
223
+ Data for various tests.
224
+ - `decode <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/decode>`_:
224
+ - `decode <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/decode>`_:
225
+ Testsuite for :ref:`decodetree <decodetree>` implementation.
225
+ Testsuite for :ref:`decodetree <decodetree>` implementation.
226
+ - `docker <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/docker>`_:
226
+ - `docker <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/docker>`_:
227
+ Code and scripts to create `containers <container-ref>` used in `CI <ci>`.
227
+ Code and scripts to create `containers <container-ref>` used in `CI <ci>`.
228
+ - `fp <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/fp>`_:
228
+ - `fp <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/fp>`_:
229
+ QEMU testsuite for soft float implementation.
229
+ QEMU testsuite for soft float implementation.
230
+ - `functional <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/functional>`_:
230
+ - `functional <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/functional>`_:
231
+ `Functional tests <checkfunctional-ref>` (full VM boot).
231
+ `Functional tests <checkfunctional-ref>` (full VM boot).
232
+ - `lcitool <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/lcitool>`_:
232
+ - `lcitool <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/lcitool>`_:
233
+ Generate dockerfiles for CI containers.
233
+ Generate dockerfiles for CI containers.
234
+ - `migration <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/migration>`_:
234
+ - `migration <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/migration>`_:
235
+ Test scripts and data for `Migration framework <migration>`.
235
+ Test scripts and data for `Migration framework <migration>`.
236
+ - `multiboot <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/multiboot>`_:
236
+ - `multiboot <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/multiboot>`_:
237
+ Test multiboot functionality for x86_64/i386.
237
+ Test multiboot functionality for x86_64/i386.
238
+ - `qapi-schema <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/qapi-schema>`_:
238
+ - `qapi-schema <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/qapi-schema>`_:
239
+ Test scripts and data for `QAPI <qapi-tests>`.
239
+ Test scripts and data for `QAPI <qapi-tests>`.
240
+ - `qemu-iotests <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/qemu-iotests>`_:
240
+ - `qemu-iotests <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/qemu-iotests>`_:
241
+ `Disk image and block tests <qemu-iotests>`.
241
+ `Disk image and block tests <qemu-iotests>`.
242
+ - `qtest <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/qtest>`_:
242
+ - `qtest <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/qtest>`_:
243
+ `Device emulation testing <qtest>`.
243
+ `Device emulation testing <qtest>`.
244
+ - `tcg <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/tcg>`__:
244
+ - `tcg <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/tcg>`__:
245
+ `TCG related tests <checktcg-ref>`. Contains code per architecture
245
+ `TCG related tests <checktcg-ref>`. Contains code per architecture
246
+ (subfolder) and multiarch tests as well.
246
+ (subfolder) and multiarch tests as well.
247
+ - `tsan <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/tsan>`_:
247
+ - `tsan <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/tsan>`_:
248
+ `Suppressions <tsan-suppressions>` for thread sanitizer.
248
+ `Suppressions <tsan-suppressions>` for thread sanitizer.
249
+ - `uefi-test-tools <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/uefi-test-tools>`_:
249
+ - `uefi-test-tools <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/uefi-test-tools>`_:
250
+ Test tool for UEFI support.
250
+ Test tool for UEFI support.
251
+ - `unit <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/unit>`_:
251
+ - `unit <https://gitlab.com/qemu-project/qemu/-/tree/master/tests/unit>`_:
252
+ QEMU `Unit tests <unit-tests>`.
252
+ QEMU `Unit tests <unit-tests>`.
253
+* `trace <https://gitlab.com/qemu-project/qemu/-/tree/master/trace>`_:
253
+* `trace <https://gitlab.com/qemu-project/qemu/-/tree/master/trace>`_:
254
+ :ref:`Tracing framework <tracing>`. Used to print information associated to various
254
+ :ref:`Tracing framework <tracing>`. Used to print information associated to various
255
+ events during execution.
255
+ events during execution.
256
+* `ui <https://gitlab.com/qemu-project/qemu/-/tree/master/ui>`_:
256
+* `ui <https://gitlab.com/qemu-project/qemu/-/tree/master/ui>`_:
257
+ QEMU User interfaces.
257
+ QEMU User interfaces.
258
+* `util <https://gitlab.com/qemu-project/qemu/-/tree/master/util>`_:
258
+* `util <https://gitlab.com/qemu-project/qemu/-/tree/master/util>`_:
259
+ Utility code used by other parts of QEMU.
259
+ Utility code used by other parts of QEMU.
260
diff --git a/docs/devel/decodetree.rst b/docs/devel/decodetree.rst
260
diff --git a/docs/devel/decodetree.rst b/docs/devel/decodetree.rst
261
index XXXXXXX..XXXXXXX 100644
261
index XXXXXXX..XXXXXXX 100644
262
--- a/docs/devel/decodetree.rst
262
--- a/docs/devel/decodetree.rst
263
+++ b/docs/devel/decodetree.rst
263
+++ b/docs/devel/decodetree.rst
264
@@ -XXX,XX +XXX,XX @@
264
@@ -XXX,XX +XXX,XX @@
265
+.. _decodetree:
265
+.. _decodetree:
266
+
266
+
267
========================
267
========================
268
Decodetree Specification
268
Decodetree Specification
269
========================
269
========================
270
diff --git a/docs/devel/ebpf_rss.rst b/docs/devel/ebpf_rss.rst
270
diff --git a/docs/devel/ebpf_rss.rst b/docs/devel/ebpf_rss.rst
271
index XXXXXXX..XXXXXXX 100644
271
index XXXXXXX..XXXXXXX 100644
272
--- a/docs/devel/ebpf_rss.rst
272
--- a/docs/devel/ebpf_rss.rst
273
+++ b/docs/devel/ebpf_rss.rst
273
+++ b/docs/devel/ebpf_rss.rst
274
@@ -XXX,XX +XXX,XX @@
274
@@ -XXX,XX +XXX,XX @@
275
+.. _ebpf-rss:
275
+.. _ebpf-rss:
276
+
276
+
277
===========================
277
===========================
278
eBPF RSS virtio-net support
278
eBPF RSS virtio-net support
279
===========================
279
===========================
280
diff --git a/docs/devel/index-internals.rst b/docs/devel/index-internals.rst
280
diff --git a/docs/devel/index-internals.rst b/docs/devel/index-internals.rst
281
index XXXXXXX..XXXXXXX 100644
281
index XXXXXXX..XXXXXXX 100644
282
--- a/docs/devel/index-internals.rst
282
--- a/docs/devel/index-internals.rst
283
+++ b/docs/devel/index-internals.rst
283
+++ b/docs/devel/index-internals.rst
284
@@ -XXX,XX +XXX,XX @@
284
@@ -XXX,XX +XXX,XX @@
285
+.. _internal-subsystem:
285
+.. _internal-subsystem:
286
+
286
+
287
Internal Subsystem Information
287
Internal Subsystem Information
288
------------------------------
288
------------------------------
289
289
290
diff --git a/docs/devel/index.rst b/docs/devel/index.rst
290
diff --git a/docs/devel/index.rst b/docs/devel/index.rst
291
index XXXXXXX..XXXXXXX 100644
291
index XXXXXXX..XXXXXXX 100644
292
--- a/docs/devel/index.rst
292
--- a/docs/devel/index.rst
293
+++ b/docs/devel/index.rst
293
+++ b/docs/devel/index.rst
294
@@ -XXX,XX +XXX,XX @@ the :ref:`tcg_internals`.
294
@@ -XXX,XX +XXX,XX @@ the :ref:`tcg_internals`.
295
index-api
295
index-api
296
index-internals
296
index-internals
297
index-tcg
297
index-tcg
298
+ codebase
298
+ codebase
299
diff --git a/docs/devel/migration/main.rst b/docs/devel/migration/main.rst
299
diff --git a/docs/devel/migration/main.rst b/docs/devel/migration/main.rst
300
index XXXXXXX..XXXXXXX 100644
300
index XXXXXXX..XXXXXXX 100644
301
--- a/docs/devel/migration/main.rst
301
--- a/docs/devel/migration/main.rst
302
+++ b/docs/devel/migration/main.rst
302
+++ b/docs/devel/migration/main.rst
303
@@ -XXX,XX +XXX,XX @@
303
@@ -XXX,XX +XXX,XX @@
304
+.. _migration:
304
+.. _migration:
305
+
305
+
306
===================
306
===================
307
Migration framework
307
Migration framework
308
===================
308
===================
309
diff --git a/docs/devel/qapi-code-gen.rst b/docs/devel/qapi-code-gen.rst
309
diff --git a/docs/devel/qapi-code-gen.rst b/docs/devel/qapi-code-gen.rst
310
index XXXXXXX..XXXXXXX 100644
310
index XXXXXXX..XXXXXXX 100644
311
--- a/docs/devel/qapi-code-gen.rst
311
--- a/docs/devel/qapi-code-gen.rst
312
+++ b/docs/devel/qapi-code-gen.rst
312
+++ b/docs/devel/qapi-code-gen.rst
313
@@ -XXX,XX +XXX,XX @@ How to use the QAPI code generator
313
@@ -XXX,XX +XXX,XX @@ How to use the QAPI code generator
314
This work is licensed under the terms of the GNU GPL, version 2 or
314
This work is licensed under the terms of the GNU GPL, version 2 or
315
later. See the COPYING file in the top-level directory.
315
later. See the COPYING file in the top-level directory.
316
316
317
+.. _qapi:
317
+.. _qapi:
318
318
319
Introduction
319
Introduction
320
============
320
============
321
diff --git a/docs/devel/testing/main.rst b/docs/devel/testing/main.rst
321
diff --git a/docs/devel/testing/main.rst b/docs/devel/testing/main.rst
322
index XXXXXXX..XXXXXXX 100644
322
index XXXXXXX..XXXXXXX 100644
323
--- a/docs/devel/testing/main.rst
323
--- a/docs/devel/testing/main.rst
324
+++ b/docs/devel/testing/main.rst
324
+++ b/docs/devel/testing/main.rst
325
@@ -XXX,XX +XXX,XX @@ Before running tests, it is best to build QEMU programs first. Some tests
325
@@ -XXX,XX +XXX,XX @@ Before running tests, it is best to build QEMU programs first. Some tests
326
expect the executables to exist and will fail with obscure messages if they
326
expect the executables to exist and will fail with obscure messages if they
327
cannot find them.
327
cannot find them.
328
328
329
+.. _unit-tests:
329
+.. _unit-tests:
330
+
330
+
331
Unit tests
331
Unit tests
332
~~~~~~~~~~
332
~~~~~~~~~~
333
333
334
@@ -XXX,XX +XXX,XX @@ successfully on various hosts. The following list shows some best practices:
334
@@ -XXX,XX +XXX,XX @@ successfully on various hosts. The following list shows some best practices:
335
#ifdef in the codes. If the whole test suite cannot run on Windows, disable
335
#ifdef in the codes. If the whole test suite cannot run on Windows, disable
336
the build in the meson.build file.
336
the build in the meson.build file.
337
337
338
+.. _qapi-tests:
338
+.. _qapi-tests:
339
+
339
+
340
QAPI schema tests
340
QAPI schema tests
341
~~~~~~~~~~~~~~~~~
341
~~~~~~~~~~~~~~~~~
342
342
343
@@ -XXX,XX +XXX,XX @@ check-block
343
@@ -XXX,XX +XXX,XX @@ check-block
344
are in the "auto" group).
344
are in the "auto" group).
345
See the "QEMU iotests" section below for more information.
345
See the "QEMU iotests" section below for more information.
346
346
347
+.. _qemu-iotests:
347
+.. _qemu-iotests:
348
+
348
+
349
QEMU iotests
349
QEMU iotests
350
------------
350
------------
351
351
352
@@ -XXX,XX +XXX,XX @@ The above exitcode=0 has TSan continue without error if any warnings are found.
352
@@ -XXX,XX +XXX,XX @@ The above exitcode=0 has TSan continue without error if any warnings are found.
353
This allows for running the test and then checking the warnings afterwards.
353
This allows for running the test and then checking the warnings afterwards.
354
If you want TSan to stop and exit with error on warnings, use exitcode=66.
354
If you want TSan to stop and exit with error on warnings, use exitcode=66.
355
355
356
+.. _tsan-suppressions:
356
+.. _tsan-suppressions:
357
+
357
+
358
TSan Suppressions
358
TSan Suppressions
359
~~~~~~~~~~~~~~~~~
359
~~~~~~~~~~~~~~~~~
360
Keep in mind that for any data race warning, although there might be a data race
360
Keep in mind that for any data race warning, although there might be a data race
361
@@ -XXX,XX +XXX,XX @@ You can run the avocado tests simply by executing:
361
@@ -XXX,XX +XXX,XX @@ You can run the avocado tests simply by executing:
362
362
363
See :ref:`checkavocado-ref` for more details.
363
See :ref:`checkavocado-ref` for more details.
364
364
365
-
365
-
366
.. _checktcg-ref:
366
.. _checktcg-ref:
367
367
368
Testing with "make check-tcg"
368
Testing with "make check-tcg"
369
diff --git a/docs/devel/testing/qtest.rst b/docs/devel/testing/qtest.rst
369
diff --git a/docs/devel/testing/qtest.rst b/docs/devel/testing/qtest.rst
370
index XXXXXXX..XXXXXXX 100644
370
index XXXXXXX..XXXXXXX 100644
371
--- a/docs/devel/testing/qtest.rst
371
--- a/docs/devel/testing/qtest.rst
372
+++ b/docs/devel/testing/qtest.rst
372
+++ b/docs/devel/testing/qtest.rst
373
@@ -XXX,XX +XXX,XX @@
373
@@ -XXX,XX +XXX,XX @@
374
+.. _qtest:
374
+.. _qtest:
375
+
375
+
376
========================================
376
========================================
377
QTest Device Emulation Testing Framework
377
QTest Device Emulation Testing Framework
378
========================================
378
========================================
379
diff --git a/docs/index.rst b/docs/index.rst
379
diff --git a/docs/index.rst b/docs/index.rst
380
index XXXXXXX..XXXXXXX 100644
380
index XXXXXXX..XXXXXXX 100644
381
--- a/docs/index.rst
381
--- a/docs/index.rst
382
+++ b/docs/index.rst
382
+++ b/docs/index.rst
383
@@ -XXX,XX +XXX,XX @@
383
@@ -XXX,XX +XXX,XX @@
384
You can adapt this file completely to your liking, but it should at least
384
You can adapt this file completely to your liking, but it should at least
385
contain the root `toctree` directive.
385
contain the root `toctree` directive.
386
386
387
+.. _documentation-root:
387
+.. _documentation-root:
388
+
388
+
389
================================
389
================================
390
Welcome to QEMU's documentation!
390
Welcome to QEMU's documentation!
391
================================
391
================================
392
diff --git a/docs/interop/qemu-ga.rst b/docs/interop/qemu-ga.rst
392
diff --git a/docs/interop/qemu-ga.rst b/docs/interop/qemu-ga.rst
393
index XXXXXXX..XXXXXXX 100644
393
index XXXXXXX..XXXXXXX 100644
394
--- a/docs/interop/qemu-ga.rst
394
--- a/docs/interop/qemu-ga.rst
395
+++ b/docs/interop/qemu-ga.rst
395
+++ b/docs/interop/qemu-ga.rst
396
@@ -XXX,XX +XXX,XX @@
396
@@ -XXX,XX +XXX,XX @@
397
+.. _qemu-ga:
397
+.. _qemu-ga:
398
+
398
+
399
QEMU Guest Agent
399
QEMU Guest Agent
400
================
400
================
401
401
402
diff --git a/docs/system/qemu-block-drivers.rst.inc b/docs/system/qemu-block-drivers.rst.inc
402
diff --git a/docs/system/qemu-block-drivers.rst.inc b/docs/system/qemu-block-drivers.rst.inc
403
index XXXXXXX..XXXXXXX 100644
403
index XXXXXXX..XXXXXXX 100644
404
--- a/docs/system/qemu-block-drivers.rst.inc
404
--- a/docs/system/qemu-block-drivers.rst.inc
405
+++ b/docs/system/qemu-block-drivers.rst.inc
405
+++ b/docs/system/qemu-block-drivers.rst.inc
406
@@ -XXX,XX +XXX,XX @@ What you should *never* do:
406
@@ -XXX,XX +XXX,XX @@ What you should *never* do:
407
- expect it to work when loadvm'ing
407
- expect it to work when loadvm'ing
408
- write to the FAT directory on the host system while accessing it with the guest system
408
- write to the FAT directory on the host system while accessing it with the guest system
409
409
410
+.. _nbd:
410
+.. _nbd:
411
+
411
+
412
NBD access
412
NBD access
413
~~~~~~~~~~
413
~~~~~~~~~~
414
414
415
diff --git a/docs/tools/qemu-storage-daemon.rst b/docs/tools/qemu-storage-daemon.rst
415
diff --git a/docs/tools/qemu-storage-daemon.rst b/docs/tools/qemu-storage-daemon.rst
416
index XXXXXXX..XXXXXXX 100644
416
index XXXXXXX..XXXXXXX 100644
417
--- a/docs/tools/qemu-storage-daemon.rst
417
--- a/docs/tools/qemu-storage-daemon.rst
418
+++ b/docs/tools/qemu-storage-daemon.rst
418
+++ b/docs/tools/qemu-storage-daemon.rst
419
@@ -XXX,XX +XXX,XX @@
419
@@ -XXX,XX +XXX,XX @@
420
+.. _storage-daemon:
420
+.. _storage-daemon:
421
+
421
+
422
===================
422
===================
423
QEMU Storage Daemon
423
QEMU Storage Daemon
424
===================
424
===================
425
diff --git a/docs/user/main.rst b/docs/user/main.rst
425
diff --git a/docs/user/main.rst b/docs/user/main.rst
426
index XXXXXXX..XXXXXXX 100644
426
index XXXXXXX..XXXXXXX 100644
427
--- a/docs/user/main.rst
427
--- a/docs/user/main.rst
428
+++ b/docs/user/main.rst
428
+++ b/docs/user/main.rst
429
@@ -XXX,XX +XXX,XX @@
429
@@ -XXX,XX +XXX,XX @@
430
+.. _user-mode:
430
+.. _user-mode:
431
+
431
+
432
QEMU User space emulator
432
QEMU User space emulator
433
========================
433
========================
434
434
435
@@ -XXX,XX +XXX,XX @@ QEMU was conceived so that ultimately it can emulate itself. Although it
435
@@ -XXX,XX +XXX,XX @@ QEMU was conceived so that ultimately it can emulate itself. Although it
436
is not very useful, it is an important test to show the power of the
436
is not very useful, it is an important test to show the power of the
437
emulator.
437
emulator.
438
438
439
+.. _linux-user-mode:
439
+.. _linux-user-mode:
440
+
440
+
441
Linux User space emulator
441
Linux User space emulator
442
-------------------------
442
-------------------------
443
443
444
@@ -XXX,XX +XXX,XX @@ Other binaries
444
@@ -XXX,XX +XXX,XX @@ Other binaries
445
* ``qemu-sparc64`` can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
445
* ``qemu-sparc64`` can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
446
SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
446
SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
447
447
448
+.. _bsd-user-mode:
448
+.. _bsd-user-mode:
449
+
449
+
450
BSD User space emulator
450
BSD User space emulator
451
-----------------------
451
-----------------------
452
452
453
--
453
--
454
2.39.5
454
2.39.5
diff view generated by jsdifflib
1
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
1
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
2
---
2
---
3
docs/devel/control-flow-integrity.rst | 2 +
3
docs/devel/control-flow-integrity.rst | 2 +
4
docs/devel/multi-thread-tcg.rst | 2 +
4
docs/devel/multi-thread-tcg.rst | 2 +
5
docs/glossary.rst | 280 ++++++++++++++++++++++++++
5
docs/glossary.rst | 280 ++++++++++++++++++++++++++
6
docs/index.rst | 1 +
6
docs/index.rst | 1 +
7
docs/system/arm/virt.rst | 2 +
7
docs/system/arm/virt.rst | 2 +
8
docs/system/images.rst | 2 +
8
docs/system/images.rst | 2 +
9
docs/tools/qemu-nbd.rst | 2 +
9
docs/tools/qemu-nbd.rst | 2 +
10
7 files changed, 291 insertions(+)
10
7 files changed, 291 insertions(+)
11
create mode 100644 docs/glossary.rst
11
create mode 100644 docs/glossary.rst
12
12
13
diff --git a/docs/devel/control-flow-integrity.rst b/docs/devel/control-flow-integrity.rst
13
diff --git a/docs/devel/control-flow-integrity.rst b/docs/devel/control-flow-integrity.rst
14
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
15
--- a/docs/devel/control-flow-integrity.rst
15
--- a/docs/devel/control-flow-integrity.rst
16
+++ b/docs/devel/control-flow-integrity.rst
16
+++ b/docs/devel/control-flow-integrity.rst
17
@@ -XXX,XX +XXX,XX @@
17
@@ -XXX,XX +XXX,XX @@
18
+.. _cfi:
18
+.. _cfi:
19
+
19
+
20
============================
20
============================
21
Control-Flow Integrity (CFI)
21
Control-Flow Integrity (CFI)
22
============================
22
============================
23
diff --git a/docs/devel/multi-thread-tcg.rst b/docs/devel/multi-thread-tcg.rst
23
diff --git a/docs/devel/multi-thread-tcg.rst b/docs/devel/multi-thread-tcg.rst
24
index XXXXXXX..XXXXXXX 100644
24
index XXXXXXX..XXXXXXX 100644
25
--- a/docs/devel/multi-thread-tcg.rst
25
--- a/docs/devel/multi-thread-tcg.rst
26
+++ b/docs/devel/multi-thread-tcg.rst
26
+++ b/docs/devel/multi-thread-tcg.rst
27
@@ -XXX,XX +XXX,XX @@
27
@@ -XXX,XX +XXX,XX @@
28
This work is licensed under the terms of the GNU GPL, version 2 or
28
This work is licensed under the terms of the GNU GPL, version 2 or
29
later. See the COPYING file in the top-level directory.
29
later. See the COPYING file in the top-level directory.
30
30
31
+.. _mttcg:
31
+.. _mttcg:
32
+
32
+
33
==================
33
==================
34
Multi-threaded TCG
34
Multi-threaded TCG
35
==================
35
==================
36
diff --git a/docs/glossary.rst b/docs/glossary.rst
36
diff --git a/docs/glossary.rst b/docs/glossary.rst
37
new file mode 100644
37
new file mode 100644
38
index XXXXXXX..XXXXXXX
38
index XXXXXXX..XXXXXXX
39
--- /dev/null
39
--- /dev/null
40
+++ b/docs/glossary.rst
40
+++ b/docs/glossary.rst
41
@@ -XXX,XX +XXX,XX @@
41
@@ -XXX,XX +XXX,XX @@
42
+.. _Glossary:
42
+.. _Glossary:
43
+
43
+
44
+--------
44
+--------
45
+Glossary
45
+Glossary
46
+--------
46
+--------
47
+
47
+
48
+This section of the manual presents brief definitions of acronyms and terms used
48
+This section of the manual presents brief definitions of acronyms and terms used
49
+by QEMU developers.
49
+by QEMU developers.
50
+
50
+
51
+Accelerator
51
+Accelerator
52
+-----------
52
+-----------
53
+
53
+
54
+A specific API used to accelerate execution of guest instructions. It can be
54
+A specific API used to accelerate execution of guest instructions. It can be
55
+hardware-based, through a virtualization API provided by the host OS (kvm, hvf,
55
+hardware-based, through a virtualization API provided by the host OS (kvm, hvf,
56
+whpx, ...), or software-based (tcg). See this description of `supported
56
+whpx, ...), or software-based (tcg). See this description of `supported
57
+accelerators<Accelerators>`.
57
+accelerators<Accelerators>`.
58
+
58
+
59
+Board
59
+Board
60
+-----
60
+-----
61
+
61
+
62
+Another name for :ref:`machine`.
62
+Another name for :ref:`machine`.
63
+
63
+
64
+Block
64
+Block
65
+-----
65
+-----
66
+
66
+
67
+Block drivers are the available `disk formats and front-ends
67
+Block drivers are the available `disk formats and front-ends
68
+<block-drivers>` available, and block devices `(see Block device section on
68
+<block-drivers>` available, and block devices `(see Block device section on
69
+options page)<sec_005finvocation>` are using them to implement disks for a
69
+options page)<sec_005finvocation>` are using them to implement disks for a
70
+virtual machine.
70
+virtual machine.
71
+
71
+
72
+CFI
72
+CFI
73
+---
73
+---
74
+
74
+
75
+Control Flow Integrity is a hardening technique used to prevent exploits
75
+Control Flow Integrity is a hardening technique used to prevent exploits
76
+targeting QEMU by detecting unexpected branches during execution. QEMU `actively
76
+targeting QEMU by detecting unexpected branches during execution. QEMU `actively
77
+supports<cfi>` being compiled with CFI enabled.
77
+supports<cfi>` being compiled with CFI enabled.
78
+
78
+
79
+Device
79
+Device
80
+------
80
+------
81
+
81
+
82
+In QEMU, a device is a piece of hardware visible to the guest. Examples include
82
+In QEMU, a device is a piece of hardware visible to the guest. Examples include
83
+UARTs, PCI controllers, PCI cards, VGA controllers, and many more.
83
+UARTs, PCI controllers, PCI cards, VGA controllers, and many more.
84
+
84
+
85
+QEMU is able to emulate a CPU, and all the hardware interacting with it,
85
+QEMU is able to emulate a CPU, and all the hardware interacting with it,
86
+including `many devices<device-emulation>`. When QEMU runs a virtual machine
86
+including `many devices<device-emulation>`. When QEMU runs a virtual machine
87
+using a hardware-based accelerator, it is responsible for emulating, using
87
+using a hardware-based accelerator, it is responsible for emulating, using
88
+software, all devices.
88
+software, all devices.
89
+
89
+
90
+EDK2
90
+EDK2
91
+----
91
+----
92
+
92
+
93
+EDK2, as known as `TianoCore <https://www.tianocore.org/>`_, is an open source
93
+EDK2, as known as `TianoCore <https://www.tianocore.org/>`_, is an open source
94
+implementation of UEFI standard. QEMU virtual machines that boot a UEFI firmware
94
+implementation of UEFI standard. QEMU virtual machines that boot a UEFI firmware
95
+usually use EDK2.
95
+usually use EDK2.
96
+
96
+
97
+gdbstub
97
+gdbstub
98
+-------
98
+-------
99
+
99
+
100
+QEMU implements a `gdb server <GDB usage>`, allowing gdb to attach to it and
100
+QEMU implements a `gdb server <GDB usage>`, allowing gdb to attach to it and
101
+debug a running virtual machine, or a program in user-mode. This allows
101
+debug a running virtual machine, or a program in user-mode. This allows
102
+debugging the guest code that is running inside QEMU.
102
+debugging the guest code that is running inside QEMU.
103
+
103
+
104
+glib2
104
+glib2
105
+-----
105
+-----
106
+
106
+
107
+`GLib2 <https://docs.gtk.org/glib/>`_ is one of the most important libraries we
107
+`GLib2 <https://docs.gtk.org/glib/>`_ is one of the most important libraries we
108
+are using through the codebase. It provides many data structures, macros, string
108
+are using through the codebase. It provides many data structures, macros, string
109
+and thread utilities and portable functions across different OS. It's required
109
+and thread utilities and portable functions across different OS. It's required
110
+to build QEMU.
110
+to build QEMU.
111
+
111
+
112
+Guest agent
112
+Guest agent
113
+-----------
113
+-----------
114
+
114
+
115
+The `QEMU Guest Agent <qemu-ga>` is a daemon intended to be run within virtual
115
+The `QEMU Guest Agent <qemu-ga>` is a daemon intended to be run within virtual
116
+machines. It provides various services to help QEMU to interact with it.
116
+machines. It provides various services to help QEMU to interact with it.
117
+
117
+
118
+.. _guest:
118
+.. _guest:
119
+
119
+
120
+Guest
120
+Guest
121
+-----
121
+-----
122
+
122
+
123
+Guest is the architecture of the virtual machine, which is emulated.
123
+Guest is the architecture of the virtual machine, which is emulated.
124
+See also :ref:`host`.
124
+See also :ref:`host`.
125
+
125
+
126
+Sometimes this is called the :ref:`target` architecture, but that term
126
+Sometimes this is called the :ref:`target` architecture, but that term
127
+can be ambiguous.
127
+can be ambiguous.
128
+
128
+
129
+.. _host:
129
+.. _host:
130
+
130
+
131
+Host
131
+Host
132
+----
132
+----
133
+
133
+
134
+Host is the architecture on which QEMU is running on, which is native.
134
+Host is the architecture on which QEMU is running on, which is native.
135
+See also :ref:`guest`.
135
+See also :ref:`guest`.
136
+
136
+
137
+Hypervisor
137
+Hypervisor
138
+----------
138
+----------
139
+
139
+
140
+The formal definition of an hypervisor is a program or API than can be used to
140
+The formal definition of an hypervisor is a program or API than can be used to
141
+manage a virtual machine. QEMU is a virtualizer, that interacts with various
141
+manage a virtual machine. QEMU is a virtualizer, that interacts with various
142
+hypervisors.
142
+hypervisors.
143
+
143
+
144
+In the context of QEMU, an hypervisor is an API, provided by the Host OS,
144
+In the context of QEMU, an hypervisor is an API, provided by the Host OS,
145
+allowing to execute virtual machines. Linux implementation is KVM (and supports
145
+allowing to execute virtual machines. Linux implementation is KVM (and supports
146
+Xen as well). For MacOS, it's HVF. Windows defines WHPX. And NetBSD provides
146
+Xen as well). For MacOS, it's HVF. Windows defines WHPX. And NetBSD provides
147
+NVMM.
147
+NVMM.
148
+
148
+
149
+.. _machine:
149
+.. _machine:
150
+
150
+
151
+Machine
151
+Machine
152
+-------
152
+-------
153
+
153
+
154
+QEMU's system emulation models many different types of hardware. A machine model
154
+QEMU's system emulation models many different types of hardware. A machine model
155
+(sometimes called a board model) is the model of a complete virtual system with
155
+(sometimes called a board model) is the model of a complete virtual system with
156
+RAM, one or more CPUs, and various devices. It can be selected with the option
156
+RAM, one or more CPUs, and various devices. It can be selected with the option
157
+``-machine`` of qemu-system. Our machine models can be found on this `page
157
+``-machine`` of qemu-system. Our machine models can be found on this `page
158
+<system-targets-ref>`.
158
+<system-targets-ref>`.
159
+
159
+
160
+Migration
160
+Migration
161
+---------
161
+---------
162
+
162
+
163
+QEMU can save and restore the execution of a virtual machine between different
163
+QEMU can save and restore the execution of a virtual machine between different
164
+host systems. This is provided by the `Migration framework<migration>`.
164
+host systems. This is provided by the `Migration framework<migration>`.
165
+
165
+
166
+NBD
166
+NBD
167
+---
167
+---
168
+
168
+
169
+The `QEMU Network Block Device server <qemu-nbd>` is a tool that can be used to
169
+The `QEMU Network Block Device server <qemu-nbd>` is a tool that can be used to
170
+mount and access QEMU images, providing functionality similar to a loop device.
170
+mount and access QEMU images, providing functionality similar to a loop device.
171
+
171
+
172
+Mailing List
172
+Mailing List
173
+------------
173
+------------
174
+
174
+
175
+This is `where <https://wiki.qemu.org/Contribute/MailingLists>`_ all the
175
+This is `where <https://wiki.qemu.org/Contribute/MailingLists>`_ all the
176
+development happens! Changes are posted as series, that all developers can
176
+development happens! Changes are posted as series, that all developers can
177
+review and share feedback for.
177
+review and share feedback for.
178
+
178
+
179
+For reporting issues, our `GitLab
179
+For reporting issues, our `GitLab
180
+<https://gitlab.com/qemu-project/qemu/-/issues>`_ tracker is the best place.
180
+<https://gitlab.com/qemu-project/qemu/-/issues>`_ tracker is the best place.
181
+
181
+
182
+.. _softmmu:
182
+.. _softmmu:
183
+
183
+
184
+MMU / softmmu
184
+MMU / softmmu
185
+-------------
185
+-------------
186
+
186
+
187
+The Memory Management Unit is responsible for translating virtual addresses to
187
+The Memory Management Unit is responsible for translating virtual addresses to
188
+physical addresses and managing memory protection. QEMU system mode is named
188
+physical addresses and managing memory protection. QEMU system mode is named
189
+"softmmu" precisely because it implements this in software, including a TLB
189
+"softmmu" precisely because it implements this in software, including a TLB
190
+(Translation lookaside buffer), for the guest virtual machine.
190
+(Translation lookaside buffer), for the guest virtual machine.
191
+
191
+
192
+QEMU user-mode does not implement a full software MMU, but "simply" translates
192
+QEMU user-mode does not implement a full software MMU, but "simply" translates
193
+virtual addresses by adding a specific offset, and relying on host MMU/OS
193
+virtual addresses by adding a specific offset, and relying on host MMU/OS
194
+instead.
194
+instead.
195
+
195
+
196
+Monitor / QMP / HMP
196
+Monitor / QMP / HMP
197
+-------------------
197
+-------------------
198
+
198
+
199
+The `QEMU Monitor <QEMU monitor>` is a text interface which can be used to interact
199
+The `QEMU Monitor <QEMU monitor>` is a text interface which can be used to interact
200
+with a running virtual machine.
200
+with a running virtual machine.
201
+
201
+
202
+QMP stands for QEMU Monitor Protocol and is a json based interface.
202
+QMP stands for QEMU Monitor Protocol and is a json based interface.
203
+HMP stands for Human Monitor Protocol and is a set of text commands available
203
+HMP stands for Human Monitor Protocol and is a set of text commands available
204
+for users who prefer natural language to json.
204
+for users who prefer natural language to json.
205
+
205
+
206
+MTTCG
206
+MTTCG
207
+-----
207
+-----
208
+
208
+
209
+Multiple CPU support was first implemented using a round-robin algorithm
209
+Multiple CPU support was first implemented using a round-robin algorithm
210
+running on a single thread. Later on, `Multi-threaded TCG <mttcg>` was developed
210
+running on a single thread. Later on, `Multi-threaded TCG <mttcg>` was developed
211
+to benefit from multiple cores to speed up execution.
211
+to benefit from multiple cores to speed up execution.
212
+
212
+
213
+Plugins
213
+Plugins
214
+-------
214
+-------
215
+
215
+
216
+`TCG Plugins <TCG Plugins>` is an API used to instrument guest code, in system
216
+`TCG Plugins <TCG Plugins>` is an API used to instrument guest code, in system
217
+and user mode. The end goal is to have a similar set of functionality compared
217
+and user mode. The end goal is to have a similar set of functionality compared
218
+to `DynamoRIO <https://dynamorio.org/>`_ or `valgrind <https://valgrind.org/>`_.
218
+to `DynamoRIO <https://dynamorio.org/>`_ or `valgrind <https://valgrind.org/>`_.
219
+
219
+
220
+One key advantage of QEMU plugins is that they can be used to perform
220
+One key advantage of QEMU plugins is that they can be used to perform
221
+architecture agnostic instrumentation.
221
+architecture agnostic instrumentation.
222
+
222
+
223
+Patchew
223
+Patchew
224
+-------
224
+-------
225
+
225
+
226
+`Patchew <https://patchew.org/QEMU/>`_ is a website that tracks patches on the
226
+`Patchew <https://patchew.org/QEMU/>`_ is a website that tracks patches on the
227
+Mailing List.
227
+Mailing List.
228
+
228
+
229
+PR
229
+PR
230
+--
230
+--
231
+
231
+
232
+Once a series is reviewed and accepted by a subsystem maintainer, it will be
232
+Once a series is reviewed and accepted by a subsystem maintainer, it will be
233
+included in a PR (Pull Request) that the project maintainer will merge into QEMU
233
+included in a PR (Pull Request) that the project maintainer will merge into QEMU
234
+main branch, after running tests.
234
+main branch, after running tests.
235
+
235
+
236
+The QEMU project doesn't currently expect most developers to directly submit
236
+The QEMU project doesn't currently expect most developers to directly submit
237
+pull requests.
237
+pull requests.
238
+
238
+
239
+QCOW2
239
+QCOW2
240
+-----
240
+-----
241
+
241
+
242
+QEMU Copy On Write is a disk format developed by QEMU. It provides transparent
242
+QEMU Copy On Write is a disk format developed by QEMU. It provides transparent
243
+compression, automatic extension, and many other advantages over a raw image.
243
+compression, automatic extension, and many other advantages over a raw image.
244
+
244
+
245
+qcow2 is the recommended format to use.
245
+qcow2 is the recommended format to use.
246
+
246
+
247
+QEMU
247
+QEMU
248
+----
248
+----
249
+
249
+
250
+`QEMU (Quick Emulator) <https://www.qemu.org/>`_ is a generic and open source
250
+`QEMU (Quick Emulator) <https://www.qemu.org/>`_ is a generic and open source
251
+machine emulator and virtualizer.
251
+machine emulator and virtualizer.
252
+
252
+
253
+QOM
253
+QOM
254
+---
254
+---
255
+
255
+
256
+`QEMU Object Model <qom>` is an object oriented API used to define various
256
+`QEMU Object Model <qom>` is an object oriented API used to define various
257
+devices and hardware in the QEMU codebase.
257
+devices and hardware in the QEMU codebase.
258
+
258
+
259
+Record/replay
259
+Record/replay
260
+-------------
260
+-------------
261
+
261
+
262
+`Record/replay <replay>` is a feature of QEMU allowing to have a deterministic
262
+`Record/replay <replay>` is a feature of QEMU allowing to have a deterministic
263
+and reproducible execution of a virtual machine.
263
+and reproducible execution of a virtual machine.
264
+
264
+
265
+Rust
265
+Rust
266
+----
266
+----
267
+
267
+
268
+`A new programming language <https://www.rust-lang.org/>`_, memory safe by
268
+`A new programming language <https://www.rust-lang.org/>`_, memory safe by
269
+default. There is a work in progress to integrate it in QEMU codebase for
269
+default. There is a work in progress to integrate it in QEMU codebase for
270
+various subsystems.
270
+various subsystems.
271
+
271
+
272
+System mode
272
+System mode
273
+-----------
273
+-----------
274
+
274
+
275
+QEMU System mode provides a virtual model of an entire machine (CPU, memory and
275
+QEMU System mode provides a virtual model of an entire machine (CPU, memory and
276
+emulated devices) to run a guest OS. In this mode the CPU may be fully emulated,
276
+emulated devices) to run a guest OS. In this mode the CPU may be fully emulated,
277
+or it may work with a hypervisor such as KVM, Xen or Hypervisor.Framework to
277
+or it may work with a hypervisor such as KVM, Xen or Hypervisor.Framework to
278
+allow the guest to run directly on the host CPU.
278
+allow the guest to run directly on the host CPU.
279
+
279
+
280
+QEMU System mode is called :ref:`softmmu <softmmu>` as well.
280
+QEMU System mode is called :ref:`softmmu <softmmu>` as well.
281
+
281
+
282
+.. _target:
282
+.. _target:
283
+
283
+
284
+Target
284
+Target
285
+------
285
+------
286
+
286
+
287
+The term "target" can be ambiguous. In most places in QEMU it is used as a
287
+The term "target" can be ambiguous. In most places in QEMU it is used as a
288
+synonym for :ref:`guest`. For example the code for emulating Arm CPUs is in
288
+synonym for :ref:`guest`. For example the code for emulating Arm CPUs is in
289
+``target/arm/``. However in the :ref:`TCG subsystem <tcg>` "target" refers to the
289
+``target/arm/``. However in the :ref:`TCG subsystem <tcg>` "target" refers to the
290
+architecture which QEMU is running on, i.e. the :ref:`host`.
290
+architecture which QEMU is running on, i.e. the :ref:`host`.
291
+
291
+
292
+TCG
292
+TCG
293
+---
293
+---
294
+
294
+
295
+TCG is the QEMU `Tiny Code Generator <tcg>`. It is the JIT (just-in-time)
295
+TCG is the QEMU `Tiny Code Generator <tcg>`. It is the JIT (just-in-time)
296
+compiler we use to emulate a guest CPU in software.
296
+compiler we use to emulate a guest CPU in software.
297
+
297
+
298
+It is one of the accelerators supported by QEMU, and supports a lot of
298
+It is one of the accelerators supported by QEMU, and supports a lot of
299
+guest/host architectures.
299
+guest/host architectures.
300
+
300
+
301
+User mode
301
+User mode
302
+---------
302
+---------
303
+
303
+
304
+QEMU User mode can launch processes compiled for one CPU on another CPU. In this
304
+QEMU User mode can launch processes compiled for one CPU on another CPU. In this
305
+mode the CPU is always emulated. In this mode, QEMU translate system calls from
305
+mode the CPU is always emulated. In this mode, QEMU translate system calls from
306
+guest to host kernel. It is available for Linux and BSD.
306
+guest to host kernel. It is available for Linux and BSD.
307
+
307
+
308
+VirtIO
308
+VirtIO
309
+------
309
+------
310
+
310
+
311
+VirtIO is an open standard used to define and implement virtual devices with a
311
+VirtIO is an open standard used to define and implement virtual devices with a
312
+minimal overhead, defining a set of data structures and hypercalls (similar to
312
+minimal overhead, defining a set of data structures and hypercalls (similar to
313
+system calls, but targeting an hypervisor, which happens to be QEMU in our
313
+system calls, but targeting an hypervisor, which happens to be QEMU in our
314
+case). It's designed to be more efficient than emulating a real device, by
314
+case). It's designed to be more efficient than emulating a real device, by
315
+minimizing the amount of interactions between a guest VM and its hypervisor.
315
+minimizing the amount of interactions between a guest VM and its hypervisor.
316
+
316
+
317
+vhost-user
317
+vhost-user
318
+----------
318
+----------
319
+
319
+
320
+`Vhost-user <vhost_user>` is an interface used to implement VirtIO devices
320
+`Vhost-user <vhost_user>` is an interface used to implement VirtIO devices
321
+outside of QEMU itself.
321
+outside of QEMU itself.
322
diff --git a/docs/index.rst b/docs/index.rst
322
diff --git a/docs/index.rst b/docs/index.rst
323
index XXXXXXX..XXXXXXX 100644
323
index XXXXXXX..XXXXXXX 100644
324
--- a/docs/index.rst
324
--- a/docs/index.rst
325
+++ b/docs/index.rst
325
+++ b/docs/index.rst
326
@@ -XXX,XX +XXX,XX @@ Welcome to QEMU's documentation!
326
@@ -XXX,XX +XXX,XX @@ Welcome to QEMU's documentation!
327
interop/index
327
interop/index
328
specs/index
328
specs/index
329
devel/index
329
devel/index
330
+ glossary
330
+ glossary
331
diff --git a/docs/system/arm/virt.rst b/docs/system/arm/virt.rst
331
diff --git a/docs/system/arm/virt.rst b/docs/system/arm/virt.rst
332
index XXXXXXX..XXXXXXX 100644
332
index XXXXXXX..XXXXXXX 100644
333
--- a/docs/system/arm/virt.rst
333
--- a/docs/system/arm/virt.rst
334
+++ b/docs/system/arm/virt.rst
334
+++ b/docs/system/arm/virt.rst
335
@@ -XXX,XX +XXX,XX @@
335
@@ -XXX,XX +XXX,XX @@
336
+.. _arm-virt:
336
+.. _arm-virt:
337
+
337
+
338
'virt' generic virtual platform (``virt``)
338
'virt' generic virtual platform (``virt``)
339
==========================================
339
==========================================
340
340
341
diff --git a/docs/system/images.rst b/docs/system/images.rst
341
diff --git a/docs/system/images.rst b/docs/system/images.rst
342
index XXXXXXX..XXXXXXX 100644
342
index XXXXXXX..XXXXXXX 100644
343
--- a/docs/system/images.rst
343
--- a/docs/system/images.rst
344
+++ b/docs/system/images.rst
344
+++ b/docs/system/images.rst
345
@@ -XXX,XX +XXX,XX @@ VM snapshots currently have the following known limitations:
345
@@ -XXX,XX +XXX,XX @@ VM snapshots currently have the following known limitations:
346
- A few device drivers still have incomplete snapshot support so their
346
- A few device drivers still have incomplete snapshot support so their
347
state is not saved or restored properly (in particular USB).
347
state is not saved or restored properly (in particular USB).
348
348
349
+.. _block-drivers:
349
+.. _block-drivers:
350
+
350
+
351
.. include:: qemu-block-drivers.rst.inc
351
.. include:: qemu-block-drivers.rst.inc
352
diff --git a/docs/tools/qemu-nbd.rst b/docs/tools/qemu-nbd.rst
352
diff --git a/docs/tools/qemu-nbd.rst b/docs/tools/qemu-nbd.rst
353
index XXXXXXX..XXXXXXX 100644
353
index XXXXXXX..XXXXXXX 100644
354
--- a/docs/tools/qemu-nbd.rst
354
--- a/docs/tools/qemu-nbd.rst
355
+++ b/docs/tools/qemu-nbd.rst
355
+++ b/docs/tools/qemu-nbd.rst
356
@@ -XXX,XX +XXX,XX @@
356
@@ -XXX,XX +XXX,XX @@
357
+.. _qemu-nbd:
357
+.. _qemu-nbd:
358
+
358
+
359
=====================================
359
=====================================
360
QEMU Disk Network Block Device Server
360
QEMU Disk Network Block Device Server
361
=====================================
361
=====================================
362
--
362
--
363
2.39.5
363
2.39.5
diff view generated by jsdifflib