[libvirt PATCH 0/5] Miscelaneous libc-related fixes
by Martin Kletzander
Compiling libvirt on alpine showed a bunch of things that are
potentially wrong, we just haven't noticed elsewhere.
Martin Kletzander (5):
syntax-check: Rework mock-noinline to get all files at once
Include poll.h instead of sys/poll.h
Include sys/wait.h instead of wait.h
nwfilter: Avoid memory alignment issues
tests: Allow expansion of mocked stat symbols
build-aux/syntax-check.mk | 2 +-
scripts/mock-noinline.py | 2 +-
src/lxc/lxc_driver.c | 4 ++--
src/network/bridge_driver.c | 2 +-
src/nwfilter/nwfilter_learnipaddr.c | 15 ++++++++-------
src/openvz/openvz_driver.c | 2 +-
src/qemu/qemu_driver.c | 2 +-
src/security/security_apparmor.c | 2 +-
src/vz/vz_driver.c | 2 +-
tests/virmock.h | 4 +++-
10 files changed, 20 insertions(+), 17 deletions(-)
--
2.35.1
2 years, 9 months
[libvirt PATCH] wireshark: Fix dissector for quad types
by Martin Kletzander
This uses the right type that is expected to make it work even on platforms
where gint64 != quad_t.
Due to indentation changes it is best to view this patch with -w.
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
tools/wireshark/src/packet-libvirt.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/packet-libvirt.c
index eeacbcdf0e14..ee20e3734d74 100644
--- a/tools/wireshark/src/packet-libvirt.c
+++ b/tools/wireshark/src/packet-libvirt.c
@@ -74,17 +74,17 @@ static gint ett_libvirt_stream_hole = -1;
VIR_WARNINGS_NO_UNUSED_FUNCTION
-XDR_PRIMITIVE_DISSECTOR(int, gint32, int)
-XDR_PRIMITIVE_DISSECTOR(u_int, guint32, uint)
-XDR_PRIMITIVE_DISSECTOR(short, gint16, int)
-XDR_PRIMITIVE_DISSECTOR(u_short, guint16, uint)
-XDR_PRIMITIVE_DISSECTOR(char, gchar, int)
-XDR_PRIMITIVE_DISSECTOR(u_char, guchar, uint)
-XDR_PRIMITIVE_DISSECTOR(hyper, gint64, int64)
-XDR_PRIMITIVE_DISSECTOR(u_hyper, guint64, uint64)
-XDR_PRIMITIVE_DISSECTOR(float, gfloat, float)
-XDR_PRIMITIVE_DISSECTOR(double, gdouble, double)
-XDR_PRIMITIVE_DISSECTOR(bool, bool_t, boolean)
+XDR_PRIMITIVE_DISSECTOR(int, gint32, int)
+XDR_PRIMITIVE_DISSECTOR(u_int, guint32, uint)
+XDR_PRIMITIVE_DISSECTOR(short, gint16, int)
+XDR_PRIMITIVE_DISSECTOR(u_short, guint16, uint)
+XDR_PRIMITIVE_DISSECTOR(char, gchar, int)
+XDR_PRIMITIVE_DISSECTOR(u_char, guchar, uint)
+XDR_PRIMITIVE_DISSECTOR(hyper, quad_t, int64)
+XDR_PRIMITIVE_DISSECTOR(u_hyper, u_quad_t, uint64)
+XDR_PRIMITIVE_DISSECTOR(float, gfloat, float)
+XDR_PRIMITIVE_DISSECTOR(double, gdouble, double)
+XDR_PRIMITIVE_DISSECTOR(bool, bool_t, boolean)
VIR_WARNINGS_RESET
--
2.35.1
2 years, 9 months
[PATCH 00/17] lxc_fuse: Implement support for FUSE3
by Michal Privoznik
Unfortunately, we can't just replace FUSE with FUSE3 because Ubuntu1804
doesn't have fuse3 package, but in a few weeks time, when the support
for old Ubuntu is dropped, we can drop old FUSE support too.
Michal Prívozník (17):
lxc_fuse: Hide struct virLXCFuse
lxc_fuse: Move virLXCMeminfo struct into lxc_cgroup.h
lxc_fuse.h: Don't include lxc_conf.h
lxc_fuse: Move #include <fuse.h>
lxc_fuse: Drop some G_GNUC_UNUSED attributes
lxc_fuse.c: Modernize function declarations
lxc_fuse: Prefer O_ACCMODE instead of & 3
lxcSetupFuse: Cleanup error paths
lxcProcReadMeminfo: Rename @fd to @fp
lxc_fuse: Use automatic file closing
lxcProcReadMeminfo: Drop needless label
lxcProcReadMeminfo: Drop @new_meminfo variable
lxcProcReadMeminfo: Fix case when @offset != 0
lxc_fuse: Prefer fuse_file_info::direct_io over mount option
lxc_fuse: Tell FUSE that /proc/meminfo is nonseekable
lxc_fuse: Implement support for FUSE3
meson: Detect newer fuse
meson.build | 12 +-
src/lxc/lxc_cgroup.h | 13 +++
src/lxc/lxc_fuse.c | 258 ++++++++++++++++++++++++++++++-------------
src/lxc/lxc_fuse.h | 28 +----
4 files changed, 207 insertions(+), 104 deletions(-)
--
2.34.1
2 years, 9 months
[libvirt PATCH] Add .gitattributes file
by Andrea Bolognani
The files marked as export-ignore here are not going to be
included in the tarball produced by 'meson dist' when using
meson >= 0.60.
Older versions of meson excluded a small subset of these files
automatically, but since we have more control now we can be
more aggressive and leave out anything that doesn't make sense
in a release tarball.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
.gitattributes | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 .gitattributes
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000..6f0a34d2a0
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,22 @@
+# Generic git stuff
+**/.gitattributes export-ignore
+**/.gitignore export-ignore
+/.gitmodules export-ignore
+/.mailmap export-ignore
+
+# Project-specific git stuff
+/.gitpublish export-ignore
+/docs/gitdm export-ignore
+/docs/gitdm/** export-ignore
+/gitdm.config export-ignore
+
+# Code hosting stuff
+/.github export-ignore
+/.github/** export-ignore
+/.gitlab export-ignore
+/.gitlab/** export-ignore
+
+# CI stuff
+/.gitlab-ci.yml export-ignore
+/ci export-ignore
+/ci/** export-ignore
--
2.35.1
2 years, 9 months
[libvirt PATCH] docs: remove extra closing tag
by Ján Tomko
Reported-by: Юлій В. Чирков <juliyvchirkov(a)gmail.com>
Closes: https://gitlab.com/libvirt/libvirt/-/merge_requests/143
Fixes: d3ac12e3a1c01d1205b4db3f6cd640f3da98579b
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
---
Pushed as trivial.
docs/formatnetwork.html.in | 1 -
1 file changed, 1 deletion(-)
diff --git a/docs/formatnetwork.html.in b/docs/formatnetwork.html.in
index fad43f77ea..56ff32fbf4 100644
--- a/docs/formatnetwork.html.in
+++ b/docs/formatnetwork.html.in
@@ -1250,7 +1250,6 @@
</dhcp>
</ip>
<ip family="ipv6" address="fdXX:XXXX:XXXX:NNNN:: prefix="64"/>
- </ip>
</network></pre>
<p>IPv6 NAT addressing has some caveats over the more straight
--
2.35.1
2 years, 9 months
[PULL v2 21/47] hw/i386/pc_piix: Mark the machine types from version 1.4 to 1.7 as deprecated
by Michael S. Tsirkin
From: Thomas Huth <thuth(a)redhat.com>
The list of machine types grows larger and larger each release ... and
it is unlikely that many people still use the very old ones for live
migration. QEMU v1.7 has been released more than 8 years ago, so most
people should have updated their machines to a newer version in those
8 years at least once. Thus let's mark the very old 1.x machine types
as deprecated now.
Signed-off-by: Thomas Huth <thuth(a)redhat.com>
Message-Id: <20220117191639.278497-1-thuth(a)redhat.com>
Reviewed-by: Michael S. Tsirkin <mst(a)redhat.com>
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
---
hw/i386/pc_piix.c | 1 +
docs/about/deprecated.rst | 8 ++++++++
2 files changed, 9 insertions(+)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 8d33cf689d..b72c03d0a6 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -757,6 +757,7 @@ static void pc_i440fx_1_7_machine_options(MachineClass *m)
m->hw_version = "1.7.0";
m->default_machine_opts = NULL;
m->option_rom_has_mr = true;
+ m->deprecation_reason = "old and unattended - use a newer version instead";
compat_props_add(m->compat_props, pc_compat_1_7, pc_compat_1_7_len);
pcmc->smbios_defaults = false;
pcmc->gigabyte_align = false;
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 85773db631..cf02ef6821 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -324,6 +324,14 @@ machine is hardly emulated at all (e.g. neither the LCD nor the USB part had
been implemented), so there is not much value added by this board. Use the
``ref405ep`` machine instead.
+``pc-i440fx-1.4`` up to ``pc-i440fx-1.7`` (since 7.0)
+'''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+These old machine types are quite neglected nowadays and thus might have
+various pitfalls with regards to live migration. Use a newer machine type
+instead.
+
+
Backend options
---------------
--
MST
2 years, 9 months
Release of libvirt-8.1.0
by Jiri Denemark
The 8.1.0 release of both libvirt and libvirt-python is tagged and
signed tarballs and source RPMs are available at
https://libvirt.org/sources/
https://libvirt.org/sources/python/
Thanks everybody who helped with this release by sending patches,
reviewing, testing, or providing feedback. Your work is greatly
appreciated.
* 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.
Enjoy.
Jirka
2 years, 9 months
[PATCH v2 0/8] softmmu: move and refactor -runas, -chroot and -daemonize
by Daniel P. Berrangé
This small series was motivated by my thoughts on the proposals in
https://lists.gnu.org/archive/html/qemu-devel/2022-03/msg01135.html
It demonstrates the approach I mention there, and has the further
benefit of untangling and isolating the implementation of UID
changing, chrooting and daemonizing, from the parsing of the
corresponding command line options.
Changed in v2:
- Fix mistake that left stderr open when daemonizing
- Remove use of is_daemonized from chardev
- Remove use of is_daemonized from logging
- Eliminate is_daemonized function
Daniel P. Berrangé (8):
softmmu: remove deprecated --enable-fips option
os-posix: refactor code handling the -runas argument
os-posix: refactor code handling the -chroot argument
util: remove use of is_daemonized flag from logging code
softmmu: refactor use of is_daemonized() method
chardev: add API to block use of the stdio implementation
softmmu: move parsing of -runas, -chroot and -daemonize code
softmmu: remove is_daemonized() method
chardev/char-stdio.c | 12 +-
docs/about/deprecated.rst | 12 --
docs/about/removed-features.rst | 11 ++
include/chardev/char-stdio.h | 29 ++++
include/qemu/log.h | 1 +
include/qemu/osdep.h | 3 -
include/sysemu/os-posix.h | 6 +-
include/sysemu/os-win32.h | 6 -
os-posix.c | 227 ++++++++++----------------------
os-win32.c | 9 --
qemu-options.hx | 10 --
softmmu/vl.c | 92 +++++++++++--
stubs/is-daemonized.c | 9 --
stubs/meson.build | 1 -
ui/vnc.c | 7 -
util/log.c | 12 +-
util/osdep.c | 28 ----
17 files changed, 213 insertions(+), 262 deletions(-)
create mode 100644 include/chardev/char-stdio.h
delete mode 100644 stubs/is-daemonized.c
--
2.34.1
2 years, 9 months
[PATCH 0/4] softmmu: move and refactor -runas, -chroot and -daemonize
by Daniel P. Berrangé
This small series was motivated by my thoughts on the proposals in
https://lists.gnu.org/archive/html/qemu-devel/2022-03/msg01135.html
It demostrates the approach I mention there, and has the further
benefit of untangling and isolating the implementation of UID
changing, chrooting and daemonized, from the parsing of the
corresponding command line options.
Daniel P. Berrangé (4):
softmmu: remove deprecated --enable-fips option
os-posix: refactor code handling the -runas argument
os-posix: refactor code handling the -chroot argument
softmmu: move parsing of -runas, -chroot and -daemonize code
docs/about/deprecated.rst | 12 --
docs/about/removed-features.rst | 11 ++
include/qemu/osdep.h | 3 -
include/sysemu/os-posix.h | 4 +-
include/sysemu/os-win32.h | 1 -
os-posix.c | 222 ++++++++++----------------------
os-win32.c | 9 --
qemu-options.hx | 10 --
softmmu/vl.c | 76 ++++++++++-
ui/vnc.c | 7 -
util/osdep.c | 28 ----
11 files changed, 154 insertions(+), 229 deletions(-)
--
2.34.1
2 years, 9 months
[libvirt PATCH v2] qemu: support multiqueue for vdpa net device
by Jonathon Jongsma
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2024406
Signed-off-by: Jonathon Jongsma <jjongsma(a)redhat.com>
---
Changes in v2:
- remove error message in virDomainNetDefParseXML(). The model is already
checked in the post parse validation step.
src/conf/domain_conf.c | 2 ++
src/qemu/qemu_domain.c | 3 +-
.../net-vdpa-multiqueue.x86_64-latest.args | 36 +++++++++++++++++++
.../qemuxml2argvdata/net-vdpa-multiqueue.xml | 29 +++++++++++++++
tests/qemuxml2argvtest.c | 1 +
.../net-vdpa-multiqueue.xml | 36 +++++++++++++++++++
tests/qemuxml2xmltest.c | 1 +
7 files changed, 107 insertions(+), 1 deletion(-)
create mode 100644 tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/net-vdpa-multiqueue.xml
create mode 100644 tests/qemuxml2xmloutdata/net-vdpa-multiqueue.xml
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 34fec887a3..9634c9256e 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -10552,6 +10552,8 @@ virDomainNetDefParseXML(virDomainXMLOption *xmlopt,
goto error;
}
def->data.vdpa.devicepath = g_steal_pointer(&dev);
+ if (!def->model)
+ def->model = VIR_DOMAIN_NET_MODEL_VIRTIO;
break;
case VIR_DOMAIN_NET_TYPE_BRIDGE:
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index acc76c1cd6..6b61fefb8f 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -4523,7 +4523,8 @@ qemuDomainValidateActualNetDef(const virDomainNetDef *net,
actualType == VIR_DOMAIN_NET_TYPE_BRIDGE ||
actualType == VIR_DOMAIN_NET_TYPE_DIRECT ||
actualType == VIR_DOMAIN_NET_TYPE_ETHERNET ||
- actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER)) {
+ actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER ||
+ actualType == VIR_DOMAIN_NET_TYPE_VDPA)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("interface %s - multiqueue is not supported for network interfaces of type %s"),
macstr, virDomainNetTypeToString(actualType));
diff --git a/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args b/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args
new file mode 100644
index 0000000000..26ef666036
--- /dev/null
+++ b/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args
@@ -0,0 +1,36 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/tmp/lib/domain--1-QEMUGuest1 \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \
+XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \
+XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+/usr/bin/qemu-system-x86_64 \
+-name guest=QEMUGuest1,debug-threads=on \
+-S \
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-QEMUGuest1/master-key.aes"}' \
+-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \
+-accel tcg \
+-cpu qemu64 \
+-m 214 \
+-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
+-overcommit mem-lock=off \
+-smp 1,sockets=1,cores=1,threads=1 \
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+-display none \
+-no-user-config \
+-nodefaults \
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
+-mon chardev=charmonitor,id=monitor,mode=control \
+-rtc base=utc \
+-no-shutdown \
+-no-acpi \
+-boot strict=on \
+-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
+-add-fd set=0,fd=1732,opaque=net0-vdpa \
+-netdev vhost-vdpa,vhostdev=/dev/fdset/0,id=hostnet0 \
+-device '{"driver":"virtio-net-pci","mq":true,"vectors":6,"netdev":"hostnet0","id":"net0","mac":"52:54:00:95:db:c0","bus":"pci.0","addr":"0x2"}' \
+-audiodev '{"id":"audio1","driver":"none"}' \
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
+-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/net-vdpa-multiqueue.xml b/tests/qemuxml2argvdata/net-vdpa-multiqueue.xml
new file mode 100644
index 0000000000..2e38c6f976
--- /dev/null
+++ b/tests/qemuxml2argvdata/net-vdpa-multiqueue.xml
@@ -0,0 +1,29 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>219136</memory>
+ <currentMemory unit='KiB'>219136</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
+ <controller type='usb' index='0'/>
+ <controller type='ide' index='0'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <interface type='vdpa'>
+ <mac address='52:54:00:95:db:c0'/>
+ <source dev='/dev/vhost-vdpa-0'/>
+ <driver queues='2'/>
+ </interface>
+ <input type='mouse' bus='ps2'/>
+ <input type='keyboard' bus='ps2'/>
+ <memballoon model='none'/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index ce475df466..7e1167e60e 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -1609,6 +1609,7 @@ mymain(void)
DO_TEST_FAILURE("net-hostdev-fail",
QEMU_CAPS_DEVICE_VFIO_PCI);
DO_TEST_CAPS_LATEST("net-vdpa");
+ DO_TEST_CAPS_LATEST("net-vdpa-multiqueue");
DO_TEST("hostdev-pci-multifunction",
QEMU_CAPS_KVM,
diff --git a/tests/qemuxml2xmloutdata/net-vdpa-multiqueue.xml b/tests/qemuxml2xmloutdata/net-vdpa-multiqueue.xml
new file mode 100644
index 0000000000..0876d5df62
--- /dev/null
+++ b/tests/qemuxml2xmloutdata/net-vdpa-multiqueue.xml
@@ -0,0 +1,36 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>219136</memory>
+ <currentMemory unit='KiB'>219136</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
+ <controller type='usb' index='0'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+ </controller>
+ <controller type='ide' index='0'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
+ </controller>
+ <controller type='pci' index='0' model='pci-root'/>
+ <interface type='vdpa'>
+ <mac address='52:54:00:95:db:c0'/>
+ <source dev='/dev/vhost-vdpa-0'/>
+ <model type='virtio'/>
+ <driver queues='2'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
+ </interface>
+ <input type='mouse' bus='ps2'/>
+ <input type='keyboard' bus='ps2'/>
+ <audio id='1' type='none'/>
+ <memballoon model='none'/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 052950b86f..2174965784 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -485,6 +485,7 @@ mymain(void)
DO_TEST_NOCAPS("net-coalesce");
DO_TEST_NOCAPS("net-many-models");
DO_TEST("net-vdpa", QEMU_CAPS_NETDEV_VHOST_VDPA);
+ DO_TEST("net-vdpa-multiqueue", QEMU_CAPS_NETDEV_VHOST_VDPA);
DO_TEST_NOCAPS("serial-tcp-tlsx509-chardev");
DO_TEST_NOCAPS("serial-tcp-tlsx509-chardev-notls");
--
2.35.1
2 years, 9 months