Devel
Threads by month
- ----- 2026 -----
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
September 2025
- 46 participants
- 78 discussions
23 Sep '25
Hi,
This is a follow up to the third RFC patchset [0] for supporting multiple
vSMMU instances and using iommufd to propagate DMA mappings to kernel for
VM-assigned host devices in a qemu VM. It builds on the recent libvirt patch
series [1] without support for iommufd and the 'accel' iommu attribute.
This patchset implements support for specifying multiple <iommu> devices
within the VM definition when smmuv3Dev IOMMU model is specified, and is
tested with Shameer's latest qemu RFC for HW-accelerated vSMMU devices [2]
Moreover, it adds a new 'iommufd' attribute for hostdev devices to be
associated with the iommufd object.
For instance, specifying the iommufd object and associated hostdev in a
VM definition with multiple IOMMUs, configured to be routed to
pcie-expander-bus controllers in a way where VFIO device to SMMUv3
associations are matched with the host:
<devices>
...
<controller type='pci' index='1' model='pcie-expander-bus'>
<model name='pxb-pcie'/>
<target busNr='252'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
</controller>
<controller type='pci' index='2' model='pcie-expander-bus'>
<model name='pxb-pcie'/>
<target busNr='248'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</controller>
...
<controller type='pci' index='21' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='21' port='0x0'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</controller>
<controller type='pci' index='22' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='22' port='0xa8'/>
<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</controller>
...
<hostdev mode='subsystem' type='pci' managed='no'>
<driver iommufd='yes'/>
<source>
<address domain='0x0009' bus='0x01' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x15' slot='0x00' function='0x0'/>
</hostdev>
<hostdev mode='subsystem' type='pci' managed='no'>
<driver iommufd='yes'/>
<source>
<address domain='0x0019' bus='0x01' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x16' slot='0x00' function='0x0'/>
</hostdev>
<iommu model='smmuv3Dev' parentIdx='1' accel='on'/>
<iommu model='smmuv3Dev' parentIdx='2' accel='on'/>
</devices>
This would get translated to a qemu command line with the arguments below.
Note that libvirt will open the /dev/iommu and VFIO cdev, passing the
associated fd number to qemu:
-device '{"driver":"pxb-pcie","bus_nr":252,"id":"pci.1","bus":"pcie.0","addr":"0x1"}' \
-device '{"driver":"pxb-pcie","bus_nr":248,"id":"pci.2","bus":"pcie.0","addr":"0x2"}' \
-device '{"driver":"pcie-root-port","port":0,"chassis":21,"id":"pci.21","bus":"pci.1","addr":"0x0"}' \
-device '{"driver":"pcie-root-port","port":168,"chassis":22,"id":"pci.22","bus":"pci.2","addr":"0x0"}' \
-object '{"qom-type":"iommufd","id":"iommufd0","fd":"24"}' \
-device '{"driver":"arm-smmuv3","primary-bus":"pci.1","id":"smmuv3.0","accel":true}' \
-device '{"driver":"arm-smmuv3","primary-bus":"pci.2","id":"smmuv3.1","accel":true}' \
-device '{"driver":"vfio-pci","host":"0009:01:00.0","id":"hostdev0","iommufd":"iommufd0","fd":"22","bus":"pci.21","addr":"0x0"}' \
-device '{"driver":"vfio-pci","host":"0019:01:00.0","id":"hostdev1","iommufd":"iommufd0","fd":"25","bus":"pci.22","addr":"0x0"}' \
Changes from RFCv3:
- Change iommufd attribute value type to boolean
- Move iommufd attribute under hostdev PCI driver struct
- Use virDomainDeviceInfoAddressIsEqual() for comparing definitions in virDomainIOMMUDefEquals()
- Added qemuxmlconfdata test cases
- Include seclabel logic for /dev/iommu
This series is on Github:
https://github.com/NathanChenNVIDIA/libvirt/tree/smmuv3Dev-iommufd-09-15-25
Thanks,
Nathan
[0] https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/XXEO…
[1] https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/3PYS…
[2] https://lore.kernel.org/qemu-devel/20250714155941.22176-1-shameerali.koloth…
Nathan Chen (8):
qemu: add IOMMU model smmuv3Dev
conf: Support multiple smmuv3Dev IOMMU devices
tests: qemuxmlconfdata: provide smmuv3Dev sample XML and CLI args
qemu: Implement support for associating iommufd to hostdev
qemu: open iommufd FDs from libvirt backend
qemu: Update Cgroup, namespace, and seclabel for qemu to access
iommufd paths
tests: qemuxmlconfdata: provide iommufd sample XML and CLI args
cover letter: qemu: Implement support for iommufd and multiple vSMMUs
docs/formatdomain.rst | 21 +-
src/conf/device_conf.c | 9 +
src/conf/device_conf.h | 1 +
src/conf/domain_conf.c | 120 ++++++--
src/conf/domain_conf.h | 12 +-
src/conf/domain_validate.c | 58 +++-
src/conf/schemas/basictypes.rng | 5 +
src/conf/schemas/domaincommon.rng | 15 +-
src/libvirt_private.syms | 2 +
src/qemu/qemu_alias.c | 15 +-
src/qemu/qemu_cgroup.c | 61 ++++
src/qemu/qemu_cgroup.h | 1 +
src/qemu/qemu_command.c | 265 +++++++++++++-----
src/qemu/qemu_command.h | 3 +-
src/qemu/qemu_domain.c | 8 +
src/qemu/qemu_domain.h | 7 +
src/qemu/qemu_domain_address.c | 33 ++-
src/qemu/qemu_driver.c | 8 +-
src/qemu/qemu_hotplug.c | 2 +-
src/qemu/qemu_namespace.c | 44 +++
src/qemu/qemu_postparse.c | 11 +-
src/qemu/qemu_process.c | 232 +++++++++++++++
src/qemu/qemu_validate.c | 18 +-
src/security/security_apparmor.c | 15 +
src/security/security_dac.c | 34 +++
src/security/security_selinux.c | 30 ++
src/util/virpci.c | 68 +++++
src/util/virpci.h | 1 +
.../iommu-smmuv3Dev.aarch64-latest.args | 39 +++
.../iommu-smmuv3Dev.aarch64-latest.xml | 62 ++++
tests/qemuxmlconfdata/iommu-smmuv3Dev.xml | 49 ++++
.../iommufd-q35.x86_64-latest.args | 41 +++
.../iommufd-q35.x86_64-latest.xml | 60 ++++
tests/qemuxmlconfdata/iommufd-q35.xml | 38 +++
.../iommufd-virt.aarch64-latest.args | 33 +++
.../iommufd-virt.aarch64-latest.xml | 34 +++
tests/qemuxmlconfdata/iommufd-virt.xml | 22 ++
.../iommufd.x86_64-latest.args | 35 +++
.../qemuxmlconfdata/iommufd.x86_64-latest.xml | 38 +++
tests/qemuxmlconfdata/iommufd.xml | 30 ++
tests/qemuxmlconftest.c | 5 +
41 files changed, 1447 insertions(+), 138 deletions(-)
create mode 100644 tests/qemuxmlconfdata/iommu-smmuv3Dev.aarch64-latest.args
create mode 100644 tests/qemuxmlconfdata/iommu-smmuv3Dev.aarch64-latest.xml
create mode 100644 tests/qemuxmlconfdata/iommu-smmuv3Dev.xml
create mode 100644 tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.args
create mode 100644 tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.xml
create mode 100644 tests/qemuxmlconfdata/iommufd-q35.xml
create mode 100644 tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.args
create mode 100644 tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.xml
create mode 100644 tests/qemuxmlconfdata/iommufd-virt.xml
create mode 100644 tests/qemuxmlconfdata/iommufd.x86_64-latest.args
create mode 100644 tests/qemuxmlconfdata/iommufd.x86_64-latest.xml
create mode 100644 tests/qemuxmlconfdata/iommufd.xml
--
2.43.0
1
7
Hi,
This is a follow up to the third RFC patchset [0] for supporting multiple
vSMMU instances.
This patchset implements support for specifying multiple <iommu> devices
within the VM definition when smmuv3Dev IOMMU model is specified, and is
tested with Shameer's recently accepted qemu series for user-creatable
vSMMU devices [1]
For instance, specifying the associated emulated device in a
VM definition with multiple IOMMUs, configured to be routed to
pcie-expander-bus or pcie-root controllers:
<devices>
<controller type='pci' index='0' model='pcie-root'/>
<controller type='pci' index='1' model='pcie-expander-bus'>
<model name='pxb-pcie'/>
<target busNr='252'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
</controller>
<controller type='pci' index='2' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='2' port='0x0'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</controller>
...
<rng model='virtio'>
<backend model='random'>/dev/urandom</backend>
<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</rng>
<rng model='virtio'>
<backend model='random'>/dev/urandom</backend>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</rng>
<iommu model='smmuv3Dev' parentIdx='0'/>
<iommu model='smmuv3Dev' parentIdx='1'/>
</devices>
This would get translated to a qemu command line with the arguments below.
-device '{"driver":"pxb-pcie","bus_nr":252,"id":"pci.1","bus":"pcie.0","addr":"0x1"}' \
-device '{"driver":"pcie-root-port","port":0,"chassis":2,"id":"pci.2","bus":"pci.1","addr":"0x0"}' \
-device '{"driver":"arm-smmuv3","primary-bus":"pcie.0","id":"smmuv3.0"}' \
-device '{"driver":"arm-smmuv3","primary-bus":"pci.1","id":"smmuv3.1"}' \
...
-object '{"qom-type":"rng-random","id":"objrng0","filename":"/dev/urandom"}' \
-device '{"driver":"virtio-rng-pci","rng":"objrng0","id":"rng0","bus":"pci.2","addr":"0x0"}' \
-object '{"qom-type":"rng-random","id":"objrng1","filename":"/dev/urandom"}' \
-device '{"driver":"virtio-rng-pci","rng":"objrng1","id":"rng1","bus":"pcie.0","addr":"0x4"}' \
Nathan Chen (4):
qemu: add IOMMU model smmuv3Dev
conf: Support multiple smmuv3Dev IOMMU devices
tests: qemuxmlconfdata: provide smmuv3Dev sample XML and CLI args
cover letter: qemu: Implement support for multiple SMMUv3s
docs/formatdomain.rst | 9 +-
src/conf/domain_conf.c | 102 +++++++--
src/conf/domain_conf.h | 11 +-
src/conf/domain_validate.c | 49 ++++-
src/conf/schemas/domaincommon.rng | 10 +-
src/libvirt_private.syms | 2 +
src/qemu/qemu_alias.c | 15 +-
src/qemu/qemu_command.c | 202 ++++++++++++------
src/qemu/qemu_domain_address.c | 33 +--
src/qemu/qemu_driver.c | 8 +-
src/qemu/qemu_postparse.c | 11 +-
src/qemu/qemu_validate.c | 18 +-
.../iommu-smmuv3Dev.aarch64-latest.args | 39 ++++
.../iommu-smmuv3Dev.aarch64-latest.xml | 62 ++++++
tests/qemuxmlconfdata/iommu-smmuv3Dev.xml | 49 +++++
tests/qemuxmlconftest.c | 1 +
16 files changed, 492 insertions(+), 129 deletions(-)
create mode 100644 tests/qemuxmlconfdata/iommu-smmuv3Dev.aarch64-latest.args
create mode 100644 tests/qemuxmlconfdata/iommu-smmuv3Dev.aarch64-latest.xml
create mode 100644 tests/qemuxmlconfdata/iommu-smmuv3Dev.xml
--
2.43.0
2
4
From: Michal Privoznik <mprivozn(a)redhat.com>
This pulls in the fix for generating ENV vars in Dockerfile
according to latest standard.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
ci/containers/almalinux-9.Dockerfile | 10 +++++-----
ci/containers/alpine-322.Dockerfile | 10 +++++-----
ci/containers/alpine-edge.Dockerfile | 10 +++++-----
ci/containers/centos-stream-9.Dockerfile | 10 +++++-----
ci/containers/debian-12-cross-aarch64.Dockerfile | 14 +++++++-------
ci/containers/debian-12-cross-armv6l.Dockerfile | 14 +++++++-------
ci/containers/debian-12-cross-armv7l.Dockerfile | 14 +++++++-------
ci/containers/debian-12-cross-i686.Dockerfile | 14 +++++++-------
ci/containers/debian-12-cross-mips64el.Dockerfile | 14 +++++++-------
ci/containers/debian-12-cross-mipsel.Dockerfile | 14 +++++++-------
ci/containers/debian-12-cross-ppc64le.Dockerfile | 14 +++++++-------
ci/containers/debian-12-cross-s390x.Dockerfile | 14 +++++++-------
ci/containers/debian-12.Dockerfile | 10 +++++-----
ci/containers/debian-sid-cross-aarch64.Dockerfile | 14 +++++++-------
ci/containers/debian-sid-cross-armv6l.Dockerfile | 14 +++++++-------
ci/containers/debian-sid-cross-armv7l.Dockerfile | 14 +++++++-------
ci/containers/debian-sid-cross-i686.Dockerfile | 14 +++++++-------
ci/containers/debian-sid-cross-mips64el.Dockerfile | 14 +++++++-------
ci/containers/debian-sid-cross-ppc64le.Dockerfile | 14 +++++++-------
ci/containers/debian-sid-cross-s390x.Dockerfile | 14 +++++++-------
ci/containers/debian-sid.Dockerfile | 10 +++++-----
ci/containers/fedora-41.Dockerfile | 10 +++++-----
ci/containers/fedora-42-cross-mingw32.Dockerfile | 14 +++++++-------
ci/containers/fedora-42-cross-mingw64.Dockerfile | 14 +++++++-------
ci/containers/fedora-42.Dockerfile | 10 +++++-----
.../fedora-rawhide-cross-mingw32.Dockerfile | 14 +++++++-------
.../fedora-rawhide-cross-mingw64.Dockerfile | 14 +++++++-------
ci/containers/fedora-rawhide.Dockerfile | 10 +++++-----
ci/containers/opensuse-leap-15.Dockerfile | 10 +++++-----
ci/containers/opensuse-tumbleweed.Dockerfile | 10 +++++-----
ci/containers/ubuntu-2204.Dockerfile | 10 +++++-----
ci/containers/ubuntu-2404.Dockerfile | 10 +++++-----
32 files changed, 198 insertions(+), 198 deletions(-)
diff --git a/ci/containers/almalinux-9.Dockerfile b/ci/containers/almalinux-9.Dockerfile
index a30e4d9452..c7d34f9f5f 100644
--- a/ci/containers/almalinux-9.Dockerfile
+++ b/ci/containers/almalinux-9.Dockerfile
@@ -88,8 +88,8 @@ RUN dnf update -y && \
RUN /usr/bin/pip3 install black
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
diff --git a/ci/containers/alpine-322.Dockerfile b/ci/containers/alpine-322.Dockerfile
index d02e243e3f..84188f75b2 100644
--- a/ci/containers/alpine-322.Dockerfile
+++ b/ci/containers/alpine-322.Dockerfile
@@ -70,8 +70,8 @@ RUN apk update && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
diff --git a/ci/containers/alpine-edge.Dockerfile b/ci/containers/alpine-edge.Dockerfile
index fc4b9a3e56..c35c56fc1a 100644
--- a/ci/containers/alpine-edge.Dockerfile
+++ b/ci/containers/alpine-edge.Dockerfile
@@ -70,8 +70,8 @@ RUN apk update && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
diff --git a/ci/containers/centos-stream-9.Dockerfile b/ci/containers/centos-stream-9.Dockerfile
index 94a563ad05..0d1ffa295c 100644
--- a/ci/containers/centos-stream-9.Dockerfile
+++ b/ci/containers/centos-stream-9.Dockerfile
@@ -89,8 +89,8 @@ RUN dnf distro-sync -y && \
RUN /usr/bin/pip3 install black
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
diff --git a/ci/containers/debian-12-cross-aarch64.Dockerfile b/ci/containers/debian-12-cross-aarch64.Dockerfile
index 5130adc2fb..eb4266b2e8 100644
--- a/ci/containers/debian-12-cross-aarch64.Dockerfile
+++ b/ci/containers/debian-12-cross-aarch64.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture arm64 && \
@@ -112,5 +112,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/aarch64-linux-gnu && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-gcc
-ENV ABI "aarch64-linux-gnu"
-ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
+ENV ABI="aarch64-linux-gnu"
+ENV MESON_OPTS="--cross-file=aarch64-linux-gnu"
diff --git a/ci/containers/debian-12-cross-armv6l.Dockerfile b/ci/containers/debian-12-cross-armv6l.Dockerfile
index a2140109bf..ec0e002bca 100644
--- a/ci/containers/debian-12-cross-armv6l.Dockerfile
+++ b/ci/containers/debian-12-cross-armv6l.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture armel && \
@@ -111,5 +111,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/arm-linux-gnueabi && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-gcc
-ENV ABI "arm-linux-gnueabi"
-ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
+ENV ABI="arm-linux-gnueabi"
+ENV MESON_OPTS="--cross-file=arm-linux-gnueabi"
diff --git a/ci/containers/debian-12-cross-armv7l.Dockerfile b/ci/containers/debian-12-cross-armv7l.Dockerfile
index 1f23cd4005..3c6deda8f8 100644
--- a/ci/containers/debian-12-cross-armv7l.Dockerfile
+++ b/ci/containers/debian-12-cross-armv7l.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture armhf && \
@@ -112,5 +112,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/arm-linux-gnueabihf && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-gcc
-ENV ABI "arm-linux-gnueabihf"
-ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
+ENV ABI="arm-linux-gnueabihf"
+ENV MESON_OPTS="--cross-file=arm-linux-gnueabihf"
diff --git a/ci/containers/debian-12-cross-i686.Dockerfile b/ci/containers/debian-12-cross-i686.Dockerfile
index 02489aec68..6c6fa74eb7 100644
--- a/ci/containers/debian-12-cross-i686.Dockerfile
+++ b/ci/containers/debian-12-cross-i686.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture i386 && \
@@ -111,5 +111,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/i686-linux-gnu && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-gcc
-ENV ABI "i686-linux-gnu"
-ENV MESON_OPTS "--cross-file=i686-linux-gnu"
+ENV ABI="i686-linux-gnu"
+ENV MESON_OPTS="--cross-file=i686-linux-gnu"
diff --git a/ci/containers/debian-12-cross-mips64el.Dockerfile b/ci/containers/debian-12-cross-mips64el.Dockerfile
index acad2cfd10..51f59de57e 100644
--- a/ci/containers/debian-12-cross-mips64el.Dockerfile
+++ b/ci/containers/debian-12-cross-mips64el.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture mips64el && \
@@ -111,5 +111,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/mips64el-linux-gnuabi64 && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-gcc
-ENV ABI "mips64el-linux-gnuabi64"
-ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
+ENV ABI="mips64el-linux-gnuabi64"
+ENV MESON_OPTS="--cross-file=mips64el-linux-gnuabi64"
diff --git a/ci/containers/debian-12-cross-mipsel.Dockerfile b/ci/containers/debian-12-cross-mipsel.Dockerfile
index 98ab8139ce..fa46422041 100644
--- a/ci/containers/debian-12-cross-mipsel.Dockerfile
+++ b/ci/containers/debian-12-cross-mipsel.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture mipsel && \
@@ -111,5 +111,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/mipsel-linux-gnu && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-gcc
-ENV ABI "mipsel-linux-gnu"
-ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
+ENV ABI="mipsel-linux-gnu"
+ENV MESON_OPTS="--cross-file=mipsel-linux-gnu"
diff --git a/ci/containers/debian-12-cross-ppc64le.Dockerfile b/ci/containers/debian-12-cross-ppc64le.Dockerfile
index 233ef84082..8599c527fe 100644
--- a/ci/containers/debian-12-cross-ppc64le.Dockerfile
+++ b/ci/containers/debian-12-cross-ppc64le.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture ppc64el && \
@@ -111,5 +111,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/powerpc64le-linux-gnu && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-gcc
-ENV ABI "powerpc64le-linux-gnu"
-ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
+ENV ABI="powerpc64le-linux-gnu"
+ENV MESON_OPTS="--cross-file=powerpc64le-linux-gnu"
diff --git a/ci/containers/debian-12-cross-s390x.Dockerfile b/ci/containers/debian-12-cross-s390x.Dockerfile
index 6c1fae3d27..c48968073d 100644
--- a/ci/containers/debian-12-cross-s390x.Dockerfile
+++ b/ci/containers/debian-12-cross-s390x.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture s390x && \
@@ -111,5 +111,5 @@ endian = 'big'\n" > /usr/local/share/meson/cross/s390x-linux-gnu && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-gcc
-ENV ABI "s390x-linux-gnu"
-ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
+ENV ABI="s390x-linux-gnu"
+ENV MESON_OPTS="--cross-file=s390x-linux-gnu"
diff --git a/ci/containers/debian-12.Dockerfile b/ci/containers/debian-12.Dockerfile
index 8c801e228e..044962d10b 100644
--- a/ci/containers/debian-12.Dockerfile
+++ b/ci/containers/debian-12.Dockerfile
@@ -88,8 +88,8 @@ 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
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
diff --git a/ci/containers/debian-sid-cross-aarch64.Dockerfile b/ci/containers/debian-sid-cross-aarch64.Dockerfile
index 5489aaa53c..a476df0a5f 100644
--- a/ci/containers/debian-sid-cross-aarch64.Dockerfile
+++ b/ci/containers/debian-sid-cross-aarch64.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture arm64 && \
@@ -112,5 +112,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/aarch64-linux-gnu && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-gcc
-ENV ABI "aarch64-linux-gnu"
-ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
+ENV ABI="aarch64-linux-gnu"
+ENV MESON_OPTS="--cross-file=aarch64-linux-gnu"
diff --git a/ci/containers/debian-sid-cross-armv6l.Dockerfile b/ci/containers/debian-sid-cross-armv6l.Dockerfile
index e3ae1c50b7..aee3867132 100644
--- a/ci/containers/debian-sid-cross-armv6l.Dockerfile
+++ b/ci/containers/debian-sid-cross-armv6l.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture armel && \
@@ -109,5 +109,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/arm-linux-gnueabi && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-gcc
-ENV ABI "arm-linux-gnueabi"
-ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
+ENV ABI="arm-linux-gnueabi"
+ENV MESON_OPTS="--cross-file=arm-linux-gnueabi"
diff --git a/ci/containers/debian-sid-cross-armv7l.Dockerfile b/ci/containers/debian-sid-cross-armv7l.Dockerfile
index 5aaf29d22a..618a7f5a35 100644
--- a/ci/containers/debian-sid-cross-armv7l.Dockerfile
+++ b/ci/containers/debian-sid-cross-armv7l.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture armhf && \
@@ -109,5 +109,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/arm-linux-gnueabihf && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-gcc
-ENV ABI "arm-linux-gnueabihf"
-ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
+ENV ABI="arm-linux-gnueabihf"
+ENV MESON_OPTS="--cross-file=arm-linux-gnueabihf"
diff --git a/ci/containers/debian-sid-cross-i686.Dockerfile b/ci/containers/debian-sid-cross-i686.Dockerfile
index decc0805e1..da5d47215d 100644
--- a/ci/containers/debian-sid-cross-i686.Dockerfile
+++ b/ci/containers/debian-sid-cross-i686.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture i386 && \
@@ -109,5 +109,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/i686-linux-gnu && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-gcc
-ENV ABI "i686-linux-gnu"
-ENV MESON_OPTS "--cross-file=i686-linux-gnu"
+ENV ABI="i686-linux-gnu"
+ENV MESON_OPTS="--cross-file=i686-linux-gnu"
diff --git a/ci/containers/debian-sid-cross-mips64el.Dockerfile b/ci/containers/debian-sid-cross-mips64el.Dockerfile
index 67904f419f..0638f4f096 100644
--- a/ci/containers/debian-sid-cross-mips64el.Dockerfile
+++ b/ci/containers/debian-sid-cross-mips64el.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture mips64el && \
@@ -111,5 +111,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/mips64el-linux-gnuabi64 && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-gcc
-ENV ABI "mips64el-linux-gnuabi64"
-ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
+ENV ABI="mips64el-linux-gnuabi64"
+ENV MESON_OPTS="--cross-file=mips64el-linux-gnuabi64"
diff --git a/ci/containers/debian-sid-cross-ppc64le.Dockerfile b/ci/containers/debian-sid-cross-ppc64le.Dockerfile
index 608017ade9..2b0ff92363 100644
--- a/ci/containers/debian-sid-cross-ppc64le.Dockerfile
+++ b/ci/containers/debian-sid-cross-ppc64le.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture ppc64el && \
@@ -111,5 +111,5 @@ endian = 'little'\n" > /usr/local/share/meson/cross/powerpc64le-linux-gnu && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-gcc
-ENV ABI "powerpc64le-linux-gnu"
-ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
+ENV ABI="powerpc64le-linux-gnu"
+ENV MESON_OPTS="--cross-file=powerpc64le-linux-gnu"
diff --git a/ci/containers/debian-sid-cross-s390x.Dockerfile b/ci/containers/debian-sid-cross-s390x.Dockerfile
index 877239819f..782fe63ae5 100644
--- a/ci/containers/debian-sid-cross-s390x.Dockerfile
+++ b/ci/containers/debian-sid-cross-s390x.Dockerfile
@@ -47,11 +47,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg-reconfigure locales && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN export DEBIAN_FRONTEND=noninteractive && \
dpkg --add-architecture s390x && \
@@ -111,5 +111,5 @@ endian = 'big'\n" > /usr/local/share/meson/cross/s390x-linux-gnu && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-gcc
-ENV ABI "s390x-linux-gnu"
-ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
+ENV ABI="s390x-linux-gnu"
+ENV MESON_OPTS="--cross-file=s390x-linux-gnu"
diff --git a/ci/containers/debian-sid.Dockerfile b/ci/containers/debian-sid.Dockerfile
index 7a6c7cd6a3..dc60ddefe2 100644
--- a/ci/containers/debian-sid.Dockerfile
+++ b/ci/containers/debian-sid.Dockerfile
@@ -88,8 +88,8 @@ 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
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
diff --git a/ci/containers/fedora-41.Dockerfile b/ci/containers/fedora-41.Dockerfile
index fbd19bf50a..218d1e8c76 100644
--- a/ci/containers/fedora-41.Dockerfile
+++ b/ci/containers/fedora-41.Dockerfile
@@ -96,8 +96,8 @@ exec "$@"\n' > /usr/bin/nosync && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
diff --git a/ci/containers/fedora-42-cross-mingw32.Dockerfile b/ci/containers/fedora-42-cross-mingw32.Dockerfile
index 69c6198c83..94d9378850 100644
--- a/ci/containers/fedora-42-cross-mingw32.Dockerfile
+++ b/ci/containers/fedora-42-cross-mingw32.Dockerfile
@@ -54,11 +54,11 @@ exec "$@"\n' > /usr/bin/nosync && \
nosync dnf clean all -y && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN nosync dnf install -y \
mingw32-curl \
@@ -79,5 +79,5 @@ RUN nosync dnf install -y \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-w64-mingw32-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-w64-mingw32-gcc
-ENV ABI "i686-w64-mingw32"
-ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
+ENV ABI="i686-w64-mingw32"
+ENV MESON_OPTS="--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
diff --git a/ci/containers/fedora-42-cross-mingw64.Dockerfile b/ci/containers/fedora-42-cross-mingw64.Dockerfile
index a00067d614..9d59a70975 100644
--- a/ci/containers/fedora-42-cross-mingw64.Dockerfile
+++ b/ci/containers/fedora-42-cross-mingw64.Dockerfile
@@ -54,11 +54,11 @@ exec "$@"\n' > /usr/bin/nosync && \
nosync dnf clean all -y && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN nosync dnf install -y \
mingw64-curl \
@@ -79,5 +79,5 @@ RUN nosync dnf install -y \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/x86_64-w64-mingw32-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/x86_64-w64-mingw32-gcc
-ENV ABI "x86_64-w64-mingw32"
-ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
+ENV ABI="x86_64-w64-mingw32"
+ENV MESON_OPTS="--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
diff --git a/ci/containers/fedora-42.Dockerfile b/ci/containers/fedora-42.Dockerfile
index df57898ed6..ed8636d7b0 100644
--- a/ci/containers/fedora-42.Dockerfile
+++ b/ci/containers/fedora-42.Dockerfile
@@ -96,8 +96,8 @@ exec "$@"\n' > /usr/bin/nosync && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
diff --git a/ci/containers/fedora-rawhide-cross-mingw32.Dockerfile b/ci/containers/fedora-rawhide-cross-mingw32.Dockerfile
index 381bab3088..4aeb9a5a0e 100644
--- a/ci/containers/fedora-rawhide-cross-mingw32.Dockerfile
+++ b/ci/containers/fedora-rawhide-cross-mingw32.Dockerfile
@@ -55,11 +55,11 @@ exec "$@"\n' > /usr/bin/nosync && \
nosync dnf clean all -y && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN nosync dnf install -y \
mingw32-curl \
@@ -80,5 +80,5 @@ RUN nosync dnf install -y \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-w64-mingw32-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-w64-mingw32-gcc
-ENV ABI "i686-w64-mingw32"
-ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
+ENV ABI="i686-w64-mingw32"
+ENV MESON_OPTS="--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
diff --git a/ci/containers/fedora-rawhide-cross-mingw64.Dockerfile b/ci/containers/fedora-rawhide-cross-mingw64.Dockerfile
index 9ccea17e22..465faac2cd 100644
--- a/ci/containers/fedora-rawhide-cross-mingw64.Dockerfile
+++ b/ci/containers/fedora-rawhide-cross-mingw64.Dockerfile
@@ -55,11 +55,11 @@ exec "$@"\n' > /usr/bin/nosync && \
nosync dnf clean all -y && \
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
RUN nosync dnf install -y \
mingw64-curl \
@@ -80,5 +80,5 @@ RUN nosync dnf install -y \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/x86_64-w64-mingw32-cc && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/x86_64-w64-mingw32-gcc
-ENV ABI "x86_64-w64-mingw32"
-ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
+ENV ABI="x86_64-w64-mingw32"
+ENV MESON_OPTS="--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
diff --git a/ci/containers/fedora-rawhide.Dockerfile b/ci/containers/fedora-rawhide.Dockerfile
index f4e95f8b8e..62ab294a5e 100644
--- a/ci/containers/fedora-rawhide.Dockerfile
+++ b/ci/containers/fedora-rawhide.Dockerfile
@@ -97,8 +97,8 @@ exec "$@"\n' > /usr/bin/nosync && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
diff --git a/ci/containers/opensuse-leap-15.Dockerfile b/ci/containers/opensuse-leap-15.Dockerfile
index c19f136513..2cc6e19c84 100644
--- a/ci/containers/opensuse-leap-15.Dockerfile
+++ b/ci/containers/opensuse-leap-15.Dockerfile
@@ -90,8 +90,8 @@ RUN zypper update -y && \
RUN /usr/bin/pip3 install black
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
diff --git a/ci/containers/opensuse-tumbleweed.Dockerfile b/ci/containers/opensuse-tumbleweed.Dockerfile
index f220b82a1a..7942cc0151 100644
--- a/ci/containers/opensuse-tumbleweed.Dockerfile
+++ b/ci/containers/opensuse-tumbleweed.Dockerfile
@@ -86,8 +86,8 @@ RUN zypper dist-upgrade -y && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
diff --git a/ci/containers/ubuntu-2204.Dockerfile b/ci/containers/ubuntu-2204.Dockerfile
index 8fe2ab81b5..73933debd1 100644
--- a/ci/containers/ubuntu-2204.Dockerfile
+++ b/ci/containers/ubuntu-2204.Dockerfile
@@ -89,8 +89,8 @@ 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
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
diff --git a/ci/containers/ubuntu-2404.Dockerfile b/ci/containers/ubuntu-2404.Dockerfile
index 9f410e926c..446866b65a 100644
--- a/ci/containers/ubuntu-2404.Dockerfile
+++ b/ci/containers/ubuntu-2404.Dockerfile
@@ -89,8 +89,8 @@ 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
-ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
-ENV LANG "en_US.UTF-8"
-ENV MAKE "/usr/bin/make"
-ENV NINJA "/usr/bin/ninja"
-ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
--
2.49.1
2
1
Ján Tomko (8):
qemu: passt: split out qemuPasstBuildCommand
tests: qemuxmlconftests: store suffix in testQemuInfo
tests: qemuxmlconftest: Introduce testQemuConfMarkUsed
export qemuVirtioFSBuildCommandLine
tests: qemuxmlconftest: test passt command line too
tests: qemuxmlconf: virtiofs: remove locking from the readonly test
case
tests: qemuxmlconftests: test virtiofsd command line too
tests: qemuxmlconftest: test locking with older virtiofsd
src/qemu/qemu_passt.c | 38 ++++--
src/qemu/qemu_passt.h | 5 +
src/qemu/qemu_virtiofs.c | 2 +-
src/qemu/qemu_virtiofs.h | 5 +
.../net-user-passt.x86_64-7.2.0.passt0.args | 13 ++
.../net-user-passt.x86_64-latest.passt0.args | 13 ++
...-vhostuser-passt.x86_64-latest.passt0.args | 14 ++
...-vhostuser-passt.x86_64-latest.passt1.args | 5 +
...-vhostuser-passt.x86_64-latest.passt2.args | 6 +
...main-subelements.x86_64-latest.passt0.args | 7 +
...t-user-fs-ccw.s390x-latest.virtiofsd0.args | 3 +
...fs-fd-memory.x86_64-latest.virtiofsd0.args | 9 ++
...fd-openfiles.x86_64-latest.virtiofsd0.args | 10 ++
...fs-hugepages.x86_64-latest.virtiofsd0.args | 3 +
...fs-hugepages.x86_64-latest.virtiofsd1.args | 3 +
.../vhost-user-fs-locking.x86_64-7.2.0.args | 35 +++++
...er-fs-locking.x86_64-7.2.0.virtiofsd0.args | 4 +
.../vhost-user-fs-locking.x86_64-7.2.0.xml | 46 +++++++
.../qemuxmlconfdata/vhost-user-fs-locking.xml | 46 +++++++
...-fs-readonly.x86_64-latest.virtiofsd0.args | 6 +
.../vhost-user-fs-readonly.xml | 1 -
tests/qemuxmlconftest.c | 125 ++++++++++++++++--
tests/testutilsqemu.h | 1 +
23 files changed, 381 insertions(+), 19 deletions(-)
create mode 100644 tests/qemuxmlconfdata/net-user-passt.x86_64-7.2.0.passt0.args
create mode 100644 tests/qemuxmlconfdata/net-user-passt.x86_64-latest.passt0.args
create mode 100644 tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt0.args
create mode 100644 tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt1.args
create mode 100644 tests/qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.passt2.args
create mode 100644 tests/qemuxmlconfdata/schema-reorder-domain-subelements.x86_64-latest.passt0.args
create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-ccw.s390x-latest.virtiofsd0.args
create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-fd-memory.x86_64-latest.virtiofsd0.args
create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-fd-openfiles.x86_64-latest.virtiofsd0.args
create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-hugepages.x86_64-latest.virtiofsd0.args
create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-hugepages.x86_64-latest.virtiofsd1.args
create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-locking.x86_64-7.2.0.args
create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-locking.x86_64-7.2.0.virtiofsd0.args
create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-locking.x86_64-7.2.0.xml
create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-locking.xml
create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-readonly.x86_64-latest.virtiofsd0.args
--
2.50.1
2
14
[PATCH 00/31] qemu: Improve handling of architecture-specific defaults (USB and PCI)
by Andrea Bolognani 20 Sep '25
by Andrea Bolognani 20 Sep '25
20 Sep '25
Just like the series dealing with [SCSI] from last month, this is an
effort to complete work that I had started in early 2024 ([v2], [v1])
and then promptly forgot about.
Dealing with USB controllers is a lot easier compared to a year and a
half ago because Peter has already brought some much-needed sanity to
their handling in the meantime, including finally removing all uses
of -usb, but there's still room for improvement.
Looking at USB controllers made me realize that we were doing things
incorrectly or suboptimally on the PCI side as well, so there are a
number of changes in that part of libvirt too.
Since USB controllers are PCI devices, some of the changes in one
area directly affect the other one and it would have been challening
to separate these patches into two smaller series in a way that would
make sense, so unfortunately you get a single big one instead. Sorry.
[SCSI] https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/AL6G…
[v2] https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/FZ6B…
[v1] https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/G53M…
Andrea Bolognani (31):
tests: Fix typo in usb-controller-nec-xhci-autoassign
tests: Drop coverage for versatilepb on aarch64
tests: Don't use memballoon=none for minimal tests
tests: Don't set PCI address in usb-controller-default tests
tests: Minimize usb-controller tests
tests: Rename usb-controller-implicit-*
tests: Expand coverage for automatic/default USB controllers
tests: Fix some usb-controller-*-unavailable cases
qemu: Check for pci-ohci availability
tests: Use realview-eb instead of realview-pbx-a9
qemu: Fix PCI/USB handling for Arm realview boards
tests: Add coverage for PCI use with isapc
qemu: Don't add memballoon to isapc
qemu: Introduce qemuDomainNetIsPCI()
qemu: Prevent use of PCI devices when PCI is not supported
qemu: Validate presence of PCI support
qemu: Update qemuDomainSupportsPCI()
qemu: Add sanity checks for auto-added PCI and USB controllers
qemu: Ensure USB controllers have a PCI address assigned
qemu: Always default to no USB controller on s390x
qemu: Drop skip for USB controllers on s390x
qemu: Fold check into qemuBuildSkipController()
qemu: Validate USB controllers earlier
qemu: Add qemuDomainDefaultUSBControllerModel()
qemu: Add qemuDomainDefaultUSBControllerModelAutoAdded()
qemu: Clean up qemuDomainDefaultUSBControllerModel()
qemu: Use qemu-xhci by default on RISC-V
qemu: Allow nec-xhci as fallback for modern architectures
qemu: Remove fallback to piix3-uhci for Arm virt guests
qemu: Finish cleaning up qemuDomainDefaultUSBControllerModel()
news: Update for USB controller model selection improvements
NEWS.rst | 6 +
src/qemu/qemu_command.c | 86 +---------
src/qemu/qemu_domain.c | 151 +++++++++++++++++-
src/qemu/qemu_domain.h | 5 +
src/qemu/qemu_domain_address.c | 80 ++++++++--
src/qemu/qemu_postparse.c | 137 +++++++---------
src/qemu/qemu_validate.c | 83 +++++++++-
.../qemuhotplug-base-ccw-live+ccw-virtio.xml | 5 +-
...with-2-ccw-virtio+ccw-virtio-1-reverse.xml | 5 +-
...otplug-base-ccw-live-with-2-ccw-virtio.xml | 5 +-
...-with-ccw-virtio+ccw-virtio-2-explicit.xml | 5 +-
...-ccw-live-with-ccw-virtio+ccw-virtio-2.xml | 5 +-
...uhotplug-base-ccw-live-with-ccw-virtio.xml | 5 +-
.../qemuhotplug-base-ccw-live.xml | 5 +-
...ousb-minimal.aarch64-latest.abi-update.xml | 1 -
.../aarch64-nousb-minimal.aarch64-latest.xml | 1 -
.../qemuxmlconfdata/aarch64-nousb-minimal.xml | 1 -
...iew-minimal.aarch64-latest.abi-update.args | 4 +-
...view-minimal.aarch64-latest.abi-update.xml | 8 +-
...rch64-realview-minimal.aarch64-latest.args | 4 +-
...arch64-realview-minimal.aarch64-latest.xml | 8 +-
.../aarch64-realview-minimal.xml | 3 +-
...epb-minimal.aarch64-latest.abi-update.args | 32 ----
...lepb-minimal.aarch64-latest.abi-update.xml | 25 ---
...64-versatilepb-minimal.aarch64-latest.args | 32 ----
...h64-versatilepb-minimal.aarch64-latest.xml | 25 ---
...lepb-minimal.armv7l-latest.abi-update.args | 2 +-
...ilepb-minimal.armv7l-latest.abi-update.xml | 3 +-
...v7l-versatilepb-minimal.armv7l-latest.args | 2 +-
...mv7l-versatilepb-minimal.armv7l-latest.xml | 3 +-
.../armv7l-versatilepb-minimal.xml | 1 -
.../isapc-pci.x86_64-latest.err | 1 +
...roller-default-isapc.xml => isapc-pci.xml} | 7 +-
tests/qemuxmlconfdata/ppc-dtb.ppc-latest.args | 2 +-
tests/qemuxmlconfdata/ppc-dtb.ppc-latest.xml | 2 +-
...c-mac99-minimal.ppc-latest.abi-update.args | 2 +-
...pc-mac99-minimal.ppc-latest.abi-update.xml | 2 +-
.../ppc-mac99-minimal.ppc-latest.args | 2 +-
.../ppc-mac99-minimal.ppc-latest.xml | 2 +-
.../ppce500-serial.ppc-latest.args | 2 +-
.../ppce500-serial.ppc-latest.xml | 2 +-
...ault-models.riscv64-latest.abi-update.args | 15 +-
...fault-models.riscv64-latest.abi-update.xml | 26 ++-
...64-virt-default-models.riscv64-latest.args | 15 +-
...v64-virt-default-models.riscv64-latest.xml | 26 ++-
.../s390-usb-address.s390x-latest.xml | 6 +-
...oller-automatic-i440fx.x86_64-latest.args} | 0
...roller-automatic-i440fx.x86_64-latest.xml} | 0
...ml => usb-controller-automatic-i440fx.xml} | 2 -
...roller-automatic-isapc.x86_64-latest.args} | 0
...troller-automatic-isapc.x86_64-latest.xml} | 0
...xml => usb-controller-automatic-isapc.xml} | 2 -
...atic-pseries.ppc64-latest.abi-update.args} | 1 -
...matic-pseries.ppc64-latest.abi-update.xml} | 13 +-
...oller-automatic-pseries.ppc64-latest.args} | 1 -
...roller-automatic-pseries.ppc64-latest.xml} | 11 +-
...l => usb-controller-automatic-pseries.xml} | 8 +-
...ntroller-automatic-q35.x86_64-latest.args} | 0
...ontroller-automatic-q35.x86_64-latest.xml} | 0
...5.xml => usb-controller-automatic-q35.xml} | 2 -
...er-automatic-realview.aarch64-latest.args} | 4 +-
...ler-automatic-realview.aarch64-latest.xml} | 4 +-
... => usb-controller-automatic-realview.xml} | 2 +-
...troller-automatic-s390x.s390x-latest.args} | 11 +-
...ntroller-automatic-s390x.s390x-latest.xml} | 15 +-
.../usb-controller-automatic-s390x.xml | 13 ++
...lable-pseries.ppc64-latest.abi-update.err} | 0
...atic-unavailable-pseries.ppc64-latest.err} | 0
...ntroller-automatic-unavailable-pseries.xml | 1 +
...utomatic-unavailable-q35.x86_64-latest.xml | 2 +-
...b-controller-automatic-unavailable-q35.xml | 7 -
...c-unavailable-realview.aarch64-latest.err} | 0
...troller-automatic-unavailable-realview.xml | 1 +
...unavailable-versatilepb.armv7l-latest.err} | 0
...ller-automatic-unavailable-versatilepb.xml | 1 +
...-automatic-versatilepb.armv7l-latest.args} | 2 +-
...r-automatic-versatilepb.armv7l-latest.xml} | 4 +-
... usb-controller-automatic-versatilepb.xml} | 0
...utomatic-virt-aarch64.aarch64-latest.args} | 20 +--
...automatic-virt-aarch64.aarch64-latest.xml} | 15 +-
.../usb-controller-automatic-virt-aarch64.xml | 12 ++
...-virt-loongarch64.loongarch64-latest.args} | 20 +--
...c-virt-loongarch64.loongarch64-latest.xml} | 12 +-
...-controller-automatic-virt-loongarch64.xml | 12 ++
...utomatic-virt-riscv64.riscv64-latest.args} | 20 +--
...automatic-virt-riscv64.riscv64-latest.xml} | 11 +-
...usb-controller-automatic-virt-riscv64.xml} | 8 +-
...default-fallback-g3beige.ppc64-latest.args | 1 -
...-default-fallback-g3beige.ppc64-latest.xml | 11 +-
...r-default-fallback-mac99.ppc64-latest.args | 1 -
...er-default-fallback-mac99.ppc64-latest.xml | 11 +-
...-default-fallback-mac99ppc.ppc-latest.args | 1 -
...r-default-fallback-mac99ppc.ppc-latest.xml | 11 +-
...default-fallback-nousb.aarch64-latest.args | 32 ----
...-default-fallback-nousb.aarch64-latest.xml | 23 ---
.../usb-controller-default-fallback-nousb.xml | 1 -
...efault-fallback-powernv9.ppc64-latest.args | 1 -
...default-fallback-powernv9.ppc64-latest.xml | 11 +-
...ault-fallback-realview.aarch64-latest.args | 4 +-
...fault-fallback-realview.aarch64-latest.xml | 6 +-
...ck-versatilepb-aarch64.aarch64-latest.args | 32 ----
...ack-versatilepb-aarch64.aarch64-latest.xml | 25 ---
...r-default-fallback-versatilepb-aarch64.xml | 1 -
...er-default-fallback-versatilepb-armv7l.xml | 1 -
...t-fallback-versatilepb.armv7l-latest.args} | 0
...lt-fallback-versatilepb.armv7l-latest.xml} | 0
...ontroller-default-fallback-versatilepb.xml | 1 +
...fallback-virt-aarch64.aarch64-latest.args} | 28 ++--
...-fallback-virt-aarch64.aarch64-latest.xml} | 26 ++-
...ntroller-default-fallback-virt-aarch64.xml | 1 +
...fallback-virt-riscv64.riscv64-latest.args} | 28 ++--
...-fallback-virt-riscv64.riscv64-latest.xml} | 26 +--
...ntroller-default-fallback-virt-riscv64.xml | 1 +
...ntroller-default-g3beige.ppc64-latest.args | 1 -
...ontroller-default-g3beige.ppc64-latest.xml | 11 +-
.../usb-controller-default-g3beige.xml | 11 +-
...ntroller-default-i440fx.x86_64-latest.args | 1 -
...ontroller-default-i440fx.x86_64-latest.xml | 4 +-
.../usb-controller-default-i440fx.xml | 8 +-
...controller-default-isapc.x86_64-latest.err | 2 +-
.../usb-controller-default-isapc.xml | 2 -
...controller-default-mac99.ppc64-latest.args | 1 -
...-controller-default-mac99.ppc64-latest.xml | 11 +-
.../usb-controller-default-mac99.xml | 11 +-
...ontroller-default-mac99ppc.ppc-latest.args | 3 +-
...controller-default-mac99ppc.ppc-latest.xml | 13 +-
.../usb-controller-default-mac99ppc.xml | 11 +-
...fault-nousb.aarch64-latest.abi-update.err} | 0
...ntroller-default-nousb.aarch64-latest.args | 32 ----
...ontroller-default-nousb.aarch64-latest.err | 1 +
...ontroller-default-nousb.aarch64-latest.xml | 23 ---
.../usb-controller-default-nousb.xml | 1 -
...troller-default-powernv9.ppc64-latest.args | 1 -
...ntroller-default-powernv9.ppc64-latest.xml | 11 +-
.../usb-controller-default-powernv9.xml | 11 +-
...fault-pseries.ppc64-latest.abi-update.args | 1 -
...efault-pseries.ppc64-latest.abi-update.xml | 11 +-
...ntroller-default-pseries.ppc64-latest.args | 1 -
...ontroller-default-pseries.ppc64-latest.xml | 11 +-
.../usb-controller-default-pseries.xml | 18 +--
...-controller-default-q35.x86_64-latest.args | 5 +-
...b-controller-default-q35.x86_64-latest.xml | 18 ++-
.../usb-controller-default-q35.xml | 11 +-
...oller-default-realview.aarch64-latest.args | 4 +-
...roller-default-realview.aarch64-latest.xml | 6 +-
.../usb-controller-default-realview.xml | 3 +-
...ontroller-default-s390x.s390x-latest.args} | 11 +-
...controller-default-s390x.s390x-latest.xml} | 16 +-
.../usb-controller-default-s390x.xml | 14 ++
...fault-unavailable-g3beige.ppc64-latest.xml | 34 ----
...fault-unavailable-i440fx.x86_64-latest.xml | 31 ----
...default-unavailable-mac99.ppc64-latest.xml | 34 ----
...efault-unavailable-mac99ppc.ppc-latest.xml | 31 ----
...ault-unavailable-nousb.aarch64-latest.args | 32 ----
...fault-unavailable-nousb.aarch64-latest.xml | 23 ---
...b-controller-default-unavailable-nousb.xml | 1 -
...ault-unavailable-powernv9.ppc64-latest.xml | 34 ----
...-default-unavailable-q35.x86_64-latest.xml | 33 ----
...t-unavailable-realview.aarch64-latest.args | 31 ----
...t-unavailable-realview.aarch64-latest.err} | 0
...lt-unavailable-realview.aarch64-latest.xml | 23 ---
...le-versatilepb-aarch64.aarch64-latest.args | 32 ----
...ble-versatilepb-aarch64.aarch64-latest.xml | 25 ---
...efault-unavailable-versatilepb-aarch64.xml | 1 -
...default-unavailable-versatilepb-armv7l.xml | 1 -
...unavailable-versatilepb.armv7l-latest.err} | 0
...roller-default-unavailable-versatilepb.xml | 1 +
...available-virt-aarch64.aarch64-latest.err} | 0
...oller-default-unavailable-virt-aarch64.xml | 1 +
...available-virt-riscv64.riscv64-latest.err} | 0
...oller-default-unavailable-virt-riscv64.xml | 1 +
...lt-versatilepb-aarch64.aarch64-latest.args | 32 ----
...controller-default-versatilepb-aarch64.xml | 16 --
...fault-versatilepb-armv7l.armv7l-latest.xml | 27 ----
...er-default-versatilepb.armv7l-latest.args} | 2 +-
...ler-default-versatilepb.armv7l-latest.xml} | 4 +-
...=> usb-controller-default-versatilepb.xml} | 1 -
...-default-virt-aarch64.aarch64-latest.args} | 26 ++-
...r-default-virt-aarch64.aarch64-latest.xml} | 24 ++-
...> usb-controller-default-virt-aarch64.xml} | 9 +-
...-virt-loongarch64.loongarch64-latest.args} | 26 ++-
...t-virt-loongarch64.loongarch64-latest.xml} | 21 +--
...b-controller-default-virt-loongarch64.xml} | 9 +-
...-default-virt-riscv64.riscv64-latest.args} | 26 ++-
...r-default-virt-riscv64.riscv64-latest.xml} | 20 +--
...> usb-controller-default-virt-riscv64.xml} | 8 +-
...troller-ich9-autoassign.x86_64-latest.args | 1 -
...ntroller-ich9-autoassign.x86_64-latest.xml | 4 +-
.../usb-controller-ich9-autoassign.xml | 16 +-
...ntroller-ich9-companion.x86_64-latest.args | 1 -
...ontroller-ich9-companion.x86_64-latest.xml | 4 +-
.../usb-controller-ich9-companion.xml | 4 +-
...ntroller-ich9-ehci-addr.x86_64-latest.args | 1 -
...ontroller-ich9-ehci-addr.x86_64-latest.xml | 4 +-
.../usb-controller-ich9-ehci-addr.xml | 4 +-
.../usb-controller-ich9-no-companion.xml | 6 +-
...er-nec-xhci-autoassign.x86_64-latest.args} | 0
...ler-nec-xhci-autoassign.x86_64-latest.xml} | 0
...=> usb-controller-nec-xhci-autoassign.xml} | 14 +-
.../usb-controller-nec-xhci-limit.xml | 2 -
.../usb-controller-nec-xhci.x86_64-latest.xml | 2 +-
.../usb-controller-nec-xhci.xml | 7 -
.../usb-controller-piix3.x86_64-latest.args | 1 -
.../usb-controller-piix3.x86_64-latest.xml | 4 +-
.../qemuxmlconfdata/usb-controller-piix3.xml | 4 +-
tests/qemuxmlconftest.c | 128 ++++++++++-----
206 files changed, 897 insertions(+), 1601 deletions(-)
delete mode 100644 tests/qemuxmlconfdata/aarch64-versatilepb-minimal.aarch64-latest.abi-update.args
delete mode 100644 tests/qemuxmlconfdata/aarch64-versatilepb-minimal.aarch64-latest.abi-update.xml
delete mode 100644 tests/qemuxmlconfdata/aarch64-versatilepb-minimal.aarch64-latest.args
delete mode 100644 tests/qemuxmlconfdata/aarch64-versatilepb-minimal.aarch64-latest.xml
create mode 100644 tests/qemuxmlconfdata/isapc-pci.x86_64-latest.err
copy tests/qemuxmlconfdata/{usb-controller-default-isapc.xml => isapc-pci.xml} (64%)
rename tests/qemuxmlconfdata/{usb-controller-implicit-i440fx.x86_64-latest.args => usb-controller-automatic-i440fx.x86_64-latest.args} (100%)
rename tests/qemuxmlconfdata/{usb-controller-implicit-i440fx.x86_64-latest.xml => usb-controller-automatic-i440fx.x86_64-latest.xml} (100%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-i440fx.xml => usb-controller-automatic-i440fx.xml} (83%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-isapc.x86_64-latest.args => usb-controller-automatic-isapc.x86_64-latest.args} (100%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-isapc.x86_64-latest.xml => usb-controller-automatic-isapc.x86_64-latest.xml} (100%)
rename tests/qemuxmlconfdata/{usb-controller-implicit-isapc.xml => usb-controller-automatic-isapc.xml} (83%)
copy tests/qemuxmlconfdata/{usb-controller-default-pseries.ppc64-latest.abi-update.args => usb-controller-automatic-pseries.ppc64-latest.abi-update.args} (93%)
rename tests/qemuxmlconfdata/{usb-controller-default-unavailable-pseries.ppc64-latest.xml => usb-controller-automatic-pseries.ppc64-latest.abi-update.xml} (77%)
copy tests/qemuxmlconfdata/{usb-controller-default-pseries.ppc64-latest.args => usb-controller-automatic-pseries.ppc64-latest.args} (93%)
copy tests/qemuxmlconfdata/{usb-controller-default-pseries.ppc64-latest.xml => usb-controller-automatic-pseries.ppc64-latest.xml} (80%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-i440fx.xml => usb-controller-automatic-pseries.xml} (50%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-q35.x86_64-latest.args => usb-controller-automatic-q35.x86_64-latest.args} (100%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-q35.x86_64-latest.xml => usb-controller-automatic-q35.x86_64-latest.xml} (100%)
rename tests/qemuxmlconfdata/{usb-controller-implicit-q35.xml => usb-controller-automatic-q35.xml} (83%)
copy tests/qemuxmlconfdata/{aarch64-realview-minimal.aarch64-latest.abi-update.args => usb-controller-automatic-realview.aarch64-latest.args} (89%)
rename tests/qemuxmlconfdata/{usb-controller-default-versatilepb-aarch64.aarch64-latest.xml => usb-controller-automatic-realview.aarch64-latest.xml} (93%)
rename tests/qemuxmlconfdata/{aarch64-versatilepb-minimal.xml => usb-controller-automatic-realview.xml} (85%)
copy tests/qemuxmlconfdata/{ppc-mac99-minimal.ppc-latest.abi-update.args => usb-controller-automatic-s390x.s390x-latest.args} (70%)
copy tests/qemuxmlconfdata/{s390-usb-address.s390x-latest.xml => usb-controller-automatic-s390x.s390x-latest.xml} (59%)
create mode 100644 tests/qemuxmlconfdata/usb-controller-automatic-s390x.xml
copy tests/qemuxmlconfdata/{usb-controller-default-unavailable-versatilepb-armv7l.armv7l-latest.err => usb-controller-automatic-unavailable-pseries.ppc64-latest.abi-update.err} (100%)
copy tests/qemuxmlconfdata/{usb-controller-default-unavailable-versatilepb-armv7l.armv7l-latest.err => usb-controller-automatic-unavailable-pseries.ppc64-latest.err} (100%)
create mode 120000 tests/qemuxmlconfdata/usb-controller-automatic-unavailable-pseries.xml
copy tests/qemuxmlconfdata/{usb-controller-default-unavailable-versatilepb-armv7l.armv7l-latest.err => usb-controller-automatic-unavailable-realview.aarch64-latest.err} (100%)
create mode 120000 tests/qemuxmlconfdata/usb-controller-automatic-unavailable-realview.xml
copy tests/qemuxmlconfdata/{usb-controller-default-unavailable-versatilepb-armv7l.armv7l-latest.err => usb-controller-automatic-unavailable-versatilepb.armv7l-latest.err} (100%)
create mode 120000 tests/qemuxmlconfdata/usb-controller-automatic-unavailable-versatilepb.xml
rename tests/qemuxmlconfdata/{usb-controller-default-versatilepb-armv7l.armv7l-latest.args => usb-controller-automatic-versatilepb.armv7l-latest.args} (94%)
rename tests/qemuxmlconfdata/{usb-controller-default-unavailable-versatilepb-armv7l.armv7l-latest.xml => usb-controller-automatic-versatilepb.armv7l-latest.xml} (93%)
copy tests/qemuxmlconfdata/{armv7l-versatilepb-minimal.xml => usb-controller-automatic-versatilepb.xml} (100%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-isapc.x86_64-latest.args => usb-controller-automatic-virt-aarch64.aarch64-latest.args} (52%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-isapc.x86_64-latest.xml => usb-controller-automatic-virt-aarch64.aarch64-latest.xml} (63%)
create mode 100644 tests/qemuxmlconfdata/usb-controller-automatic-virt-aarch64.xml
copy tests/qemuxmlconfdata/{usb-controller-implicit-isapc.x86_64-latest.args => usb-controller-automatic-virt-loongarch64.loongarch64-latest.args} (52%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-isapc.x86_64-latest.xml => usb-controller-automatic-virt-loongarch64.loongarch64-latest.xml} (63%)
create mode 100644 tests/qemuxmlconfdata/usb-controller-automatic-virt-loongarch64.xml
rename tests/qemuxmlconfdata/{usb-controller-implicit-isapc.x86_64-latest.args => usb-controller-automatic-virt-riscv64.riscv64-latest.args} (52%)
rename tests/qemuxmlconfdata/{usb-controller-implicit-isapc.x86_64-latest.xml => usb-controller-automatic-virt-riscv64.riscv64-latest.xml} (67%)
rename tests/qemuxmlconfdata/{usb-controller-implicit-i440fx.xml => usb-controller-automatic-virt-riscv64.xml} (53%)
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-fallback-nousb.aarch64-latest.args
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-fallback-nousb.aarch64-latest.xml
delete mode 120000 tests/qemuxmlconfdata/usb-controller-default-fallback-nousb.xml
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-fallback-versatilepb-aarch64.aarch64-latest.args
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-fallback-versatilepb-aarch64.aarch64-latest.xml
delete mode 120000 tests/qemuxmlconfdata/usb-controller-default-fallback-versatilepb-aarch64.xml
delete mode 120000 tests/qemuxmlconfdata/usb-controller-default-fallback-versatilepb-armv7l.xml
rename tests/qemuxmlconfdata/{usb-controller-default-fallback-versatilepb-armv7l.armv7l-latest.args => usb-controller-default-fallback-versatilepb.armv7l-latest.args} (100%)
copy tests/qemuxmlconfdata/{armv7l-versatilepb-minimal.armv7l-latest.abi-update.xml => usb-controller-default-fallback-versatilepb.armv7l-latest.xml} (100%)
create mode 120000 tests/qemuxmlconfdata/usb-controller-default-fallback-versatilepb.xml
copy tests/qemuxmlconfdata/{usb-controller-implicit-q35.x86_64-latest.args => usb-controller-default-fallback-virt-aarch64.aarch64-latest.args} (50%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-q35.x86_64-latest.xml => usb-controller-default-fallback-virt-aarch64.aarch64-latest.xml} (60%)
create mode 120000 tests/qemuxmlconfdata/usb-controller-default-fallback-virt-aarch64.xml
copy tests/qemuxmlconfdata/{usb-controller-implicit-q35.x86_64-latest.args => usb-controller-default-fallback-virt-riscv64.riscv64-latest.args} (50%)
rename tests/qemuxmlconfdata/{usb-controller-nec-xhci-unavailable.x86_64-latest.xml => usb-controller-default-fallback-virt-riscv64.riscv64-latest.xml} (53%)
create mode 120000 tests/qemuxmlconfdata/usb-controller-default-fallback-virt-riscv64.xml
copy tests/qemuxmlconfdata/{usb-controller-default-isapc.x86_64-latest.err => usb-controller-default-nousb.aarch64-latest.abi-update.err} (100%)
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-nousb.aarch64-latest.args
create mode 100644 tests/qemuxmlconfdata/usb-controller-default-nousb.aarch64-latest.err
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-nousb.aarch64-latest.xml
copy tests/qemuxmlconfdata/{ppc-mac99-minimal.ppc-latest.abi-update.args => usb-controller-default-s390x.s390x-latest.args} (70%)
copy tests/qemuxmlconfdata/{s390-usb-address.s390x-latest.xml => usb-controller-default-s390x.s390x-latest.xml} (59%)
create mode 100644 tests/qemuxmlconfdata/usb-controller-default-s390x.xml
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-unavailable-g3beige.ppc64-latest.xml
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-unavailable-i440fx.x86_64-latest.xml
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-unavailable-mac99.ppc64-latest.xml
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-unavailable-mac99ppc.ppc-latest.xml
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-unavailable-nousb.aarch64-latest.args
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-unavailable-nousb.aarch64-latest.xml
delete mode 120000 tests/qemuxmlconfdata/usb-controller-default-unavailable-nousb.xml
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-unavailable-powernv9.ppc64-latest.xml
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-unavailable-q35.x86_64-latest.xml
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-unavailable-realview.aarch64-latest.args
copy tests/qemuxmlconfdata/{usb-controller-default-unavailable-versatilepb-armv7l.armv7l-latest.err => usb-controller-default-unavailable-realview.aarch64-latest.err} (100%)
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-unavailable-realview.aarch64-latest.xml
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-unavailable-versatilepb-aarch64.aarch64-latest.args
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-unavailable-versatilepb-aarch64.aarch64-latest.xml
delete mode 120000 tests/qemuxmlconfdata/usb-controller-default-unavailable-versatilepb-aarch64.xml
delete mode 120000 tests/qemuxmlconfdata/usb-controller-default-unavailable-versatilepb-armv7l.xml
copy tests/qemuxmlconfdata/{usb-controller-default-unavailable-versatilepb-armv7l.armv7l-latest.err => usb-controller-default-unavailable-versatilepb.armv7l-latest.err} (100%)
create mode 120000 tests/qemuxmlconfdata/usb-controller-default-unavailable-versatilepb.xml
copy tests/qemuxmlconfdata/{usb-controller-default-unavailable-versatilepb-armv7l.armv7l-latest.err => usb-controller-default-unavailable-virt-aarch64.aarch64-latest.err} (100%)
create mode 120000 tests/qemuxmlconfdata/usb-controller-default-unavailable-virt-aarch64.xml
rename tests/qemuxmlconfdata/{usb-controller-default-unavailable-versatilepb-armv7l.armv7l-latest.err => usb-controller-default-unavailable-virt-riscv64.riscv64-latest.err} (100%)
create mode 120000 tests/qemuxmlconfdata/usb-controller-default-unavailable-virt-riscv64.xml
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-versatilepb-aarch64.aarch64-latest.args
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-versatilepb-aarch64.xml
delete mode 100644 tests/qemuxmlconfdata/usb-controller-default-versatilepb-armv7l.armv7l-latest.xml
copy tests/qemuxmlconfdata/{armv7l-versatilepb-minimal.armv7l-latest.abi-update.args => usb-controller-default-versatilepb.armv7l-latest.args} (94%)
rename tests/qemuxmlconfdata/{usb-controller-default-fallback-versatilepb-armv7l.armv7l-latest.xml => usb-controller-default-versatilepb.armv7l-latest.xml} (93%)
rename tests/qemuxmlconfdata/{usb-controller-default-versatilepb-armv7l.xml => usb-controller-default-versatilepb.xml} (87%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-q35.x86_64-latest.args => usb-controller-default-virt-aarch64.aarch64-latest.args} (55%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-q35.x86_64-latest.xml => usb-controller-default-virt-aarch64.aarch64-latest.xml} (63%)
copy tests/qemuxmlconfdata/{usb-controller-default-isapc.xml => usb-controller-default-virt-aarch64.xml} (50%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-q35.x86_64-latest.args => usb-controller-default-virt-loongarch64.loongarch64-latest.args} (55%)
copy tests/qemuxmlconfdata/{usb-controller-implicit-q35.x86_64-latest.xml => usb-controller-default-virt-loongarch64.loongarch64-latest.xml} (63%)
copy tests/qemuxmlconfdata/{usb-controller-default-isapc.xml => usb-controller-default-virt-loongarch64.xml} (50%)
rename tests/qemuxmlconfdata/{usb-controller-implicit-q35.x86_64-latest.args => usb-controller-default-virt-riscv64.riscv64-latest.args} (55%)
rename tests/qemuxmlconfdata/{usb-controller-implicit-q35.x86_64-latest.xml => usb-controller-default-virt-riscv64.riscv64-latest.xml} (65%)
copy tests/qemuxmlconfdata/{usb-controller-default-isapc.xml => usb-controller-default-virt-riscv64.xml} (57%)
rename tests/qemuxmlconfdata/{usb-controller-nex-xhci-autoassign.x86_64-latest.args => usb-controller-nec-xhci-autoassign.x86_64-latest.args} (100%)
rename tests/qemuxmlconfdata/{usb-controller-nex-xhci-autoassign.x86_64-latest.xml => usb-controller-nec-xhci-autoassign.x86_64-latest.xml} (100%)
rename tests/qemuxmlconfdata/{usb-controller-nex-xhci-autoassign.xml => usb-controller-nec-xhci-autoassign.xml} (64%)
--
2.50.1
5
85
We are getting close to 11.8.0 release of libvirt. To aim for the
release on Wednesday 01 Oct I suggest entering the freeze on Thursday 25
Sep and tagging RC2 on Monday 29 Sep.
I hope this works for everyone.
Jirka
1
0
[PATCH] libvirt-host: VIR_NODE_CPU_STATS: clarify Linux, BSD differences
by Claudio Fontana 18 Sep '25
by Claudio Fontana 18 Sep '25
18 Sep '25
the accounting choices are not necessarily intuitive, especially
comparing Linux with BSD, so clarify the current state of things.
Mark which counters are actually used on Linux and BSD,
and how they are accumulated into the libvirt statistics.
Signed-off-by: Claudio Fontana <cfontana(a)suse.de>
---
include/libvirt/libvirt-host.h | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/include/libvirt/libvirt-host.h b/include/libvirt/libvirt-host.h
index 398b40c35a..4d4f1c02df 100644
--- a/include/libvirt/libvirt-host.h
+++ b/include/libvirt/libvirt-host.h
@@ -223,6 +223,9 @@ typedef enum {
* Macro for the cumulative CPU time which was spent by the kernel,
* since the node booting up (in nanoseconds).
*
+ * Linux: this statistic includes kernel + irq + softirq time.
+ * BSD: this statistic includes only CP_SYS. CP_INTR is accounted separately.
+ *
* Since: 0.9.3
*/
# define VIR_NODE_CPU_STATS_KERNEL "kernel"
@@ -233,6 +236,8 @@ typedef enum {
* The cumulative CPU time which was spent by user processes,
* since the node booting up (in nanoseconds).
*
+ * Linux, BSD: this statistic includes user + nice time.
+ *
* Since: 0.9.3
*/
# define VIR_NODE_CPU_STATS_USER "user"
@@ -243,6 +248,8 @@ typedef enum {
* The cumulative idle CPU time,
* since the node booting up (in nanoseconds).
*
+ * Linux, BSD
+ *
* Since: 0.9.3
*/
# define VIR_NODE_CPU_STATS_IDLE "idle"
@@ -253,6 +260,8 @@ typedef enum {
* The cumulative I/O wait CPU time,
* since the node booting up (in nanoseconds).
*
+ * Linux-only.
+ *
* Since: 0.9.3
*/
# define VIR_NODE_CPU_STATS_IOWAIT "iowait"
@@ -263,6 +272,9 @@ typedef enum {
* The cumulative interrupt CPU time,
* since the node booting up (in nanoseconds).
*
+ * BSD-only.
+ * Note that on Linux, interrupt CPU time is accounted as part of "kernel".
+ *
* Since: 1.2.2
*/
# define VIR_NODE_CPU_STATS_INTR "intr"
@@ -273,6 +285,9 @@ typedef enum {
* The cumulative CPU time spent running guest virtual CPUs,
* since the node booting up (in nanoseconds).
*
+ * Linux-only.
+ * Note that on BSD, guest CPU time is accounted as part of CP_SYS alias "kernel"
+ *
* Since: 11.8.0
*/
# define VIR_NODE_CPU_STATS_GUEST "guest"
--
2.35.3
1
0
Cc: libvirt
Filip Hejsek <filip.hejsek(a)gmail.com> writes:
> From: Szymon Lukasz <noh4hss(a)gmail.com>
>
> The managment software can use this command to notify QEMU about the
> size of the terminal connected to a chardev, QEMU can then forward this
> information to the guest if the chardev is connected to a virtio console
> device.
>
> Signed-off-by: Szymon Lukasz <noh4hss(a)gmail.com>
> Suggested-by: Daniel P. Berrangé <berrange(a)redhat.com>
> Signed-off-by: Filip Hejsek <filip.hejsek(a)gmail.com>
> ---
> chardev/char.c | 14 ++++++++++++++
> qapi/char.json | 22 ++++++++++++++++++++++
> 2 files changed, 36 insertions(+)
>
> diff --git a/chardev/char.c b/chardev/char.c
> index b45d79cb9b57643827eb7479257fdda2cf6b0434..6e3ade98614c949be8041ec5905a490ff536dee9 100644
> --- a/chardev/char.c
> +++ b/chardev/char.c
> @@ -1269,6 +1269,20 @@ bool qmp_add_client_char(int fd, bool has_skipauth, bool skipauth,
> return true;
> }
>
> +void qmp_chardev_resize(const char *id, uint16_t cols, uint16_t rows,
> + Error **errp)
> +{
> + Chardev *chr;
> +
> + chr = qemu_chr_find(id);
> + if (chr == NULL) {
> + error_setg(errp, "Chardev '%s' not found", id);
> + return;
> + }
> +
> + qemu_chr_resize(chr, cols, rows);
> +}
> +
> /*
> * Add a timeout callback for the chardev (in milliseconds), return
> * the GSource object created. Please use this to add timeout hook for
> diff --git a/qapi/char.json b/qapi/char.json
> index f0a53f742c8bee24c377551803a864fd36ac78cf..0a26c5eee6b71bc5de127a91b253cc69a9fe8ce6 100644
> --- a/qapi/char.json
> +++ b/qapi/char.json
> @@ -874,6 +874,28 @@
> { 'command': 'chardev-send-break',
> 'data': { 'id': 'str' } }
>
> +##
> +# @chardev-resize:
This name doesn't tell me what is being resized. PATCH 04 uses
"winsize", which is better. The (losely) related SIGWINCH suggests
"window change" or "window size change". Below, you use "terminal
size".
> +#
> +# Notifies a chardev about the current size of the terminal connected
> +# to this chardev.
Yes, but what is it good for? Your commit message tells: "managment
software can use this command to notify QEMU about the size of the
terminal connected to a chardev, QEMU can then forward this information
to the guest if the chardev is connected to a virtio console device."
> +#
> +# @id: the chardev's ID, must exist
> +# @cols: the number of columns
> +# @rows: the number of rows
Blank lines between the argument descriptions, bease.
What's the initial size?
Do we need a way to query the size?
> +#
> +# Since: 10.2
> +#
> +# .. qmp-example::
> +#
> +# -> { "execute": "chardev-resize", "arguments": { "id": "foo", "cols": 80, "rows": 24 } }
> +# <- { "return": {} }
> +##
> +{ 'command': 'chardev-resize',
> + 'data': { 'id': 'str',
> + 'cols': 'uint16',
> + 'rows': 'uint16' } }
> +
> ##
> # @VSERPORT_CHANGE:
> #
2
6
Cc: libvirt
Vladimir Sementsov-Ogievskiy <vsementsov(a)yandex-team.ru> writes:
> This field is mostly unused and sometimes confusing (we even have
> a TODO-like comment to drop it). Let's finally do.
>
> The field is used to held VHOST_USER_F_PROTOCOL_FEATURES for vhost-user
> and/or VHOST_NET_F_VIRTIO_NET_HDR for vhost-net (which may be
> vhoust-user-net). But we can simply recalculte these two flags inplace
> from hdev->features, and from net-client for
> VHOST_NET_F_VIRTIO_NET_HDR.
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov(a)yandex-team.ru>
[...]
> diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h
> index 66be6afc88..9f9dd2d46d 100644
> --- a/include/hw/virtio/vhost.h
> +++ b/include/hw/virtio/vhost.h
> @@ -100,16 +100,9 @@ struct vhost_dev {
> *
> * @features: available features provided by the backend
> * @acked_features: final negotiated features with front-end driver
> - *
> - * @backend_features: this is used in a couple of places to either
> - * store VHOST_USER_F_PROTOCOL_FEATURES to apply to
> - * VHOST_USER_SET_FEATURES or VHOST_NET_F_VIRTIO_NET_HDR. Its
> - * future use should be discouraged and the variable retired as
> - * its easy to confuse with the VirtIO backend_features.
I guess this is the TODO-like comment mentioned in the commit message.
> */
> uint64_t features;
> uint64_t acked_features;
> - uint64_t backend_features;
>
> /**
> * @protocol_features: is the vhost-user only feature set by
> diff --git a/qapi/virtio.json b/qapi/virtio.json
> index 9d652fe4a8..0aae77340d 100644
> --- a/qapi/virtio.json
> +++ b/qapi/virtio.json
> @@ -85,8 +85,6 @@
> #
> # @acked-features: vhost_dev acked_features
> #
> -# @backend-features: vhost_dev backend_features
> -#
> # @protocol-features: vhost_dev protocol_features
> #
> # @max-queues: vhost_dev max_queues
> @@ -106,7 +104,6 @@
> 'vq-index': 'int',
> 'features': 'VirtioDeviceFeatures',
> 'acked-features': 'VirtioDeviceFeatures',
> - 'backend-features': 'VirtioDeviceFeatures',
> 'protocol-features': 'VhostDeviceProtocols',
> 'max-queues': 'uint64',
> 'backend-cap': 'uint64',
Incompatible change. We can do this because it's only visible in the
return value of x-query-virtio-status, which is unstable. Recommend to
note this in the commit message.
Acked-by: Markus Armbruster <armbru(a)redhat.com>
1
0
Ján Tomko (2):
build: bump minimum glib version to 2.68
util: remove glibcompat.c
meson.build | 2 +-
src/conf/virdomainjob.c | 6 +-
src/esx/esx_vi_types.c | 9 +-
src/internal.h | 24 ----
src/libvirt_private.syms | 4 -
src/qemu/qemu_capabilities.c | 8 +-
src/util/glibcompat.c | 213 -----------------------------------
src/util/glibcompat.h | 29 -----
src/util/meson.build | 1 -
9 files changed, 13 insertions(+), 283 deletions(-)
delete mode 100644 src/util/glibcompat.c
--
2.50.1
2
3