Browse Source

New upstream version 8.1.0

upstream/latest upstream/8.1.0
Andrea Bolognani 5 months ago
parent
commit
224b64ef68
  1. 26
      .gitignore
  2. 12
      .gitlab-ci.yml
  3. 3
      .gitmodules
  4. 8
      AUTHORS.rst
  5. 72
      NEWS.rst
  6. 2
      build-aux/meson.build
  7. 74
      build-aux/syntax-check.mk
  8. 2
      ci/containers/almalinux-8.Dockerfile
  9. 90
      ci/containers/centos-stream-9.Dockerfile
  10. 3
      ci/containers/debian-10-cross-aarch64.Dockerfile
  11. 3
      ci/containers/debian-10-cross-armv6l.Dockerfile
  12. 3
      ci/containers/debian-10-cross-armv7l.Dockerfile
  13. 3
      ci/containers/debian-10-cross-i686.Dockerfile
  14. 3
      ci/containers/debian-10-cross-mips.Dockerfile
  15. 3
      ci/containers/debian-10-cross-mips64el.Dockerfile
  16. 3
      ci/containers/debian-10-cross-mipsel.Dockerfile
  17. 3
      ci/containers/debian-10-cross-ppc64le.Dockerfile
  18. 3
      ci/containers/debian-10-cross-s390x.Dockerfile
  19. 3
      ci/containers/debian-10.Dockerfile
  20. 3
      ci/containers/opensuse-leap-152.Dockerfile
  21. 3
      ci/containers/ubuntu-1804.Dockerfile
  22. 3
      ci/containers/ubuntu-2004.Dockerfile
  23. 89
      ci/gitlab.yml
  24. 7
      ci/manifest.yml
  25. 14
      config.h
  26. 89
      docs/coding-style.rst
  27. 97
      docs/daemons.rst
  28. 3
      docs/docs.html.in
  29. 48
      docs/drvqemu.rst
  30. 93
      docs/formatdomain.rst
  31. 3
      docs/goals.html.in
  32. 1
      docs/images/meson.build
  33. BIN
      docs/images/node.gif
  34. 36
      docs/images/node.svg
  35. 4
      docs/index.html.in
  36. 270
      docs/kbase/debuglogs.rst
  37. 44
      docs/macos.rst
  38. 1
      docs/manpages/index.rst
  39. 151
      docs/manpages/libvirt-guests.rst
  40. 1
      docs/manpages/meson.build
  41. 39
      docs/manpages/virsh.rst
  42. 17
      docs/manpages/virt-admin.rst
  43. 44
      docs/meson.build
  44. 4
      docs/page.xsl
  45. 6
      docs/platforms.rst
  46. 6
      docs/remote.html.in
  47. 5
      docs/schemas/capability.rng
  48. 5
      docs/schemas/domainbackup.rng
  49. 5
      docs/schemas/domaincaps.rng
  50. 20
      docs/schemas/domaincommon.rng
  51. 5
      docs/schemas/nodedev.rng
  52. 14
      examples/c/misc/event-test.c
  53. 1
      include/libvirt/libvirt-domain-snapshot.h
  54. 37
      include/libvirt/libvirt-domain.h
  55. 2
      include/libvirt/libvirt-network.h
  56. 2
      include/libvirt/libvirt-nodedev.h
  57. 10
      include/libvirt/libvirt-secret.h
  58. 4
      include/libvirt/libvirt-storage.h
  59. 128
      libvirt.spec
  60. 126
      libvirt.spec.in
  61. 130
      meson.build
  62. 1
      po/POTFILES.in
  63. 1015
      po/as.po
  64. 829
      po/bg.po
  65. 975
      po/bn_IN.po
  66. 821
      po/bs.po
  67. 853
      po/ca.po
  68. 995
      po/cs.po
  69. 825
      po/da.po
  70. 1025
      po/de.po
  71. 848
      po/el.po
  72. 1015
      po/en_GB.po
  73. 1050
      po/es.po
  74. 836
      po/fi.po
  75. 955
      po/fr.po
  76. 1013
      po/gu.po
  77. 995
      po/hi.po
  78. 825
      po/hu.po
  79. 827
      po/id.po
  80. 948
      po/it.po
  81. 1017
      po/ja.po
  82. 1020
      po/kn.po
  83. 1122
      po/ko.po
  84. 15121
      po/libvirt.pot
  85. 825
      po/mk.po
  86. 1019
      po/ml.po
  87. 1010
      po/mr.po
  88. 790
      po/ms.po
  89. 809
      po/nb.po
  90. 962
      po/nl.po
  91. 1014
      po/or.po
  92. 1013
      po/pa.po
  93. 992
      po/pl.po
  94. 837
      po/pt.po
  95. 1018
      po/pt_BR.po
  96. 1020
      po/ru.po
  97. 711
      po/si.po
  98. 867
      po/sr.po
  99. 867
      po/sr@latin.po
  100. 1551
      po/sv.po

26
.gitignore

@ -0,0 +1,26 @@
# vim related ignores
*.swp
.lvimrc
# emacs related ignores
*#*#
*.#*#
.#*
*~
# git related ignores
*.rej
*.orig
.git-module-status
# python related ignores
__pycache__/
# libvirt related ignores
/build/
/ci/scratch/
tags
# clangd related ignores
.clangd
compile_commands.json

12
.gitlab-ci.yml

@ -56,9 +56,9 @@ include: '/ci/gitlab.yml'
# https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=website
website:
stage: builds
image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
image: $CI_REGISTRY_IMAGE/ci-almalinux-8:latest
needs:
- x86_64-centos-8-container
- x86_64-almalinux-8-container
before_script:
- *script_variables
script:
@ -92,9 +92,9 @@ codestyle:
# https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=potfile
potfile:
stage: builds
image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
image: $CI_REGISTRY_IMAGE/ci-almalinux-8:latest
needs:
- x86_64-centos-8-container
- x86_64-almalinux-8-container
rules:
- if: "$CI_COMMIT_BRANCH == 'master'"
before_script:
@ -114,9 +114,9 @@ potfile:
# Coverity job that is run only by schedules
coverity:
image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
image: $CI_REGISTRY_IMAGE/ci-almalinux-8:latest
needs:
- x86_64-centos-8-container
- x86_64-almalinux-8-container
stage: builds
script:
- curl https://scan.coverity.com/download/linux64 --form project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN -o /tmp/cov-analysis-linux64.tgz

3
.gitmodules

@ -0,0 +1,3 @@
[submodule "keycodemapdb"]
path = src/keycodemapdb
url = https://gitlab.com/keycodemap/keycodemapdb.git

8
AUTHORS.rst

@ -260,6 +260,7 @@ Patches have also been contributed by:
* Diego Woitasen <diego.woitasen@vhgroup.net>
* Dipankar Sarma <dipankar@in.ibm.com>
* Dirk Herrendoerfer <d.herrendoerfer@herrendoerfer.name>
* Divya Garg <divya.garg@nutanix.com>
* Dmitrii Shcherbakov <dmitrii.shcherbakov@canonical.com>
* Dmitry Andreev <dandreev@virtuozzo.com>
* Dmitry Guryanov <dguryanov@parallels.com>
@ -285,6 +286,7 @@ Patches have also been contributed by:
* Eiichi Tsukata <eiichi.tsukata@nutanix.com>
* Eli Qiao <liyong.qiao@intel.com>
* Eli Qiao <taget@linux.vnet.ibm.com>
* Emilio Herrera <ehespinosa57@gmail.com>
* Eric Blake <eblake@redhat.com>
* Eric Farman <farman@linux.ibm.com>
* Eric Farman <farman@linux.vnet.ibm.com>
@ -368,6 +370,7 @@ Patches have also been contributed by:
* Ishmanpreet Kaur Khera <khera.ishman@gmail.com>
* Ivan Baldo <ibaldo@adinet.com.uy>
* Ivan Kardykov <kardykov@tabit.pro>
* Ivan Teterevkov <ivan.teterevkov@nutanix.com>
* J.B. Joret <jb@linux.vnet.ibm.com>
* Jaak Ristioja <jaak@ristioja.ee>
* Jakob Meng <jakobmeng@web.de>
@ -405,6 +408,7 @@ Patches have also been contributed by:
* Jim Paris <jim@jtan.com>
* Jin Yan <jinyan12@huawei.com>
* Jincheng Miao <jmiao@redhat.com>
* Jing Qi <jinqi@redhat.com>
* Jingjing Shao <jishao@redhat.com>
* Jinsheng Zhang <zhangjl02@inspur.com>
* Jiri Denemark <jdenemar@redhat.com>
@ -443,6 +447,7 @@ Patches have also been contributed by:
* Kenneth Nagin <NAGIN@il.ibm.com>
* Kevin Locke <kevin@kevinlocke.name>
* Kiarie Kahurani <davidkiarie4@gmail.com>
* Kim InSoo <simmon@nplob.com>
* Klaus Ethgen <Klaus@Ethgen.de>
* Koichi Murase <myoga.murase@gmail.com>
* Konrad Rzeszutek Wilk <konrad@kernel.org>
@ -571,6 +576,7 @@ Patches have also been contributed by:
* Nickys Music Group <nickys.music.group@gmail.com>
* Nico Pache <npache@redhat.com>
* Nicolas Brignone <nmbrignone@gmail.com>
* Nicolas Lécureuil <neoclust@mageia.org>
* Niels de Vos <ndevos@redhat.com>
* Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
* Nikos Mavrogiannopoulos <nmav@redhat.com>
@ -876,7 +882,9 @@ Patches have also been contributed by:
* ramyelkest <ramyelkest@gmail.com>
* ryan woodsmall <rwoodsmall@gmail.com>
* sannyshao <jishao@redhat.com>
* shenjiatong <yshxxsjt715@gmail.com>
* simmon <simmon@nplob.com>
* tuqiang <tu.qiang35@zte.com.cn>
* w00251574 <wangjie88@huawei.com>
* wangjian <wangjian161@huawei.com>
* weiwei li <weiweili821@gmail.com>

72
NEWS.rst

@ -8,6 +8,78 @@ the changes introduced by each of them.
For a more fine-grained view, use the `git log`_.
v8.1.0 (2022-03-01)
===================
* **New features**
* qemu: Add hvf domain type for Hypervisor.framework
It works on Intel machines as well as recent machines powered by Apple
Silicon. QEMU 6.2.0 is needed for Apple Silicon support.
* qemu: Support mode option for dirtyrate calculation
Introduce ``virDomainDirtyRateCalcFlags`` as parameter of
``virDomainStartDirtyRateCalc``, which is used to specify the mode of
dirty page rate calculation.
Add ``--mode`` option to ``virsh domdirtyrate-calc``, which can be
either of the following 3 options:
``page-sampling, dirty-bitmap, dirty-ring``.
Add ``calc_mode`` field for dirtyrate statistics returned by
``virsh domstats --dirtyrate``, also add ``vCPU dirtyrate`` if
``dirty-ring`` mode was used in last measurement.
* **Improvements**
* packaging: sysconfig files no longer installed
libvirt used to provide defaults in various /etc/sysconfig/ files, such
as /etc/sysconfig/libvirtd. Since these files are owned by the admin, this
made it difficult to change built-in defaults in case such file was
modified by the admin. The built-in defaults are now part of the provided
systemd unit files, such as libvirtd.service. These unit files continue
to parse sysconfig files, in case they are created by the admin and filled
with the desired key=value pairs.
* virnetdev: Ignore EPERM on implicit clearing of VF VLAN ID
Libvirt will now ignore EPERM errors on attempts to implicitly clear a
VLAN ID (when a VLAN is not explicitly provided via an interface XML
using a 0 or a non-zero value) as SmartNIC DPUs do not expose VLAN
programming capabilities to the hypervisor host. This allows Libvirt
clients to avoid specifying a VLAN and expect VF configuration to work
since Libvirt tries to clear a VLAN in the same operation
as setting a MAC address for VIR_DOMAIN_NET_TYPE_HOSTDEV devices which
is now split into two distinct operations. EPERM errors received while
trying to program a non-zero VLAN ID or explicitly program a VLAN ID 0
will still cause errors as before so there is no change in behavior
in those cases.
* **Bug fixes**
* Remove unix sockets from filesystem when disabling a '.socket' systemd unit
The presence of the socket files is used by our remote driver to determine
which service to access. Since neiter systemd nor the daemons clean up the
socket file clients were running into problems when a modular deployment was
switched to monolithic ``libvirtd``.
* qemu: Fixes of fd passing during hotplug and hotunplug of chardevs
FDs used as chardev backing are now properly removed when hot-unplugging
a chardev from qemu and hotplugged chardevs now properly use ``virtlogd``
to handle the input and output from qemu.
* RPM: Run pre/post-install steps on ``daemon-driver-storage-core``
Previously the pre/post-install code was part of the meta-package which
installed all storage driver sub-packages thus a minimalistic install
of the storage driver didn't behave correctly.
v8.0.0 (2022-01-14)
===================

2
build-aux/meson.build

@ -20,7 +20,7 @@ endif
if host_machine.system() == 'freebsd'
grep_prog = find_program('grep')
grep_cmd = run_command(grep_prog, '--version')
grep_cmd = run_command(grep_prog, '--version', check: true)
if grep_cmd.stdout().startswith('grep (BSD grep')
grep_prog = find_program('/usr/local/bin/grep', required: false)
if not grep_prog.found()

74
build-aux/syntax-check.mk

@ -116,6 +116,7 @@ VC_LIST_ALWAYS_EXCLUDE_REGEX = \
# the safewrite wrapper.
sc_avoid_write:
@prohibit='\<write *\(' \
exclude='sc_avoid_write' \
in_vc_files='\.c$$' \
halt='consider using safewrite instead of write' \
$(_sc_search_regexp)
@ -244,7 +245,7 @@ sc_prohobit_vsnprintf:
sc_prohibit_strdup:
@prohibit='\<strn?dup\> *\(' \
halt='use VIR_STRDUP, not strdup' \
halt='use g_str(n)dup, not str(n)dup' \
$(_sc_search_regexp)
# Prefer virSetUIDGID.
@ -874,20 +875,62 @@ sc_prohibit_obj_free_apis_in_virsh:
halt='avoid using public virXXXFree in virsh, use virsh-prefixed wrappers instead' \
$(_sc_search_regexp)
https_sites = www.libvirt.org
https_sites += libvirt.org
https_sites += security.libvirt.org
https_sites += qemu.org
https_sites += www.qemu.org
https_sites += wiki.qemu.org
https_sites += linux-kvm.org
https_sites += www.linux-kvm.org
https_re= ($(subst $(space),|,$(https_sites)))
# Links in various schemas
http_sites = libvirt.org.*\/schemas\/
http_sites += \.dtd
http_sites += libosinfo
http_sites += localhost
http_sites += rdf:resource
http_sites += schemas.dmtf.org
http_sites += schemas.microsoft.com
http_sites += schemas.xmlsoap.org
http_sites += www.inkscape.org
http_sites += www.innotek.de
http_sites += www.w3.org
http_sites += xmlns
# Links in licenses
http_sites += scripts.sil.org
http_sites += www.gnu.org\/licenses\/
http_sites += www.sun.com
# Example links
http_sites += example.com
http_sites += example.org
http_sites += herp.derp
# HTTP-only sites
http_sites += 0pointer.de
http_sites += mah.everybody.org
http_sites += mingw.org
http_sites += munin.projects.linpro.no
http_sites += netcat.sourceforge.net
http_sites += snooze.inria.fr
http_sites += www.nimbusproject.org
http_sites += www.odin.com
http_sites += www.sflow.net
http_sites += xmlsoft.org
http_sites += etallen.com
# dead sites
http_sites += blog.lystor.org.ua
http_sites += blog.mes-stats.fr
http_sites += cc1.ifj.edu.pl
http_sites += www.javvin.com
# 404 links
http_sites += publib.boulder.ibm.com
http_sites += kerneltrap.org
http_sites += valloric.github.io
http_sites += www.microsoft.com
http_sites += xenbits.xen.org
http_sites += lovezutto.googlepages.com
http_re= ($(subst $(space),|,$(http_sites)))
sc_prohibit_http_urls:
@prohibit='http://$(https_re)' \
exclude="/schemas/" \
@prohibit='http://\w' \
exclude="$(http_re)" \
halt='Links must use https:// protocol' \
$(_sc_search_regexp)
@ -1527,10 +1570,7 @@ sc_prohibit_enum_impl_with_vir_prefix_in_virsh:
# List all syntax-check exemptions:
exclude_file_name_regexp--sc_avoid_strcase = ^tools/vsh\.h$$
_src1=libvirt-stream|qemu/qemu_monitor|util/vir(command|file|fdstream)|rpc/virnetsocket|lxc/lxc_controller|locking/lock_daemon|logging/log_daemon|remote/remote_ssh_helper
_test1=shunloadtest|virnettlscontexttest|virnettlssessiontest|vircgroupmock|commandhelper
exclude_file_name_regexp--sc_avoid_write = \
^(src/($(_src1))|tools/virsh-console|tests/($(_test1)))\.c$$
exclude_file_name_regexp--sc_avoid_write = ^src/libvirt-stream\.c$$
exclude_file_name_regexp--sc_bindtextdomain = .*

2
ci/containers/centos-8.Dockerfile → ci/containers/almalinux-8.Dockerfile

@ -4,7 +4,7 @@
#
# https://gitlab.com/libvirt/libvirt-ci
FROM docker.io/library/centos:8
FROM docker.io/library/almalinux:8
RUN dnf update -y && \
dnf install 'dnf-command(config-manager)' -y && \

90
ci/containers/centos-stream-9.Dockerfile

@ -0,0 +1,90 @@
# THIS FILE WAS AUTO-GENERATED
#
# $ lcitool manifest ci/manifest.yml
#
# https://gitlab.com/libvirt/libvirt-ci
FROM quay.io/centos/centos:stream9
RUN dnf update -y && \
dnf install 'dnf-command(config-manager)' -y && \
dnf config-manager --set-enabled -y crb && \
dnf install -y \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \
https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm && \
dnf install -y \
audit-libs-devel \
augeas \
bash-completion \
ca-certificates \
clang \
cpp \
cyrus-sasl-devel \
device-mapper-devel \
diffutils \
dnsmasq \
dwarves \
ebtables \
firewalld-filesystem \
fuse-devel \
gcc \
gettext \
git \
glib2-devel \
glibc-devel \
glibc-langpack-en \
gnutls-devel \
grep \
iproute \
iproute-tc \
iptables \
iscsi-initiator-utils \
kmod \
libacl-devel \
libattr-devel \
libblkid-devel \
libcap-ng-devel \
libcurl-devel \
libnl3-devel \
libpcap-devel \
libpciaccess-devel \
librbd-devel \
libselinux-devel \
libssh-devel \
libtirpc-devel \
libwsman-devel \
libxml2 \
libxml2-devel \
libxslt \
lvm2 \
make \
meson \
nfs-utils \
ninja-build \
numactl-devel \
numad \
parted-devel \
perl-base \
pkgconfig \
polkit \
python3 \
python3-docutils \
qemu-img \
readline-devel \
rpcgen \
rpm-build \
sanlock-devel \
scrub \
sed \
systemd-devel \
systemtap-sdt-devel \
wireshark-devel \
yajl-devel && \
dnf autoremove -y && \
dnf clean all -y && \
rpm -qa | sort > /packages.txt
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3"

3
ci/containers/debian-10-cross-aarch64.Dockerfile

@ -55,8 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

3
ci/containers/debian-10-cross-armv6l.Dockerfile

@ -55,8 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

3
ci/containers/debian-10-cross-armv7l.Dockerfile

@ -55,8 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

3
ci/containers/debian-10-cross-i686.Dockerfile

@ -55,8 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

3
ci/containers/debian-10-cross-mips.Dockerfile

@ -55,8 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

3
ci/containers/debian-10-cross-mips64el.Dockerfile

@ -55,8 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

3
ci/containers/debian-10-cross-mipsel.Dockerfile

@ -55,8 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

3
ci/containers/debian-10-cross-ppc64le.Dockerfile

@ -55,8 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

3
ci/containers/debian-10-cross-s390x.Dockerfile

@ -55,8 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
dpkg-reconfigure locales
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

3
ci/containers/debian-10.Dockerfile

@ -97,8 +97,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

3
ci/containers/opensuse-leap-152.Dockerfile

@ -92,8 +92,7 @@ RUN zypper update -y && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

3
ci/containers/ubuntu-1804.Dockerfile

@ -99,8 +99,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

3
ci/containers/ubuntu-2004.Dockerfile

@ -98,8 +98,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
RUN pip3 install \
meson==0.56.0
RUN pip3 install meson==0.56.0
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"

89
ci/gitlab.yml

@ -80,11 +80,11 @@ check-dco:
# Native container jobs
x86_64-centos-8-container:
x86_64-almalinux-8-container:
extends: .container_job
allow_failure: false
variables:
NAME: centos-8
NAME: almalinux-8
x86_64-centos-stream-8-container:
@ -94,6 +94,13 @@ x86_64-centos-stream-8-container:
NAME: centos-stream-8
x86_64-centos-stream-9-container:
extends: .container_job
allow_failure: false
variables:
NAME: centos-stream-9
x86_64-debian-10-container:
extends: .container_job
allow_failure: false
@ -372,25 +379,25 @@ mingw64-fedora-rawhide-container:
# Native build jobs
x86_64-centos-8:
x86_64-almalinux-8:
extends: .native_build_job
needs:
- x86_64-centos-8-container
- x86_64-almalinux-8-container
allow_failure: false
variables:
NAME: centos-8
NAME: almalinux-8
RPM: skip
x86_64-centos-8-clang:
x86_64-almalinux-8-clang:
extends: .native_build_job
needs:
- x86_64-centos-8-container
- x86_64-almalinux-8-container
allow_failure: false
variables:
NAME: centos-8
RPM: skip
CC: clang
NAME: almalinux-8
RPM: skip
x86_64-centos-stream-8:
@ -400,7 +407,15 @@ x86_64-centos-stream-8:
allow_failure: false
variables:
NAME: centos-stream-8
RPM: skip
x86_64-centos-stream-9:
extends: .native_build_job
needs:
- x86_64-centos-stream-9-container
allow_failure: false
variables:
NAME: centos-stream-9
x86_64-debian-10:
@ -472,8 +487,8 @@ x86_64-fedora-rawhide-clang:
- x86_64-fedora-rawhide-container
allow_failure: true
variables:
NAME: fedora-rawhide
CC: clang
NAME: fedora-rawhide
RPM: skip
@ -512,9 +527,9 @@ x86_64-ubuntu-2004:
- x86_64-ubuntu-2004-container
allow_failure: false
variables:
NAME: ubuntu-2004
ASAN_OPTIONS: verify_asan_link_order=0
MESON_ARGS: -Db_lundef=false -Db_sanitize=address,undefined
NAME: ubuntu-2004
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
@ -524,9 +539,9 @@ x86_64-ubuntu-2004-clang:
- x86_64-ubuntu-2004-container
allow_failure: false
variables:
NAME: ubuntu-2004
CC: clang
MESON_ARGS: -Db_lundef=false -Db_sanitize=address,undefined
NAME: ubuntu-2004
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
@ -539,8 +554,8 @@ armv6l-debian-10:
- armv6l-debian-10-container
allow_failure: false
variables:
NAME: debian-10
CROSS: armv6l
NAME: debian-10
mips-debian-10:
@ -549,8 +564,8 @@ mips-debian-10:
- mips-debian-10-container
allow_failure: false
variables:
NAME: debian-10
CROSS: mips
NAME: debian-10
mipsel-debian-10:
@ -559,8 +574,8 @@ mipsel-debian-10:
- mipsel-debian-10-container
allow_failure: false
variables:
NAME: debian-10
CROSS: mipsel
NAME: debian-10
armv7l-debian-11:
@ -569,8 +584,8 @@ armv7l-debian-11:
- armv7l-debian-11-container
allow_failure: false
variables:
NAME: debian-11
CROSS: armv7l
NAME: debian-11
mips64el-debian-11:
@ -579,8 +594,8 @@ mips64el-debian-11:
- mips64el-debian-11-container
allow_failure: false
variables:
NAME: debian-11
CROSS: mips64el
NAME: debian-11
ppc64le-debian-11:
@ -589,8 +604,8 @@ ppc64le-debian-11:
- ppc64le-debian-11-container
allow_failure: false
variables:
NAME: debian-11
CROSS: ppc64le
NAME: debian-11
aarch64-debian-sid:
@ -599,8 +614,8 @@ aarch64-debian-sid:
- aarch64-debian-sid-container
allow_failure: true
variables:
NAME: debian-sid
CROSS: aarch64
NAME: debian-sid
i686-debian-sid:
@ -609,8 +624,8 @@ i686-debian-sid:
- i686-debian-sid-container
allow_failure: true
variables:
NAME: debian-sid
CROSS: i686
NAME: debian-sid
s390x-debian-sid:
@ -619,8 +634,8 @@ s390x-debian-sid:
- s390x-debian-sid-container
allow_failure: true
variables:
NAME: debian-sid
CROSS: s390x
NAME: debian-sid
mingw64-fedora-35:
@ -629,8 +644,8 @@ mingw64-fedora-35:
- mingw64-fedora-35-container
allow_failure: false
variables:
NAME: fedora-35
CROSS: mingw64
NAME: fedora-35
mingw32-fedora-rawhide:
@ -639,8 +654,8 @@ mingw32-fedora-rawhide:
- mingw32-fedora-rawhide-container
allow_failure: true
variables:
NAME: fedora-rawhide
CROSS: mingw32
NAME: fedora-rawhide
# Native cirrus build jobs
@ -650,13 +665,13 @@ x86_64-freebsd-12:
needs: []
allow_failure: false
variables:
NAME: freebsd-12
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
CIRRUS_VM_IMAGE_SELECTOR: image_family
CIRRUS_VM_IMAGE_NAME: freebsd-12-2
CIRRUS_VM_IMAGE_SELECTOR: image_family
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
INSTALL_COMMAND: pkg install -y
NAME: freebsd-12
UPDATE_COMMAND: pkg update
UPGRADE_COMMAND: pkg upgrade -y
INSTALL_COMMAND: pkg install -y
x86_64-freebsd-13:
@ -664,13 +679,13 @@ x86_64-freebsd-13:
needs: []
allow_failure: false
variables:
NAME: freebsd-13
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
CIRRUS_VM_IMAGE_SELECTOR: image_family
CIRRUS_VM_IMAGE_NAME: freebsd-13-0
CIRRUS_VM_IMAGE_SELECTOR: image_family
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
INSTALL_COMMAND: pkg install -y
NAME: freebsd-13
UPDATE_COMMAND: pkg update
UPGRADE_COMMAND: pkg upgrade -y
INSTALL_COMMAND: pkg install -y
x86_64-macos-11:
@ -678,12 +693,12 @@ x86_64-macos-11:
needs: []
allow_failure: false
variables:
NAME: macos-11
CIRRUS_VM_INSTANCE_TYPE: osx_instance
CIRRUS_VM_IMAGE_SELECTOR: image
CIRRUS_VM_IMAGE_NAME: big-sur-base
UPDATE_COMMAND: brew update
UPGRADE_COMMAND: brew upgrade
CIRRUS_VM_IMAGE_SELECTOR: image
CIRRUS_VM_INSTANCE_TYPE: osx_instance
INSTALL_COMMAND: brew install
NAME: macos-11
PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin:/usr/local/opt/libpcap/bin:/usr/local/opt/libxslt/bin:/usr/local/opt/rpcgen/bin
PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
UPDATE_COMMAND: brew update
UPGRADE_COMMAND: brew upgrade

7
ci/manifest.yml

@ -6,7 +6,7 @@ gitlab:
project: libvirt
targets:
centos-8:
almalinux-8:
jobs:
- arch: x86_64
variables:
@ -21,9 +21,10 @@ targets:
centos-stream-8:
jobs:
- arch: x86_64
variables:
RPM: skip
centos-stream-9:
jobs:
- arch: x86_64
debian-10:
jobs:
- arch: x86_64

14
config.h

@ -36,18 +36,18 @@
#if defined(__clang_major__) && defined(__clang_minor__)
# ifdef __apple_build_version__
# if __clang_major__ < 5 || (__clang_major__ == 5 && __clang_minor__ < 1)
# error You need at least XCode Clang v5.1 to compile libvirt
# if __clang_major__ < 10 || (__clang_major__ == 10 && __clang_minor__ < 0)
# error You need at least XCode Clang v10.0 to compile libvirt
# endif
# else
# if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4)
# error You need at least Clang v3.4 to compile libvirt
# if __clang_major__ < 6 || (__clang_major__ == 6 && __clang_minor__ < 4)
# error You need at least Clang v6.0 to compile libvirt
# endif
# endif
#elif defined(__GNUC__) && defined(__GNUC_MINOR__)
# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)
# error You need at least GCC v4.8 to compile libvirt
# if __GNUC__ < 7 || (__GNUC__ == 7 && __GNUC_MINOR__ < 4)
# error You need at least GCC v7.4.0 to compile libvirt
# endif
#else
# error You either need at least GCC 4.8 or Clang 3.4 or XCode Clang 5.1 to compile libvirt
# error You either need at least GCC 7.4.0 or Clang 6.0 or XCode Clang 10.0 to compile libvirt
#endif

89
docs/coding-style.rst

@ -53,11 +53,16 @@ Struct type names
All structs should have a 'vir' prefix in their typedef name,
and each following word should have its first letter in
uppercase. The struct name should be the same as the typedef
name with a leading underscore.
name with a leading underscore. For types that are part of the
public API, a second typedef should be given for a pointer to
the struct with a 'Ptr' suffix. Do not introduce new such
typedefs for internal types.
::
typedef struct _virHashTable virHashTable;
struct _virHashTable {
typedef struct _virSomeType virSomeType;
typedef virSomeType *virSomeTypePtr;
struct _virSomeType {
...
};
@ -69,8 +74,8 @@ Function names
name prefix should match the object typedef name, otherwise it
should match the filename. Following this comes the verb /
action name, and finally an optional subject name. For example,
given an object 'virHashTable', all functions should have a
name 'virHashTable$VERB' or 'virHashTable$VERB$SUBJECT", e.g.
given an object 'virSomeType', all functions should have a
name 'virSomeType$VERB' or 'virSomeType$VERB$SUBJECT", e.g.
'virHashTableLookup' or 'virHashTableGetValue'.
Macro names
@ -422,25 +427,47 @@ Conditional expressions
-----------------------
For readability reasons new code should avoid shortening
comparisons to 0 for numeric types. Boolean and pointer
comparisons may be shortened. All long forms are okay:
comparisons to 0 for numeric types:
::
virFoo *foos = NULL;
size nfoos = 0;
bool hasFoos = false;
GOOD:
if (!foos)
if (!hasFoos)
if (nfoos != 0)
if (nfoos == 0)
if (foos == NULL)
if (hasFoos == true)
BAD:
if (!nfoos)
if (nfoos)
if (!nfoos)
Prefer the shortened version for boolean values. Boolean values
should never be compared against the literal ``true``, as a
logical non-false value need not be ``1``.
::
bool hasFoos = false;
GOOD:
if (hasFoos)
if (!hasFoos)
BAD:
if (hasFoos == true)
if (hasFoos != false)
if (hasFoos == false)
if (hasFoos != true)
Pointer comparisons may be shortened. All long forms are okay.
::
virFoo *foo = NULL;
GOOD:
if (foo) # or: if (foo != NULL)
if (!foo) # or: if (foo == NULL)
New code should avoid the ternary operator as much as possible.
Specifically it must never span more than one line or nest:
@ -502,19 +529,13 @@ Scalars
- In the unusual event that you require a specific width, use a
standard type like ``int32_t``, ``uint32_t``, ``uint64_t``,
etc.
- While using ``bool`` is good for readability, it comes with
minor caveats:
- Don't use ``bool`` in places where the type size must be
constant across all systems, like public interfaces and
on-the-wire protocols. Note that it would be possible
(albeit wasteful) to use ``bool`` in libvirt's logical wire
protocol, since XDR maps that to its lower-level ``bool_t``
type, which **is** fixed-size.
- Don't compare a bool variable against the literal, ``true``,
since a value with a logical non-false value need not be
``1``. I.e., don't write ``if (seen == true) ...``. Rather,
write ``if (seen)...``.
- While using ``bool`` is good for readability, it comes with a
minor caveat: Don't use ``bool`` in places where the type size
must be constant across all systems, like public interfaces and
on-the-wire protocols. Note that it would be possible (albeit
wasteful) to use ``bool`` in libvirt's logical wire protocol,
since XDR maps that to its lower-level ``bool_t`` type, which
**is** fixed-size.
Of course, take all of the above with a grain of salt. If you're
about to use some system interface that requires a type like
@ -579,6 +600,19 @@ calling another function.
...
}
Prefer variable definitions on separate lines. This allows for smaller,
easier to understand diffs when changing them. Define variables in the
smallest possible scope.
::
GOOD:
int count = 0;
int nnodes;
BAD:
int count = 0, nnodes;
Attribute annotations
---------------------
@ -932,7 +966,6 @@ makes sense:
error: A path only taken upon return with an error code
cleanup: A path taken upon return with success code + optional error
no_memory: A path only taken upon return with an OOM error code
retry: If needing to jump upwards (e.g., retry on EINTR)
Top-level labels should be indented by one space (putting them on

97
docs/daemons.rst

@ -209,13 +209,6 @@ controlled via the system unit files
``libvirtd.socket``, ``libvirtd-ro.socket`` and ``libvirtd-admin.socket`` unit
files.
Systemd releases prior to version 227 lacked support for passing the activation
socket unit names into the service. When using these old versions, the
``tcp_port``, ``tls_port`` and ``unix_sock_dir`` settings in ``libvirtd.conf``
must be changed in lock-step with the equivalent settings in the unit files to
ensure that ``libvirtd`` can identify the sockets.
Modular driver daemons
======================
@ -354,13 +347,6 @@ controlled via the system unit files:
``virt${DRIVER}d.socket``, ``virt${DRIVER}d-ro.socket`` and
``virt${DRIVER}d-admin.socket`` unit files.
Systemd releases prior to version 227 lacked support for passing the activation
socket unit names into the service. When using these old versions, the
``unix_sock_dir`` setting in ``virt${DRIVER}d.conf`` must be changed in
lock-step with the equivalent setting in the unit files to ensure that
``virt${DRIVER}d`` can identify the sockets.
Switching to modular daemons
----------------------------
@ -435,6 +421,58 @@ host first.
$ systemctl enable virtproxyd-tls.socket
$ systemctl start virtproxyd-tls.socket
Checking whether modular/monolithic mode is in use
==================================================
New distributions are likely to use the modular mode although the upgrade
process preserves whichever mode was in use before the upgrade.
To determine whether modular or monolithic mode is in use on a host running
``systemd`` as the init system you can take the following steps:
#. Check whether the modular daemon infrastructure is in use
First check whether the modular daemon you are interested (see
`Modular driver daemons`_ for a summary of which daemons are provided by
libvirt) in is running:
#. Check ``.socket`` for socket activated services
::
# systemctl is-active virtqemud.socket
active
#. Check ``.service`` for always-running daemons
::
# systemctl is-active virtqemud.service
active
If either of the above is ``active`` your system is using the modular daemons.
#. Check whether the monolithic daemon is in use
#. Check ``libvirtd.socket``
::
# systemctl is-active libvirtd.socket
active
#. Check ``libvirtd.service`` for always-running daemon
::
# systemctl is-active libvirtd.service
active
If either of the above is ``active`` your system is using the monolithic
daemon.
#. To determine which of the above will be in use on the next boot of the system,
substitute ``is-enabled`` for ``is-active`` in the above examples.
Proxy daemon
============
@ -587,12 +625,6 @@ controlled via the system unit files:
independently controlled via the ``ListenStream`` parameter in any of the
``virtlogd.socket`` and ``virtlogd-admin.socket`` unit files.
Systemd releases prior to version 227 lacked support for passing the activation
socket unit names into the service. When using these old versions, the
``unix_sock_dir`` setting in ``virtlogd.conf`` must be changed in
lock-step with the equivalent setting in the unit files to ensure that
``virtlogd`` can identify the sockets.
Locking daemon
==============
@ -681,8 +713,23 @@ controlled via the system unit files:
independently controlled via the ``ListenStream`` parameter in any of the
``virtlockd.socket`` and ``virtlockd-admin.socket`` unit files.
Systemd releases prior to version 227 lacked support for passing the activation
socket unit names into the service. When using these old versions, the
``unix_sock_dir`` setting in ``virtlockd.conf`` must be changed in
lock-step with the equivalent setting in the unit files to ensure that
``virtlockd`` can identify the sockets.
Changing command line options for daemons
=========================================
Two ways exist to override the defaults in the provided service files:
either a systemd "drop-in" configuration file, or a ``/etc/sysconfig/$daemon``
file must be created. For example, to change the command line option
for a debug session of ``libvirtd``, create a file
``/etc/systemd/system/libvirtd.service.d/debug.conf`` with the following content:
::
[Unit]
Description=Virtualization daemon, with override from debug.conf
[Service]
Environment=G_DEBUG=fatal-warnings
Environment=LIBVIRTD_ARGS="--listen --verbose"
After changes to systemd "drop-in" configuration files it is required to run
``systemctl daemon-reload``.

3
docs/docs.html.in

@ -16,6 +16,9 @@
<dt><a href="windows.html">Windows</a></dt>
<dd>Downloads for Windows</dd>
<dt><a href="macos.html">macOS</a></dt>
<dd>Working with libvirt on macOS</dd>
<dt><a href="migration.html">Migration</a></dt>
<dd>Migrating guests between machines</dd>

48
docs/drvqemu.rst

@ -1,13 +1,18 @@
.. role:: since
.. role:: removed
==========================
KVM/QEMU hypervisor driver
==========================
==============================
QEMU/KVM/HVF hypervisor driver
==============================
The libvirt KVM/QEMU driver can manage any QEMU emulator from version 2.11.0 or
later.
It supports multiple QEMU accelerators: software
emulation also known as TCG, hardware-assisted virtualization on Linux
with KVM and hardware-assisted virtualization on macOS with
Hypervisor.framework (:since:`since 8.1.0`).
.. contents::
Project Links
@ -15,6 +20,7 @@ Project Links
- The `KVM <https://www.linux-kvm.org/>`__ Linux hypervisor
- The `QEMU <https://wiki.qemu.org/Index.html>`__ emulator
- `Hypervisor.framework`<https://developer.apple.com/documentation/hypervisor>__` reference
Deployment pre-requisites
-------------------------
@ -27,6 +33,9 @@ Deployment pre-requisites
- **KVM hypervisor**: The driver will probe ``/usr/bin`` for the presence of
``qemu-kvm`` and ``/dev/kvm`` device node. If both are found, then KVM fully
virtualized, hardware accelerated guests will be available.
- **Hypervisor.framework (HVF)**: The driver will probe ``sysctl`` for the
presence of ``Hypervisor.framework``. If it is found and QEMU is newer than
2.12, then it will be possible to create hardware accelerated guests.
Connections to QEMU driver
--------------------------
@ -634,3 +643,36 @@ KVM hardware accelerated guest on i686
<graphics type='vnc' port='-1' keymap='de'/>
</devices>
</domain>
HVF hardware accelerated guest on x86_64
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
<domain type='hvf'>
<name>hvf-demo</name>
<uuid>4dea24b3-1d52-d8f3-2516-782e98a23fa0</uuid>
<memory>131072</memory>
<vcpu>1</vcpu>
<os>
<type arch="x86_64">hvm</type>
</os>
<features>
<acpi/>
</features>
<clock sync="localtime"/>
<devices>
<emulator>/usr/local/bin/qemu-system-x86_64</emulator>
<controller type='scsi' index='0' model='virtio-scsi'/>
<disk type='volume' device='disk'>
<driver name='qemu' type='qcow2'/>
<source pool='default' volume='myos'/>
<target bus='scsi' dev='sda'/>
</disk>
<interface type='user'>
<mac address='24:42:53:21:52:45'/>
<model type='virtio'/>
</interface>
<graphics type='vnc' port='-1'/>
</devices>
</domain>

93
docs/formatdomain.rst

@ -20,7 +20,8 @@ Element and attribute overview
The root element required for all virtual machines is named ``domain``. It has
two attributes, the ``type`` specifies the hypervisor used for running the
domain. The allowed values are driver specific, but include "xen", "kvm", "qemu"
domain. The allowed values are driver specific, but include "xen", "kvm",
"hvf" (:since:`since 8.1.0 and QEMU 2.12`), "qemu"
and "lxc". The second attribute is ``id`` which is a unique integer identifier
for the running guest machine. Inactive machines have no id value.
@ -110,12 +111,19 @@ harddisk, cdrom, network) determining where to obtain/find the boot image.
::
<!-- Xen with fullvirt loader -->
...
<os firmware='efi'>
<os>
<type>hvm</type>
<loader readonly='yes' secure='no' type='rom'>/usr/lib/xen/boot/hvmloader</loader>
<nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/nvram/guest_VARS.fd</nvram>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
...
<!-- QEMU with default firmware, serial console and SMBIOS -->
...
<os>
<type>hvm</type>
<boot dev='cdrom'/>
<bootmenu enable='yes' timeout='3000'/>
<smbios mode='sysinfo'/>
@ -123,6 +131,25 @@ harddisk, cdrom, network) determining where to obtain/find the boot image.
</os>
...
<!-- QEMU with UEFI manual firmware and secure boot -->
...
<os>
<type>hvm</type>
<loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
<nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/nvram/guest_VARS.fd</nvram>
<boot dev='hd'/>
</os>
...
<!-- QEMU with automatic UEFI firmware and secure boot -->
...
<os firmware='efi'>
<type>hvm</type>
<loader secure='yes'/>
<boot dev='hd'/>
</os>
...
``firmware``
The ``firmware`` attribute allows management applications to automatically
fill ``<loader/>`` and ``<nvram/>`` elements and possibly enable some
@ -1425,7 +1452,8 @@ In case no restrictions need to be put on CPU model and its features, a simpler
:since:`Since 7.1.0` with the QEMU driver.
Both ``host-model`` and ``host-passthrough`` modes make sense when a domain
can run directly on the host CPUs (for example, domains with type ``kvm``).
can run directly on the host CPUs (for example, domains with type ``kvm``
or ``hvf``).
The actual host CPU is irrelevant for domains with emulated virtual CPUs
(such as domains with type ``qemu``). However, for backward compatibility
``host-model`` may be implemented even for domains running on emulated CPUs
@ -1634,14 +1662,13 @@ ACPI Heterogeneous Memory Attribute Table
<cpu>
...
<numa>
<cell id='0' cpus='0-3' memory='512000' unit='KiB' discard='yes'/>
<cell id='1' cpus='4-7' memory='512000' unit='KiB' memAccess='shared'/>
<cell id='3' cpus='0-3' memory='2097152' unit='KiB'>
<cell id='0' cpus='0-3' memory='2097152' unit='KiB' discard='yes'>
<cache level='1' associativity='direct' policy='writeback'>
<size value='10' unit='KiB'/>
<line value='8' unit='B'/>
</cache>
</cell>
<cell id='1' cpus='4-7' memory='512000' unit='KiB' memAccess='shared'/>
<interconnects>
<latency initiator='0' target='0' type='access' value='5'/>
<latency initiator='0' target='0' cache='1' type='access' value='10'/>
@ -1749,7 +1776,7 @@ Each of these states allow for the same four possible actions.
The domain will be terminated and then restarted with a new name. (Only
supported by the libxl hypervisor driver.)
QEMU/KVM supports the ``on_poweroff`` and ``on_reboot`` events handling the
QEMU/KVM/HVF supports the ``on_poweroff`` and ``on_reboot`` events handling the
``destroy`` and ``restart`` actions, but the combination of ``on_poweroff`` set
to ``restart`` and ``on_reboot`` set to ``destroy`` is forbidden.
@ -1884,8 +1911,8 @@ are:
Physical address extension mode allows 32-bit guests to address more than 4
GB of memory.
``acpi``
ACPI is useful for power management, for example, with KVM guests it is
required for graceful shutdown to work.
ACPI is useful for power management, for example, with KVM or HVF guests it
is required for graceful shutdown to work.
``apic``
APIC allows the use of programmable IRQ management. :since:`Since 0.10.2
(QEMU only)` there is an optional attribute ``eoi`` with values ``on`` and
@ -6194,14 +6221,16 @@ A video device.
You can provide the amount of video memory in kibibytes (blocks of 1024
bytes) using ``vram``. This is supported only for guest type of "vz", "qemu",
"vbox", "vmx" and "xen". If no value is provided the default is used. If the
"kvm", "hvf", "vbox", "vmx" and "xen".
If no value is provided the default is used. If the
size is not a power of two it will be rounded to closest one.
The number of screen can be set using ``heads``. This is supported only for
guests type of "vz", "kvm", "vbox" and "vmx".
guests type of "vz", "kvm", "hvf", "vbox" and "vmx".
For guest type of "kvm" or "qemu" and model type "qxl" there are optional
attributes. Attribute ``ram`` ( :since:`since 1.0.2` ) specifies the size of
For guest type of "kvm", "hvf" or "qemu" and model type "qxl" there are
optional attributes.
Attribute ``ram`` ( :since:`since 1.0.2` ) specifies the size of
the primary bar, while the attribute ``vram`` specifies the secondary bar
size. If ``ram`` or ``vram`` are not supplied a default value is used. The
``ram`` should also be rounded to power of two as ``vram``. There is also
@ -6365,6 +6394,12 @@ Serial port
<source path='/dev/pts/3'/>
<target port='0'/>
</serial>
<!-- Debug port for SeaBIOS / EDK II -->
<serial type='pty'>
<target type='isa-debug'/>
<address type='isa' iobase='0x402'/>
</console>
</devices>
...
@ -6388,8 +6423,9 @@ values are, :since:`since 1.0.2` , ``isa-serial`` (usable with x86 guests),
``usb-serial`` (usable whenever USB support is available) and ``pci-serial``
(usable whenever PCI support is available); :since:`since 3.10.0` ,
``spapr-vio-serial`` (usable with ppc64/pseries guests), ``system-serial``
(usable with aarch64/virt and, :since:`since 4.7.0` , riscv/virt guests) and
``sclp-serial`` (usable with s390 and s390x guests) are available as well.
(usable with aarch64/virt and, :since:`since 4.7.0` , riscv/virt guests),
``sclp-serial`` (usable with s390 and s390x guests) are available as well
and :since:`since 8.1.0` ``isa-debug`` (usable with x86 guests).
:since:`Since 3.10.0` , the ``target`` element can have an optional ``model``
subelement; valid values for its ``name`` attribute are: ``isa-serial`` (usable
@ -6398,9 +6434,12 @@ with the ``isa-serial`` target type); ``usb-serial`` (usable with the
target type); ``spapr-vty`` (usable with the ``spapr-vio-serial`` target type);
``pl011`` and, :since:`since 4.7.0` , ``16550a`` (usable with the
``system-serial`` target type); ``sclpconsole`` and ``sclplmconsole`` (usable
with the ``sclp-serial`` target type). Providing a target model is usually
unnecessary: libvirt will automatically pick one that's suitable for the chosen
target type, and overriding that value is generally not recommended.
with the ``sclp-serial`` target type). ``isa-debugcon`` (usable with the
``isa-debug`` target type); provides a virtual console for receiving debug
messages from the firmware on x86 platforms. :since:`Since: 8.1.0`.
Providing a target model is usually unnecessary: libvirt will automatically
pick one that's suitable for the chosen target type, and overriding that
value is generally not recommended.
If any of the attributes is not specified by the user, libvirt will choose a
value suitable for most users.
@ -7079,6 +7118,20 @@ is permitted with the following attributes.
The audio format, one of ``s8``, ``u8``, ``s16``, ``u16``,
``s32``, ``u32``, ``f32``. The default is hypervisor specific.
Note:
If no ``<audio/>`` element is defined, and the ``graphics`` element is set to
either 'vnc' or 'sdl', the libvirtd or virtqemud process will honor the following
environment variables:
* ``SDL_AUDIODRIVER``
Valid values are 'pulseaudio', 'esd', 'alsa' or 'arts'.
* ``QEMU_AUDIO_DRV``
Valid values are 'pa', 'none', 'alsa', 'coreaudio', 'jack', 'oss',
'sdl', 'spice' or 'wav'.
None audio backend
^^^^^^^^^^^^^^^^^^

3
docs/goals.html.in

@ -14,9 +14,6 @@
(or subsystem in the case of container virtualization) running on a
virtualized machine provided by the hypervisor</li>
</ul>
<p class="image">
<img alt="Hypervisor and domains running on a node" src="images/node.gif"/>