[libvirt] [PATCH RESEND v2 0/4] re-introduce <acpi-hotplug-bridge>
by Ani Sinha
Change log:
v2: rebased the patchset. Laine's response is appended at the end.
I am re-introducing the patchset for <acpi-hotplug-bridge> which got
reverted here few months back:
https://www.spinics.net/linux/fedora/libvir/msg224089.html
The reason for the reversal was that there seemed to be some
instability/issues around the use of the qemu commandline which this
patchset tries to support. In particular, some guest operating systems
did not like the way QEMU was trying to disable native hotplug on pcie
root ports. Subsequently, in QEMU 6.2, we have changed our mechanism
using which we disable native hotplug. As I understand, we do not have
any reported issues so far in 6.2 around this area. QEMU will enter a
soft feature freeze in the first week of march in prep for 7.0 release.
Libvirt is also entering a new release cycle phaze. Hence, I am
introducing this patchset early enough in the release cycles so that if
we do see any issues on the qemu side during the rc0, rc1 cycles and if
reversal of this patchset is again required, it can be done in time
before the next libvirt release end of March.
All the patches in this series had been previously reviewed. Some
subsequent fixes were made after my initial patches were pushed. I have
squashed all those fixes and consolidated them into four patches. I have
also updated the documentation to reflect the new changes from the QEMU
side and rebased my changes fixing the tests in the process.
What changed in QEMU post version 6.1 ?
=========================================
We have made basically two major changes in QEMU. First is this change:
(1) commit 211afe5c69b597acf85fdd577eb497f5be1ffbd8
Author: Julia Suvorova <jusual(a)redhat.com>
Date: Fri Nov 12 06:08:56 2021 -0500
hw/i386/acpi-build: Deny control on PCIe Native Hot-plug in _OSC
There are two ways to enable ACPI PCI Hot-plug:
* Disable the Hot-plug Capable bit on PCIe slots.
This was the first approach which led to regression [1-2], as
I/O space for a port is allocated only when it is hot-pluggable,
which is determined by HPC bit.
* Leave the HPC bit on and disable PCIe Native Hot-plug in _OSC
method.
This removes the (future) ability of hot-plugging switches with PCIe
Native hotplug since ACPI PCI Hot-plug only works with cold-plugged
bridges. If the user wants to explicitely use this feature, they can
disable ACPI PCI Hot-plug with:
--global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
Change the bit in _OSC method so that the OS selects ACPI PCI Hot-plug
instead of PCIe Native.
[1] https://gitlab.com/qemu-project/qemu/-/issues/641
[2] https://bugzilla.redhat.com/show_bug.cgi?id=2006409
Signed-off-by: Julia Suvorova <jusual(a)redhat.com>
Signed-off-by: Igor Mammedov <imammedo(a)redhat.com>
Message-Id: <20211112110857.3116853-5-imammedo(a)redhat.com>
Reviewed-by: Ani Sinha <ani(a)anisinha.ca>
Reviewed-by: Michael S. Tsirkin <mst(a)redhat.com>
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
The patch description says it all. Instead of masking out the HPC bit in
pcie slots, we keep them turned on. Instead, we do not advertize native
hotplug capability for PCIE using _OSC control method. See section
6.2.11 in ACPI spec 6.2. At the same time, we turn on ACPI hotplug for
these slots so now the guest OS can select ACPI hotplug instead.
The second change is introduction of a property with which we keep the
existing behavior for pc-q35-6.1 machines. This means HPC bit is masked
and ACPI hotplug is enabled by default for pcie root ports.
The QEMU commit is:
(2) commit c318bef76206c2ecb6016e8e68c4ac6ff9a4c8cb
Author: Julia Suvorova <jusual(a)redhat.com>
Date: Fri Nov 12 06:08:54 2021 -0500
hw/acpi/ich9: Add compat prop to keep HPC bit set for 6.1 machine type
To solve issues [1-2] the Hot Plug Capable bit in PCIe Slots will be
turned on, while the switch to ACPI Hot-plug will be done in the
DSDT table.
Introducing 'x-keep-native-hpc' property disables the HPC bit only
in 6.1 and as a result keeps the forced 'reserve-io' on
pcie-root-ports in 6.1 too.
[1] https://gitlab.com/qemu-project/qemu/-/issues/641
[2] https://bugzilla.redhat.com/show_bug.cgi?id=2006409
Signed-off-by: Julia Suvorova <jusual(a)redhat.com>
Signed-off-by: Igor Mammedov <imammedo(a)redhat.com>
Message-Id: <20211112110857.3116853-3-imammedo(a)redhat.com>
Reviewed-by: Michael S. Tsirkin <mst(a)redhat.com>
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
Lastly, as a related side note, because from QEMU 6.2 onwards, we do not
mask out HPC bit in PCIE, the work done by this patch is no longer
needed:
(3) commit e2a6290aab578b2170c1f5909fa556385dc0d820
Author: Marcel Apfelbaum <marcel.apfelbaum(a)gmail.com>
Date: Mon Aug 2 12:00:57 2021 +0300
hw/pcie-root-port: Fix hotplug for PCI devices requiring IO
Q35 has now ACPI hotplug enabled by default for PCI(e) devices.
As opposed to native PCIe hotplug, guests like Fedora 34
will not assign IO range to pcie-root-ports not supporting
native hotplug, resulting into a regression.
Reproduce by:
qemu-bin -M q35 -device pcie-root-port,id=p1 -monitor stdio
device_add e1000,bus=p1
In the Guest OS the respective pcie-root-port will have the IO range
disabled.
Fix it by setting the "reserve-io" hint capability of the
pcie-root-ports so the firmware will allocate the IO range instead.
Acked-by: Igor Mammedov <imammedo(a)redhat.com>
Signed-off-by: Marcel Apfelbaum <marcel(a)redhat.com>
Message-Id: <20210802090057.1709775-1-marcel(a)redhat.com>
Reviewed-by: Michael S. Tsirkin <mst(a)redhat.com>
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
This is what commit (2) alludes to. In pc-q35-6.1 machines we do need
patch (3) since we mask out HPC bit from pcie ports.
I know this is convoluted mess. In fairness I am trying all I can in my
spare time to help from the QEMU side. I am determined to see this
patchset through into libvirt.
Thanks
Laine's comments ...
My memory isn't completely clear, but I think there was also the issue
that the option claims to enable ACPI hotplug when set to on, but
instead what it actually does (in the Q35 case at least) is to enable
native PCI hotplug when set to off (without actually disabling ACPI
hotplug) and disable native PCI hotplug when set to on, or something
like that. This ends up leaving it up to the guest OS to decide which
type of hotplug to use, meaning its decision could override what's in
the libvirt config, thus confusing everyone. Again, I probably have the
details mixed up, but it was something like this.
I asked mst about this this morning, and he suggested something that
you've already done - Cc'ing the series to qemu-devel and the relevant
maintainers so we can have a discussion with all involved parties about
their opinions on whether we really should expose this existing option
in libvirt, or if we should instead have two new options that are more
orthogonal about enabling/disabling the two types of hotplug, so that
libvirt config can more accurately represent what is being presented to
the guest rather than a "best guess" of what we think the guest is going
to do with what is presented.
(Michael did also say that, with the current flurry of bug reports for
the QEMU rc's, this discusion may not happen until closer to release
when the bug reports die down. I know this doesn't mesh with your desire
to "push now to allow for testing" (which in general would be a good
thing if we were certain that we wanted the option like this and were
just expecting some minor bugs that could be fixed), but my opinion is
that 1) it's possible for anyone interested to test the functionality
using <qemu:commandline>, and 2) we should avoid turning libvirt git
into a revolving door of experiments. The only practical difference
between using <qemu:commandline> and having a dedicated option is that
the use of <qemu:commandline> causes the domain to be tainted, and the
XML is a bit more complicated. But since the people we're talking about
here will already have built their own libvirt binaries, the tainted
status of any guests is irrelevant and the extra complexity of using
<qemu:commandline> is probably trivial to them :-).
Ani Sinha (4):
qemu: capablities: detect acpi-pci-hotplug-with-bridge-support
conf: introduce support for acpi-bridge-hotplug feature
qemu: command: add support for acpi-bridge-hotplug feature
NEWS: document new acpi pci hotplug config option
NEWS.rst | 8 ++
docs/formatdomain.rst | 32 +++++++
docs/schemas/domaincommon.rng | 15 ++++
src/conf/domain_conf.c | 89 ++++++++++++++++++-
src/conf/domain_conf.h | 9 ++
src/qemu/qemu_capabilities.c | 4 +
src/qemu/qemu_capabilities.h | 3 +
src/qemu/qemu_command.c | 19 ++++
src/qemu/qemu_validate.c | 42 +++++++++
.../caps_6.1.0.x86_64.xml | 1 +
.../caps_6.2.0.x86_64.xml | 1 +
.../caps_7.0.0.x86_64.xml | 1 +
...-hotplug-bridge-disable.aarch64-latest.err | 1 +
.../aarch64-acpi-hotplug-bridge-disable.xml | 13 +++
...-hotplug-bridge-disable.x86_64-latest.args | 35 ++++++++
.../pc-i440fx-acpi-hotplug-bridge-disable.xml | 36 ++++++++
.../pc-i440fx-acpi-hotplug-bridge-enable.xml | 36 ++++++++
...pi-hotplug-bridge-disable.x86_64-6.0.0.err | 1 +
...-hotplug-bridge-disable.x86_64-latest.args | 38 ++++++++
.../q35-acpi-hotplug-bridge-disable.xml | 53 +++++++++++
.../q35-acpi-hotplug-bridge-enable.xml | 53 +++++++++++
tests/qemuxml2argvtest.c | 7 ++
...i-hotplug-bridge-disable.x86_64-latest.xml | 1 +
...pi-hotplug-bridge-enable.x86_64-latest.xml | 1 +
...i-hotplug-bridge-disable.x86_64-latest.xml | 1 +
...pi-hotplug-bridge-enable.x86_64-latest.xml | 1 +
tests/qemuxml2xmltest.c | 4 +
27 files changed, 504 insertions(+), 1 deletion(-)
create mode 100644 tests/qemuxml2argvdata/aarch64-acpi-hotplug-bridge-disable.aarch64-latest.err
create mode 100644 tests/qemuxml2argvdata/aarch64-acpi-hotplug-bridge-disable.xml
create mode 100644 tests/qemuxml2argvdata/pc-i440fx-acpi-hotplug-bridge-disable.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/pc-i440fx-acpi-hotplug-bridge-disable.xml
create mode 100644 tests/qemuxml2argvdata/pc-i440fx-acpi-hotplug-bridge-enable.xml
create mode 100644 tests/qemuxml2argvdata/q35-acpi-hotplug-bridge-disable.x86_64-6.0.0.err
create mode 100644 tests/qemuxml2argvdata/q35-acpi-hotplug-bridge-disable.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/q35-acpi-hotplug-bridge-disable.xml
create mode 100644 tests/qemuxml2argvdata/q35-acpi-hotplug-bridge-enable.xml
create mode 120000 tests/qemuxml2xmloutdata/pc-i440fx-acpi-hotplug-bridge-disable.x86_64-latest.xml
create mode 120000 tests/qemuxml2xmloutdata/pc-i440fx-acpi-hotplug-bridge-enable.x86_64-latest.xml
create mode 120000 tests/qemuxml2xmloutdata/q35-acpi-hotplug-bridge-disable.x86_64-latest.xml
create mode 120000 tests/qemuxml2xmloutdata/q35-acpi-hotplug-bridge-enable.x86_64-latest.xml
--
2.25.1
2 years, 7 months
[libvirt PATCH v2] iohelper: some refactoring
by Claudio Fontana
while doing research with alternative implementations of runIO,
it seemed necessary to do some refactoring, in order to separate
parameter setting from the actual copy, so that alternative
copy methods can be researched and hopefully eventually implemented.
No functional changes are expected.
Signed-off-by: Claudio Fontana <cfontana(a)suse.de>
---
src/util/iohelper.c | 197 +++++++++++++++++++++++++++-----------------
1 file changed, 122 insertions(+), 75 deletions(-)
changes v1 -> v2:
* fix missing write
diff --git a/src/util/iohelper.c b/src/util/iohelper.c
index 2c91bf4f93..ca569b5ae9 100644
--- a/src/util/iohelper.c
+++ b/src/util/iohelper.c
@@ -45,21 +45,38 @@
# define O_DIRECT 0
#endif
-static int
-runIO(const char *path, int fd, int oflags)
+struct runIOParams {
+ bool isBlockDev;
+ bool isDirect;
+ bool isWrite;
+ int fdin;
+ const char *fdinname;
+ int fdout;
+ const char *fdoutname;
+};
+
+/* runIOCopy: execute the IO copy based on the passed parameters */
+/**
+ * runIOCopy:
+ * @p: the IO parameters
+ *
+ * Execute the copy based on the passed parameters.
+ *
+ * Returns: size transfered, or < 0 on error.
+ * Errors: -1 = read/write error
+ * -2 = read error
+ * -3 = write error
+ * -4 = truncate error
+ */
+
+static off_t
+runIOCopy(const struct runIOParams p)
{
g_autofree void *base = NULL; /* Location to be freed */
char *buf = NULL; /* Aligned location within base */
size_t buflen = 1024*1024;
intptr_t alignMask = 64*1024 - 1;
- int ret = -1;
- int fdin, fdout;
- const char *fdinname, *fdoutname;
- unsigned long long total = 0;
- bool direct = O_DIRECT && ((oflags & O_DIRECT) != 0);
- off_t end = 0;
- struct stat sb;
- bool isBlockDev = false;
+ off_t total = 0;
#if WITH_POSIX_MEMALIGN
if (posix_memalign(&base, alignMask + 1, buflen))
@@ -71,50 +88,6 @@ runIO(const char *path, int fd, int oflags)
buf = (char *) (((intptr_t) base + alignMask) & ~alignMask);
#endif
- if (fstat(fd, &sb) < 0) {
- virReportSystemError(errno,
- _("Unable to access file descriptor %d path %s"),
- fd, path);
- goto cleanup;
- }
- isBlockDev = S_ISBLK(sb.st_mode);
-
- switch (oflags & O_ACCMODE) {
- case O_RDONLY:
- fdin = fd;
- fdinname = path;
- fdout = STDOUT_FILENO;
- fdoutname = "stdout";
- /* To make the implementation simpler, we give up on any
- * attempt to use O_DIRECT in a non-trivial manner. */
- if (!isBlockDev && direct && ((end = lseek(fd, 0, SEEK_CUR)) != 0)) {
- virReportSystemError(end < 0 ? errno : EINVAL, "%s",
- _("O_DIRECT read needs entire seekable file"));
- goto cleanup;
- }
- break;
- case O_WRONLY:
- fdin = STDIN_FILENO;
- fdinname = "stdin";
- fdout = fd;
- fdoutname = path;
- /* To make the implementation simpler, we give up on any
- * attempt to use O_DIRECT in a non-trivial manner. */
- if (!isBlockDev && direct && (end = lseek(fd, 0, SEEK_END)) != 0) {
- virReportSystemError(end < 0 ? errno : EINVAL, "%s",
- _("O_DIRECT write needs empty seekable file"));
- goto cleanup;
- }
- break;
-
- case O_RDWR:
- default:
- virReportSystemError(EINVAL,
- _("Unable to process file with flags %d"),
- (oflags & O_ACCMODE));
- goto cleanup;
- }
-
while (1) {
ssize_t got;
@@ -124,53 +97,127 @@ runIO(const char *path, int fd, int oflags)
* writes will be aligned.
* In other cases using saferead reduces number of syscalls.
*/
- if (fdin == fd && direct) {
- if ((got = read(fdin, buf, buflen)) < 0 &&
+ if (!p.isWrite && p.isDirect) {
+ if ((got = read(p.fdin, buf, buflen)) < 0 &&
errno == EINTR)
continue;
} else {
- got = saferead(fdin, buf, buflen);
- }
-
- if (got < 0) {
- virReportSystemError(errno, _("Unable to read %s"), fdinname);
- goto cleanup;
+ got = saferead(p.fdin, buf, buflen);
}
+ if (got < 0)
+ return -2;
if (got == 0)
break;
total += got;
/* handle last write size align in direct case */
- if (got < buflen && direct && fdout == fd) {
+ if (got < buflen && p.isDirect && p.isWrite) {
ssize_t aligned_got = (got + alignMask) & ~alignMask;
memset(buf + got, 0, aligned_got - got);
- if (safewrite(fdout, buf, aligned_got) < 0) {
- virReportSystemError(errno, _("Unable to write %s"), fdoutname);
- goto cleanup;
+ if (safewrite(p.fdout, buf, aligned_got) < 0) {
+ return -3;
}
-
- if (!isBlockDev && ftruncate(fd, total) < 0) {
- virReportSystemError(errno, _("Unable to truncate %s"), fdoutname);
- goto cleanup;
+ if (!p.isBlockDev && ftruncate(p.fdout, total) < 0) {
+ return -4;
}
-
break;
}
- if (safewrite(fdout, buf, got) < 0) {
- virReportSystemError(errno, _("Unable to write %s"), fdoutname);
+ if (safewrite(p.fdout, buf, got) < 0) {
+ return -3;
+ }
+ }
+ return total;
+}
+
+static int
+runIO(const char *path, int fd, int oflags)
+{
+ int ret = -1;
+ off_t total = 0;
+ struct stat sb;
+ struct runIOParams p;
+
+ if (fstat(fd, &sb) < 0) {
+ virReportSystemError(errno,
+ _("Unable to access file descriptor %d path %s"),
+ fd, path);
+ goto cleanup;
+ }
+ p.isBlockDev = S_ISBLK(sb.st_mode);
+ p.isDirect = O_DIRECT && (oflags & O_DIRECT);
+
+ switch (oflags & O_ACCMODE) {
+ case O_RDONLY:
+ p.isWrite = false;
+ p.fdin = fd;
+ p.fdinname = path;
+ p.fdout = STDOUT_FILENO;
+ p.fdoutname = "stdout";
+ break;
+ case O_WRONLY:
+ p.isWrite = true;
+ p.fdin = STDIN_FILENO;
+ p.fdinname = "stdin";
+ p.fdout = fd;
+ p.fdoutname = path;
+ break;
+ case O_RDWR:
+ default:
+ virReportSystemError(EINVAL,
+ _("Unable to process file with flags %d"),
+ (oflags & O_ACCMODE));
+ goto cleanup;
+ }
+ /* To make the implementation simpler, we give up on any
+ * attempt to use O_DIRECT in a non-trivial manner. */
+ if (!p.isBlockDev && p.isDirect) {
+ off_t end;
+ if (p.isWrite) {
+ if ((end = lseek(fd, 0, SEEK_END)) != 0) {
+ virReportSystemError(end < 0 ? errno : EINVAL, "%s",
+ _("O_DIRECT write needs empty seekable file"));
+ goto cleanup;
+ }
+ } else if ((end = lseek(fd, 0, SEEK_CUR)) != 0) {
+ virReportSystemError(end < 0 ? errno : EINVAL, "%s",
+ _("O_DIRECT read needs entire seekable file"));
goto cleanup;
}
}
+ total = runIOCopy(p);
+
+ if (total < 0) {
+ switch (total) {
+ case -1:
+ virReportSystemError(errno, _("Unable to move data from %s to %s"),
+ p.fdinname, p.fdoutname);
+ break;
+ case -2:
+ virReportSystemError(errno, _("Unable to read %s"), p.fdinname);
+ break;
+ case -3:
+ virReportSystemError(errno, _("Unable to write %s"), p.fdoutname);
+ break;
+ case -4:
+ virReportSystemError(errno, _("Unable to truncate %s"), p.fdoutname);
+ break;
+ default:
+ virReportError(VIR_ERR_INTERNAL_ERROR, _("Unknown runIOCopy error %ld"), total);
+ break;
+ }
+ goto cleanup;
+ }
+
/* Ensure all data is written */
- if (virFileDataSync(fdout) < 0) {
+ if (virFileDataSync(p.fdout) < 0) {
if (errno != EINVAL && errno != EROFS) {
/* fdatasync() may fail on some special FDs, e.g. pipes */
- virReportSystemError(errno, _("unable to fsync %s"), fdoutname);
+ virReportSystemError(errno, _("unable to fsync %s"), p.fdoutname);
goto cleanup;
}
}
--
2.35.1
2 years, 7 months
[RFC PATCH v1 0/5] Add virDomainGetSevAttestationReport API
by Tyler Fanelli
This an RFC discussing a new API, virDomainGetSevAttestationReport (along with a
virsh command "domgetsevreport"), with initial QEMU support via the
"query-sev-attestation-report" QAPI mechanism. "query-sev-attestation-report" is
supplied a base64-encoded 16 byte "mnonce" string as input, with a purpose of
being embedded into the attestation report to provide protection.
My main point of concern is the design/communication of the virTypedParameterPtr
exchanged between the client and libvirtd and how they interact together, as I
have seen no other API follow the method I used. Namely, the same
virTypedParameterPtr is used for both input _AND_ output. The same
virTypedParameterPtr containing the original mnonce string inputted to the API is
also used to contain the attestation report upon being returned from the API.
This contrasts with much of the APIs I've noticed, which use a
virTypedParameterPtr for either input or output, but not both.
This patch is not final, as I still would like some human-readable outputting
and storage of the attestation report.
Looking for thoughts on the design of this API, as well as suggested
improvements.
Tyler Fanelli (5):
libvirt: Introduce virDomainGetSevAttestationReport public API
remote: add RPC support for the virDomainGetSevAttestationReport API
qemu_capabilities: Introduce QEMU_CAPS_SEV_GET_ATTESTATION_REPORT
qemu: Implement the virDomainGetSevAttestationReport API
tools: add domgetsevreport virsh command
docs/manpages/virsh.rst | 18 ++++
include/libvirt/libvirt-domain.h | 22 +++++
src/driver-hypervisor.h | 7 ++
src/libvirt-domain.c | 63 ++++++++++++++
src/libvirt_public.syms | 4 +
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_driver.c | 86 +++++++++++++++++++
src/qemu/qemu_monitor.c | 11 +++
src/qemu/qemu_monitor.h | 5 ++
src/qemu/qemu_monitor_json.c | 40 +++++++++
src/qemu/qemu_monitor_json.h | 5 ++
src/remote/remote_daemon_dispatch.c | 44 ++++++++++
src/remote/remote_driver.c | 55 ++++++++++++
src/remote/remote_protocol.x | 21 ++++-
src/remote_protocol-structs | 12 +++
.../caps_6.1.0.x86_64.xml | 1 +
.../caps_6.2.0.x86_64.xml | 1 +
.../caps_7.0.0.x86_64.xml | 1 +
tools/virsh-domain.c | 68 +++++++++++++++
20 files changed, 466 insertions(+), 1 deletion(-)
--
2.34.1
2 years, 7 months
[libvirt PATCH 00/10] Cleanup and test more firmware handling scenarios
by Daniel P. Berrangé
There are a mind bending number of possible ways to configure the
firmware with/without NVRAM. Only a small portion are tested and
many error scenarios are silently ignored.
This series attempts to get coverage of every possible XML config
scenario and report explicit errors in all invalid configs.
There is an open question on patch 4. Essentially the use of NVRAM
combined with writable executable feels like an accidental feature
in libvirt that hasn't really been thought through. I'd like to
better define expectations here but there are several possible
strategies and I'm undecided which is best.
Daniel P. Berrangé (10):
qemu: fix bad indentation for qemuDomainNVRAMPathFormat
tests: add explicit test case for pflash loader lacking path
tests: add test case for NVRAM with template
conf: validate NVRAM template usage with R/W loader binary
tests: don't permit NVRAM path when using firmware auto-select
qemu: inline code for filling in per-VM NVRAM path
conf: rename struct field for NVRAM template
conf: switch nvram parsing to use XML node / property helpers
conf: move nvram parsing into virDomainLoaderDefParseXML
conf: stop ignoring <loader>/<nvram> with firmware auto-select
src/conf/domain_conf.c | 121 +++++++++++-------
src/conf/domain_conf.h | 2 +-
src/qemu/qemu_domain.c | 18 +--
src/qemu/qemu_domain.h | 8 +-
src/qemu/qemu_firmware.c | 13 +-
src/qemu/qemu_process.c | 4 +-
tests/qemuxml2argvdata/bios-nvram-no-path.err | 1 +
tests/qemuxml2argvdata/bios-nvram-no-path.xml | 19 +++
...-nvram-rw-template-vars.x86_64-latest.args | 41 ++++++
.../bios-nvram-rw-template-vars.xml | 36 ++++++
.../bios-nvram-rw-template.err | 1 +
.../bios-nvram-rw-template.xml | 36 ++++++
.../bios-nvram-rw-vars.x86_64-latest.args | 41 ++++++
tests/qemuxml2argvdata/bios-nvram-rw-vars.xml | 36 ++++++
.../bios-nvram-template.x86_64-latest.args | 37 ++++++
.../qemuxml2argvdata/bios-nvram-template.xml | 21 +++
tests/qemuxml2argvdata/os-firmware-bios.xml | 1 -
.../os-firmware-efi-bad-loader-path.err | 1 +
.../os-firmware-efi-bad-loader-path.xml | 67 ++++++++++
.../os-firmware-efi-bad-loader-type.err | 1 +
.../os-firmware-efi-bad-loader-type.xml | 67 ++++++++++
.../os-firmware-efi-bad-nvram-path.err | 1 +
.../os-firmware-efi-bad-nvram-path.xml | 68 ++++++++++
.../os-firmware-efi-bad-nvram-template.err | 1 +
.../os-firmware-efi-bad-nvram-template.xml | 68 ++++++++++
.../os-firmware-efi-secboot.xml | 1 -
tests/qemuxml2argvdata/os-firmware-efi.xml | 1 -
tests/qemuxml2argvtest.c | 9 ++
.../os-firmware-bios.x86_64-latest.xml | 1 -
.../os-firmware-efi-secboot.x86_64-latest.xml | 1 -
.../os-firmware-efi.x86_64-latest.xml | 1 -
31 files changed, 647 insertions(+), 77 deletions(-)
create mode 100644 tests/qemuxml2argvdata/bios-nvram-no-path.err
create mode 100644 tests/qemuxml2argvdata/bios-nvram-no-path.xml
create mode 100644 tests/qemuxml2argvdata/bios-nvram-rw-template-vars.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/bios-nvram-rw-template-vars.xml
create mode 100644 tests/qemuxml2argvdata/bios-nvram-rw-template.err
create mode 100644 tests/qemuxml2argvdata/bios-nvram-rw-template.xml
create mode 100644 tests/qemuxml2argvdata/bios-nvram-rw-vars.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/bios-nvram-rw-vars.xml
create mode 100644 tests/qemuxml2argvdata/bios-nvram-template.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/bios-nvram-template.xml
create mode 100644 tests/qemuxml2argvdata/os-firmware-efi-bad-loader-path.err
create mode 100644 tests/qemuxml2argvdata/os-firmware-efi-bad-loader-path.xml
create mode 100644 tests/qemuxml2argvdata/os-firmware-efi-bad-loader-type.err
create mode 100644 tests/qemuxml2argvdata/os-firmware-efi-bad-loader-type.xml
create mode 100644 tests/qemuxml2argvdata/os-firmware-efi-bad-nvram-path.err
create mode 100644 tests/qemuxml2argvdata/os-firmware-efi-bad-nvram-path.xml
create mode 100644 tests/qemuxml2argvdata/os-firmware-efi-bad-nvram-template.err
create mode 100644 tests/qemuxml2argvdata/os-firmware-efi-bad-nvram-template.xml
--
2.34.1
2 years, 7 months
[libvirt RFC] virFile: new VIR_FILE_WRAPPER_BIG_PIPE to improve performance
by Claudio Fontana
the first user is the qemu driver,
virsh save/resume would slow to a crawl with a default pipe size (64k).
This improves the situation by 400%.
Going through io_helper still seems to incur in some penalty (~15%-ish)
compared with direct qemu migration to a nc socket to a file.
Signed-off-by: Claudio Fontana <cfontana(a)suse.de>
---
src/qemu/qemu_driver.c | 6 +++---
src/qemu/qemu_saveimage.c | 11 ++++++-----
src/util/virfile.c | 12 ++++++++++++
src/util/virfile.h | 1 +
4 files changed, 22 insertions(+), 8 deletions(-)
Hello, I initially thought this to be a qemu performance issue,
so you can find the discussion about this in qemu-devel:
"Re: bad virsh save /dev/null performance (600 MiB/s max)"
https://lists.gnu.org/archive/html/qemu-devel/2022-03/msg03142.html
RFC since need to validate idea, and it is only lightly tested:
save - about 400% benefit in throughput, getting around 20 Gbps to /dev/null,
and around 13 Gbps to a ramdisk.
By comparison, direct qemu migration to a nc socket is around 24Gbps.
restore - not tested, _should_ also benefit in the "bypass_cache" case
coredump - not tested, _should_ also benefit like for save
Thanks for your comments and review,
Claudio
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index c1b3bd8536..be248c1e92 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -3044,7 +3044,7 @@ doCoreDump(virQEMUDriver *driver,
virFileWrapperFd *wrapperFd = NULL;
int directFlag = 0;
bool needUnlink = false;
- unsigned int flags = VIR_FILE_WRAPPER_NON_BLOCKING;
+ unsigned int wrapperFlags = VIR_FILE_WRAPPER_NON_BLOCKING | VIR_FILE_WRAPPER_BIG_PIPE;
const char *memory_dump_format = NULL;
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
g_autoptr(virCommand) compressor = NULL;
@@ -3059,7 +3059,7 @@ doCoreDump(virQEMUDriver *driver,
/* Create an empty file with appropriate ownership. */
if (dump_flags & VIR_DUMP_BYPASS_CACHE) {
- flags |= VIR_FILE_WRAPPER_BYPASS_CACHE;
+ wrapperFlags |= VIR_FILE_WRAPPER_BYPASS_CACHE;
directFlag = virFileDirectFdFlag();
if (directFlag < 0) {
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
@@ -3072,7 +3072,7 @@ doCoreDump(virQEMUDriver *driver,
&needUnlink)) < 0)
goto cleanup;
- if (!(wrapperFd = virFileWrapperFdNew(&fd, path, flags)))
+ if (!(wrapperFd = virFileWrapperFdNew(&fd, path, wrapperFlags)))
goto cleanup;
if (dump_flags & VIR_DUMP_MEMORY_ONLY) {
diff --git a/src/qemu/qemu_saveimage.c b/src/qemu/qemu_saveimage.c
index c0139041eb..1b522a1542 100644
--- a/src/qemu/qemu_saveimage.c
+++ b/src/qemu/qemu_saveimage.c
@@ -267,7 +267,7 @@ qemuSaveImageCreate(virQEMUDriver *driver,
int fd = -1;
int directFlag = 0;
virFileWrapperFd *wrapperFd = NULL;
- unsigned int wrapperFlags = VIR_FILE_WRAPPER_NON_BLOCKING;
+ unsigned int wrapperFlags = VIR_FILE_WRAPPER_NON_BLOCKING | VIR_FILE_WRAPPER_BIG_PIPE;
/* Obtain the file handle. */
if ((flags & VIR_DOMAIN_SAVE_BYPASS_CACHE)) {
@@ -463,10 +463,11 @@ qemuSaveImageOpen(virQEMUDriver *driver,
if ((fd = qemuDomainOpenFile(cfg, NULL, path, oflags, NULL)) < 0)
return -1;
- if (bypass_cache &&
- !(*wrapperFd = virFileWrapperFdNew(&fd, path,
- VIR_FILE_WRAPPER_BYPASS_CACHE)))
- return -1;
+ if (bypass_cache) {
+ unsigned int wrapperFlags = VIR_FILE_WRAPPER_BYPASS_CACHE | VIR_FILE_WRAPPER_BIG_PIPE;
+ if (!(*wrapperFd = virFileWrapperFdNew(&fd, path, wrapperFlags)))
+ return -1;
+ }
data = g_new0(virQEMUSaveData, 1);
diff --git a/src/util/virfile.c b/src/util/virfile.c
index a04f888e06..fdacd17890 100644
--- a/src/util/virfile.c
+++ b/src/util/virfile.c
@@ -282,6 +282,18 @@ virFileWrapperFdNew(int *fd, const char *name, unsigned int flags)
ret->cmd = virCommandNewArgList(iohelper_path, name, NULL);
+ if (flags & VIR_FILE_WRAPPER_BIG_PIPE) {
+ /*
+ * virsh save/resume would slow to a crawl with a default pipe size (usually 64k).
+ * This improves the situation by 400%, although going through io_helper still incurs
+ * in a performance penalty compared with a direct qemu migration to a socket.
+ */
+ int pipe_sz, rv = virFileReadValueInt(&pipe_sz, "/proc/sys/fs/pipe-max-size");
+ if (rv != 0) {
+ pipe_sz = 1024 * 1024; /* common default for pipe-max-size */
+ }
+ fcntl(pipefd[output ? 0 : 1], F_SETPIPE_SZ, pipe_sz);
+ }
if (output) {
virCommandSetInputFD(ret->cmd, pipefd[0]);
virCommandSetOutputFD(ret->cmd, fd);
diff --git a/src/util/virfile.h b/src/util/virfile.h
index b04386f6e6..8383c4b069 100644
--- a/src/util/virfile.h
+++ b/src/util/virfile.h
@@ -107,6 +107,7 @@ int virFileDirectFdFlag(void);
typedef enum {
VIR_FILE_WRAPPER_BYPASS_CACHE = (1 << 0),
VIR_FILE_WRAPPER_NON_BLOCKING = (1 << 1),
+ VIR_FILE_WRAPPER_BIG_PIPE = (1 << 2),
} virFileWrapperFdFlags;
virFileWrapperFd *virFileWrapperFdNew(int *fd,
--
2.26.2
2 years, 7 months
[PATCH for 8.3.0 00/17] qemu: Stop supporting Ubuntu 1804-ancient qemus
by Peter Krempa
As of April 23 2022, Ubuntu 20.04 will be out for two years, which per
our platform support policy means we no longer have to support
Ubuntu 18.04.
The supported platforms thus will have the following qemu versions:
Debian 10/Stable: 3.1
OpenSUSE Leap 15.3: 5.2
Ubuntu 20.04: 4.2
RHEL/Centos 8.4: 4.2
This patchset is targetted to be pushed after the release beginning of
April is out so that it's part of the may release.
Changes to the RFC version I've posted earlier:
- cleanup patches were pushed
- added commit removing Ubuntu 1804 from the CI
- added removal of QEMU_CAPS_STORAGE_WERROR/QEMU_CAPS_USB_STORAGE_WERROR
(noticed while dealing with capability update).
- removed commit message bit mentioning Debian backports
- removed patch dropping monitor waiting code (Michal's patches may
change the expectations. I'll re-visit that commit after this is
pushed).
Note that the patches posted to the list are heavily trimmed, fetch
the full version at:
git fetch https://gitlab.com/pipo.sk/libvirt.git qemu-deprecation
Peter Krempa (17):
ci: Drop Ubuntu 1804
qemuxml2agvtest: Retire tests based on qemu-2.11
qemuxml2agvtest: Retire tests based on qemu-2.12
qemuxml2agvtest: Retire tests based on qemu-3.0
tests: qemucapabilities: Remove qemu-2.11 test data
tests: qemucapabilities: Remove qemu-2.12 test data
tests: qemucapabilities: Remove qemu-3.0 test data
qemu: Formally deprecate support for qemu < 3.1
qemu: capabilities: Remove tautological version checks
qemu: capabilities: Remove probing of QEMU_CAPS_NUMA via
'query-command-line-options'
qemu: Always assume QEMU_CAPS_CHARDEV_FD_PASS_COMMANDLINE
qemu: capabilities: Retire QEMU_CAPS_CHARDEV_FD_PASS_COMMANDLINE
qemu: capabilities: Retire
QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_MIGRATABLE
qemu: command: Always assume QEMU_CAPS_OVERCOMMIT
qemu: capabilities: Retire QEMU_CAPS_OVERCOMMIT
qemu: Always assume QEMU_CAPS_STORAGE_WERROR
qemu: capabilities: Retire QEMU_CAPS_STORAGE_WERROR and
QEMU_CAPS_USB_STORAGE_WERROR
ci/containers/ubuntu-1804.Dockerfile | 108 -
ci/gitlab.yml | 16 -
ci/manifest.yml | 2 -
docs/drvqemu.rst | 6 +-
src/qemu/qemu_capabilities.c | 41 +-
src/qemu/qemu_capabilities.h | 10 +-
src/qemu/qemu_command.c | 44 +-
src/qemu/qemu_command.h | 3 +-
src/qemu/qemu_hotplug.c | 3 +-
src/qemu/qemu_process.c | 14 +-
.../caps_2.11.0.s390x.replies | 18237 ------------
.../caps_2.11.0.s390x.xml | 2593 --
.../caps_2.11.0.x86_64.replies | 19525 -------------
.../caps_2.11.0.x86_64.xml | 953 -
.../caps_2.12.0.aarch64.replies | 19577 -------------
.../caps_2.12.0.aarch64.xml | 329 -
.../caps_2.12.0.ppc64.replies | 23072 ---------------
.../caps_2.12.0.ppc64.xml | 1069 -
.../caps_2.12.0.s390x.replies | 19937 -------------
.../caps_2.12.0.s390x.xml | 2466 --
.../caps_2.12.0.x86_64.replies | 23003 ---------------
.../caps_2.12.0.x86_64.xml | 1263 -
.../caps_3.0.0.ppc64.replies | 23945 ----------------
.../qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 1073 -
.../caps_3.0.0.riscv32.replies | 14919 ----------
.../caps_3.0.0.riscv32.xml | 87 -
.../caps_3.0.0.riscv64.replies | 14919 ----------
.../caps_3.0.0.riscv64.xml | 87 -
.../caps_3.0.0.s390x.replies | 20683 -------------
.../qemucapabilitiesdata/caps_3.0.0.s390x.xml | 2677 --
.../caps_3.0.0.x86_64.replies | 23719 ---------------
.../caps_3.0.0.x86_64.xml | 1206 -
.../qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 4 -
.../caps_3.1.0.x86_64.xml | 5 -
.../caps_4.0.0.aarch64.xml | 4 -
.../qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 4 -
.../caps_4.0.0.riscv32.xml | 4 -
.../caps_4.0.0.riscv64.xml | 4 -
.../qemucapabilitiesdata/caps_4.0.0.s390x.xml | 3 -
.../caps_4.0.0.x86_64.xml | 5 -
.../caps_4.1.0.x86_64.xml | 5 -
.../caps_4.2.0.aarch64.xml | 4 -
.../qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 4 -
.../qemucapabilitiesdata/caps_4.2.0.s390x.xml | 3 -
.../caps_4.2.0.x86_64.xml | 5 -
.../caps_5.0.0.aarch64.xml | 4 -
.../qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 4 -
.../caps_5.0.0.riscv64.xml | 4 -
.../caps_5.0.0.x86_64.xml | 5 -
.../qemucapabilitiesdata/caps_5.1.0.sparc.xml | 3 -
.../caps_5.1.0.x86_64.xml | 5 -
.../caps_5.2.0.aarch64.xml | 4 -
.../qemucapabilitiesdata/caps_5.2.0.ppc64.xml | 4 -
.../caps_5.2.0.riscv64.xml | 4 -
.../qemucapabilitiesdata/caps_5.2.0.s390x.xml | 3 -
.../caps_5.2.0.x86_64.xml | 5 -
.../caps_6.0.0.aarch64.xml | 4 -
.../qemucapabilitiesdata/caps_6.0.0.s390x.xml | 3 -
.../caps_6.0.0.x86_64.xml | 5 -
.../caps_6.1.0.x86_64.xml | 5 -
.../caps_6.2.0.aarch64.xml | 4 -
.../qemucapabilitiesdata/caps_6.2.0.ppc64.xml | 4 -
.../caps_6.2.0.x86_64.xml | 5 -
.../qemucapabilitiesdata/caps_7.0.0.ppc64.xml | 4 -
.../caps_7.0.0.x86_64.xml | 5 -
tests/qemuhotplugtest.c | 1 -
.../aarch64-aavmf-virtio-mmio.args | 4 +-
tests/qemuxml2argvdata/aarch64-acpi-uefi.args | 4 +-
.../aarch64-cpu-passthrough.args | 4 +-
tests/qemuxml2argvdata/aarch64-gic-host.args | 4 +-
.../aarch64-gic-none-tcg.args | 4 +-
tests/qemuxml2argvdata/aarch64-gic-v2.args | 4 +-
tests/qemuxml2argvdata/aarch64-gic-v3.args | 4 +-
.../aarch64-kvm-32-on-64.args | 4 +-
.../aarch64-noacpi-nouefi.args | 4 +-
.../qemuxml2argvdata/aarch64-noacpi-uefi.args | 4 +-
.../qemuxml2argvdata/aarch64-pci-serial.args | 4 +-
.../aarch64-traditional-pci.args | 4 +-
.../aarch64-usb-controller-nec-xhci.args | 4 +-
.../aarch64-usb-controller-qemu-xhci.args | 4 +-
.../aarch64-video-default.args | 4 +-
.../aarch64-video-virtio-gpu-pci.args | 4 +-
.../aarch64-virt-2.6-virtio-pci-default.args | 4 +-
.../aarch64-virt-default-nic.args | 4 +-
.../qemuxml2argvdata/aarch64-virt-virtio.args | 4 +-
.../aarch64-virtio-pci-default.args | 4 +-
.../aarch64-virtio-pci-manual-addresses.args | 4 +-
tests/qemuxml2argvdata/acpi-table.args | 4 +-
.../arm-vexpressa9-basic.args | 4 +-
.../arm-vexpressa9-nodevs.args | 4 +-
.../arm-vexpressa9-virtio.args | 4 +-
tests/qemuxml2argvdata/arm-virt-virtio.args | 4 +-
tests/qemuxml2argvdata/audio-default-sdl.args | 4 +-
.../qemuxml2argvdata/audio-default-spice.args | 4 +-
tests/qemuxml2argvdata/audio-default-vnc.args | 4 +-
tests/qemuxml2argvdata/autoindex.args | 4 +-
.../qemuxml2argvdata/balloon-ccw-deflate.args | 4 +-
.../qemuxml2argvdata/balloon-device-auto.args | 4 +-
.../balloon-device-deflate-off.args | 4 +-
.../balloon-device-deflate.args | 4 +-
.../balloon-device-period.args | 4 +-
tests/qemuxml2argvdata/balloon-device.args | 4 +-
.../balloon-mmio-deflate.args | 4 +-
tests/qemuxml2argvdata/bios-nvram-secure.args | 4 +-
tests/qemuxml2argvdata/bios-nvram.args | 4 +-
tests/qemuxml2argvdata/bios.args | 4 +-
tests/qemuxml2argvdata/blkiotune-device.args | 4 +-
tests/qemuxml2argvdata/blkiotune.args | 4 +-
tests/qemuxml2argvdata/boot-cdrom.args | 4 +-
tests/qemuxml2argvdata/boot-complex.args | 4 +-
tests/qemuxml2argvdata/boot-floppy-q35.args | 4 +-
tests/qemuxml2argvdata/boot-floppy.args | 4 +-
.../boot-menu-disable-drive.args | 4 +-
tests/qemuxml2argvdata/boot-menu-disable.args | 4 +-
.../boot-menu-enable-with-timeout.args | 4 +-
tests/qemuxml2argvdata/boot-menu-enable.args | 4 +-
tests/qemuxml2argvdata/boot-multi.args | 4 +-
tests/qemuxml2argvdata/boot-network.args | 4 +-
tests/qemuxml2argvdata/boot-order.args | 4 +-
tests/qemuxml2argvdata/channel-guestfwd.args | 4 +-
tests/qemuxml2argvdata/channel-spicevmc.args | 4 +-
.../qemuxml2argvdata/channel-virtio-auto.args | 4 +-
.../channel-virtio-autoadd.args | 4 +-
.../channel-virtio-autoassign.args | 4 +-
.../channel-virtio-default.args | 4 +-
.../channel-virtio-state.args | 4 +-
.../qemuxml2argvdata/channel-virtio-unix.args | 12 +-
tests/qemuxml2argvdata/channel-virtio.args | 4 +-
tests/qemuxml2argvdata/chardev-reconnect.args | 4 +-
tests/qemuxml2argvdata/clock-catchup.args | 4 +-
tests/qemuxml2argvdata/clock-france.args | 4 +-
tests/qemuxml2argvdata/clock-hpet-off.args | 4 +-
.../clock-localtime-basis-localtime.args | 4 +-
tests/qemuxml2argvdata/clock-localtime.args | 4 +-
tests/qemuxml2argvdata/clock-realtime.args | 4 +-
.../clock-timer-hyperv-rtc.args | 4 +-
tests/qemuxml2argvdata/clock-utc.args | 4 +-
tests/qemuxml2argvdata/clock-variable.args | 4 +-
.../qemuxml2argvdata/console-compat-auto.args | 4 +-
.../console-compat-chardev.args | 4 +-
tests/qemuxml2argvdata/console-compat.args | 4 +-
.../qemuxml2argvdata/console-virtio-ccw.args | 4 +-
.../qemuxml2argvdata/console-virtio-many.args | 4 +-
tests/qemuxml2argvdata/console-virtio.args | 4 +-
tests/qemuxml2argvdata/controller-order.args | 4 +-
tests/qemuxml2argvdata/cpu-Haswell-noTSX.args | 4 +-
tests/qemuxml2argvdata/cpu-Haswell.args | 4 +-
tests/qemuxml2argvdata/cpu-Haswell2.args | 4 +-
tests/qemuxml2argvdata/cpu-Haswell3.args | 4 +-
tests/qemuxml2argvdata/cpu-cache-disable.args | 4 +-
.../qemuxml2argvdata/cpu-cache-disable2.args | 4 +-
.../qemuxml2argvdata/cpu-cache-disable3.args | 4 +-
.../cpu-cache-emulate-l3.args | 4 +-
.../cpu-cache-passthrough.args | 4 +-
.../cpu-cache-passthrough2.args | 4 +-
.../cpu-check-default-none.args | 4 +-
.../cpu-check-default-none2.args | 4 +-
.../cpu-check-default-partial.args | 4 +-
.../cpu-check-default-partial2.args | 4 +-
tests/qemuxml2argvdata/cpu-check-none.args | 4 +-
tests/qemuxml2argvdata/cpu-eoi-disabled.args | 4 +-
tests/qemuxml2argvdata/cpu-eoi-enabled.args | 4 +-
tests/qemuxml2argvdata/cpu-exact1.args | 4 +-
.../cpu-exact2-nofallback.args | 4 +-
tests/qemuxml2argvdata/cpu-exact2.args | 4 +-
tests/qemuxml2argvdata/cpu-fallback.args | 4 +-
tests/qemuxml2argvdata/cpu-host-kvmclock.args | 4 +-
.../qemuxml2argvdata/cpu-host-model-cmt.args | 4 +-
.../cpu-host-model-fallback.args | 4 +-
.../cpu-host-model-vendor.args | 4 +-
tests/qemuxml2argvdata/cpu-host-model.args | 4 +-
.../cpu-host-model.x86_64-2.11.0.args | 36 -
.../cpu-host-model.x86_64-2.12.0.args | 36 -
.../cpu-host-model.x86_64-3.0.0.args | 36 -
.../cpu-host-passthrough-features.args | 4 +-
.../cpu-host-passthrough.args | 4 +-
.../qemuxml2argvdata/cpu-hotplug-startup.args | 4 +-
tests/qemuxml2argvdata/cpu-kvmclock.args | 4 +-
tests/qemuxml2argvdata/cpu-minimum1.args | 4 +-
tests/qemuxml2argvdata/cpu-minimum2.args | 4 +-
.../cpu-no-removed-features.args | 4 +-
tests/qemuxml2argvdata/cpu-numa-disjoint.args | 4 +-
.../qemuxml2argvdata/cpu-numa-memshared.args | 4 +-
.../cpu-numa-no-memory-element.args | 4 +-
tests/qemuxml2argvdata/cpu-numa1.args | 4 +-
tests/qemuxml2argvdata/cpu-numa2.args | 4 +-
tests/qemuxml2argvdata/cpu-s390-features.args | 4 +-
tests/qemuxml2argvdata/cpu-s390-zEC12.args | 4 +-
tests/qemuxml2argvdata/cpu-strict1.args | 4 +-
tests/qemuxml2argvdata/cpu-topology1.args | 4 +-
tests/qemuxml2argvdata/cpu-topology2.args | 4 +-
tests/qemuxml2argvdata/cpu-topology3.args | 4 +-
tests/qemuxml2argvdata/cpu-tsc-frequency.args | 4 +-
tests/qemuxml2argvdata/cputune-numatune.args | 4 +-
.../qemuxml2argvdata/cputune-zero-shares.args | 4 +-
tests/qemuxml2argvdata/cputune.args | 4 +-
.../default-kvm-host-arch.args | 4 +-
.../default-qemu-host-arch.args | 4 +-
.../disk-error-policy-s390x.s390x-2.12.0.args | 35 -
.../disk-error-policy.x86_64-2.12.0.args | 37 -
.../fd-memory-no-numa-topology.args | 4 +-
.../fd-memory-numa-topology.args | 4 +-
.../fd-memory-numa-topology2.args | 4 +-
.../fd-memory-numa-topology3.args | 4 +-
.../graphics-egl-headless.args | 4 +-
.../graphics-sdl-fullscreen.args | 4 +-
tests/qemuxml2argvdata/graphics-sdl.args | 4 +-
...ics-vnc-auto-socket-cfg.x86_64-2.11.0.args | 34 -
...raphics-vnc-auto-socket.x86_64-2.11.0.args | 32 -
...aphics-vnc-egl-headless.x86_64-2.11.0.args | 35 -
...hics-vnc-no-listen-attr.x86_64-2.11.0.args | 34 -
.../graphics-vnc-none.x86_64-2.11.0.args | 32 -
.../graphics-vnc-policy.x86_64-2.11.0.args | 34 -
...remove-generated-socket.x86_64-2.11.0.args | 34 -
.../graphics-vnc-sasl.x86_64-2.11.0.args | 35 -
...-vnc-socket-new-cmdline.x86_64-2.11.0.args | 32 -
.../graphics-vnc-socket.x86_64-2.11.0.args | 32 -
.../graphics-vnc-tls.x86_64-2.11.0.args | 34 -
.../graphics-vnc-websocket.x86_64-2.11.0.args | 32 -
.../graphics-vnc.x86_64-2.11.0.args | 34 -
.../hostdev-mdev-precreated.args | 4 +-
.../hostdev-pci-address-device.args | 4 +-
.../hostdev-pci-address-unassigned.args | 4 +-
.../qemuxml2argvdata/hostdev-pci-address.args | 4 +-
.../hostdev-pci-multifunction.args | 4 +-
.../hostdev-scsi-vhost-scsi-ccw.args | 4 +-
.../hostdev-scsi-vhost-scsi-pci.args | 4 +-
.../hostdev-scsi-vhost-scsi-pcie.args | 4 +-
.../hostdev-subsys-mdev-vfio-ccw.args | 4 +-
.../hostdev-usb-address-device-boot.args | 4 +-
.../hostdev-usb-address-device.args | 4 +-
.../qemuxml2argvdata/hostdev-usb-address.args | 4 +-
.../hostdev-vfio-multidomain.args | 4 +-
.../hostdev-vfio-zpci-autogenerate-fids.args | 4 +-
.../hostdev-vfio-zpci-autogenerate-uids.args | 4 +-
.../hostdev-vfio-zpci-autogenerate.args | 4 +-
.../hostdev-vfio-zpci-boundaries.args | 4 +-
.../hostdev-vfio-zpci-ccw-memballoon.args | 4 +-
.../hostdev-vfio-zpci-multidomain-many.args | 4 +-
tests/qemuxml2argvdata/hostdev-vfio-zpci.args | 4 +-
tests/qemuxml2argvdata/hostdev-vfio.args | 4 +-
tests/qemuxml2argvdata/hotplug-base.args | 4 +-
.../hugepages-default-2M.args | 4 +-
.../hugepages-default-system-size.args | 4 +-
tests/qemuxml2argvdata/hugepages-default.args | 4 +-
.../qemuxml2argvdata/hugepages-memaccess.args | 4 +-
.../hugepages-memaccess2.args | 4 +-
tests/qemuxml2argvdata/hugepages-nodeset.args | 4 +-
.../hugepages-numa-default-2M.args | 4 +-
.../hugepages-numa-default-dimm.args | 4 +-
.../hugepages-numa-default.args | 4 +-
.../hugepages-numa-nodeset-part.args | 4 +-
.../hugepages-numa-nodeset.args | 4 +-
tests/qemuxml2argvdata/hugepages-shared.args | 4 +-
.../hvf-aarch64-virt-headless.args | 6 +-
.../hvf-x86_64-q35-headless.args | 6 +-
.../qemuxml2argvdata/input-usbmouse-addr.args | 4 +-
tests/qemuxml2argvdata/input-usbmouse.args | 4 +-
tests/qemuxml2argvdata/input-usbtablet.args | 4 +-
tests/qemuxml2argvdata/input-virtio-ccw.args | 4 +-
.../iothreads-disk-virtio-ccw.args | 4 +-
tests/qemuxml2argvdata/iothreads-disk.args | 4 +-
.../iothreads-ids-partial.args | 4 +-
tests/qemuxml2argvdata/iothreads-ids.args | 4 +-
tests/qemuxml2argvdata/iothreads.args | 4 +-
tests/qemuxml2argvdata/kvm-features-off.args | 4 +-
tests/qemuxml2argvdata/kvm-features.args | 4 +-
tests/qemuxml2argvdata/kvm-pit-delay.args | 4 +-
tests/qemuxml2argvdata/kvm-pit-discard.args | 4 +-
tests/qemuxml2argvdata/kvmclock.args | 4 +-
...v-missing-platform-info.x86_64-2.12.0.args | 34 -
.../launch-security-sev.x86_64-2.12.0.args | 34 -
.../mach-virt-console-virtio.args | 4 +-
.../mach-virt-serial-native.args | 4 +-
.../mach-virt-serial-pci.args | 4 +-
.../mach-virt-serial-usb.args | 4 +-
.../machine-aeskeywrap-off-cap.args | 4 +-
.../machine-aeskeywrap-off-caps.args | 4 +-
.../machine-aeskeywrap-on-cap.args | 4 +-
.../machine-aeskeywrap-on-caps.args | 4 +-
tests/qemuxml2argvdata/machine-aliases1.args | 4 +-
tests/qemuxml2argvdata/machine-aliases2.args | 4 +-
tests/qemuxml2argvdata/machine-core-off.args | 4 +-
tests/qemuxml2argvdata/machine-core-on.args | 4 +-
.../machine-deakeywrap-off-cap.args | 4 +-
.../machine-deakeywrap-off-caps.args | 4 +-
.../machine-deakeywrap-on-cap.args | 4 +-
.../machine-deakeywrap-on-caps.args | 4 +-
.../machine-keywrap-none-caps.args | 4 +-
.../machine-keywrap-none.args | 4 +-
...ine-loadparm-multiple-disks-nets-s390.args | 4 +-
.../machine-loadparm-net-s390.args | 4 +-
.../machine-loadparm-s390.args | 4 +-
tests/qemuxml2argvdata/machine-smm-opt.args | 4 +-
.../qemuxml2argvdata/machine-vmport-opt.args | 4 +-
tests/qemuxml2argvdata/master-key.args | 4 +-
.../memory-hotplug-dimm-addr.args | 4 +-
.../qemuxml2argvdata/memory-hotplug-dimm.args | 4 +-
...emory-hotplug-nvdimm-ppc64-abi-update.args | 4 +-
.../memory-hotplug-nvdimm-ppc64.args | 4 +-
...emory-hotplug-ppc64-nonuma-abi-update.args | 4 +-
.../memory-hotplug-ppc64-nonuma.args | 4 +-
tests/qemuxml2argvdata/memory-hotplug.args | 4 +-
tests/qemuxml2argvdata/memtune-unlimited.args | 4 +-
tests/qemuxml2argvdata/memtune.args | 4 +-
.../migrate-numa-unaligned.args | 4 +-
tests/qemuxml2argvdata/migrate.args | 4 +-
tests/qemuxml2argvdata/minimal.args | 4 +-
tests/qemuxml2argvdata/misc-acpi.args | 4 +-
tests/qemuxml2argvdata/misc-disable-s3.args | 4 +-
.../misc-disable-suspends.args | 4 +-
tests/qemuxml2argvdata/misc-enable-s4.args | 4 +-
tests/qemuxml2argvdata/misc-uuid.args | 4 +-
.../mlock-off.x86_64-3.0.0.args | 31 -
.../mlock-on.x86_64-3.0.0.args | 31 -
tests/qemuxml2argvdata/monitor-json.args | 4 +-
.../multifunction-pci-device.args | 4 +-
.../name-escape.x86_64-2.11.0.args | 48 -
tests/qemuxml2argvdata/net-client.args | 4 +-
tests/qemuxml2argvdata/net-eth-hostip.args | 4 +-
tests/qemuxml2argvdata/net-eth-ifname.args | 4 +-
tests/qemuxml2argvdata/net-eth-names.args | 4 +-
.../net-eth-unmanaged-tap.args | 4 +-
tests/qemuxml2argvdata/net-eth.args | 4 +-
.../net-hostdev-bootorder.args | 4 +-
.../net-hostdev-multidomain.args | 4 +-
.../net-hostdev-vfio-multidomain.args | 4 +-
tests/qemuxml2argvdata/net-hostdev-vfio.args | 4 +-
tests/qemuxml2argvdata/net-hostdev.args | 4 +-
tests/qemuxml2argvdata/net-many-models.args | 4 +-
tests/qemuxml2argvdata/net-mcast.args | 4 +-
tests/qemuxml2argvdata/net-server.args | 4 +-
tests/qemuxml2argvdata/net-udp.args | 4 +-
tests/qemuxml2argvdata/net-user-addr.args | 4 +-
tests/qemuxml2argvdata/net-user.args | 4 +-
.../net-vhostuser-multiq.args | 4 +-
tests/qemuxml2argvdata/net-vhostuser.args | 2 +-
tests/qemuxml2argvdata/net-virtio-ccw.args | 4 +-
tests/qemuxml2argvdata/net-virtio-device.args | 4 +-
.../net-virtio-disable-offloads.args | 4 +-
tests/qemuxml2argvdata/net-virtio-netdev.args | 4 +-
.../net-virtio-rxtxqueuesize.args | 4 +-
.../net-virtio-teaming-hostdev.args | 4 +-
.../qemuxml2argvdata/net-virtio-teaming.args | 4 +-
tests/qemuxml2argvdata/net-virtio.args | 4 +-
tests/qemuxml2argvdata/nosharepages.args | 4 +-
.../numad-auto-memory-vcpu-cpuset.args | 4 +-
...o-memory-vcpu-no-cpuset-and-placement.args | 4 +-
.../numad-auto-vcpu-static-numatune.args | 4 +-
.../numad-static-memory-auto-vcpu.args | 4 +-
tests/qemuxml2argvdata/numad.args | 4 +-
.../numatune-auto-nodeset-invalid.args | 4 +-
.../numatune-auto-prefer.args | 4 +-
.../qemuxml2argvdata/numatune-distances.args | 4 +-
.../numatune-memnode-no-memory.args | 4 +-
tests/qemuxml2argvdata/numatune-memnode.args | 4 +-
tests/qemuxml2argvdata/numatune-memory.args | 4 +-
tests/qemuxml2argvdata/numatune-no-vcpu.args | 4 +-
.../qemuxml2argvdata/pages-dimm-discard.args | 4 +-
.../pages-discard-hugepages.args | 4 +-
tests/qemuxml2argvdata/pages-discard.args | 4 +-
.../parallel-parport-chardev.args | 4 +-
.../parallel-tcp-chardev.args | 4 +-
tests/qemuxml2argvdata/pci-autoadd-addr.args | 4 +-
tests/qemuxml2argvdata/pci-autoadd-idx.args | 4 +-
tests/qemuxml2argvdata/pci-autofill-addr.args | 4 +-
.../pci-bridge-many-disks.args | 4 +-
tests/qemuxml2argvdata/pci-bridge.args | 4 +-
tests/qemuxml2argvdata/pci-expander-bus.args | 4 +-
tests/qemuxml2argvdata/pci-many.args | 4 +-
tests/qemuxml2argvdata/pci-rom-disabled.args | 4 +-
tests/qemuxml2argvdata/pci-rom.args | 4 +-
.../pci-serial-dev-chardev.args | 4 +-
tests/qemuxml2argvdata/pcie-expander-bus.args | 4 +-
.../pcie-root-port-model-generic.args | 4 +-
.../pcie-root-port-model-ioh3420.args | 4 +-
tests/qemuxml2argvdata/pcie-root-port.args | 4 +-
tests/qemuxml2argvdata/pcie-root.args | 4 +-
.../pcie-switch-downstream-port.args | 4 +-
.../pcie-switch-upstream-port.args | 4 +-
tests/qemuxml2argvdata/pcihole64-q35.args | 4 +-
tests/qemuxml2argvdata/pcihole64.args | 4 +-
tests/qemuxml2argvdata/pmu-feature-off.args | 4 +-
tests/qemuxml2argvdata/pmu-feature.args | 4 +-
tests/qemuxml2argvdata/ppc-dtb.args | 4 +-
.../ppc64-usb-controller-legacy.args | 4 +-
.../ppc64-usb-controller-qemu-xhci.args | 4 +-
.../ppc64-usb-controller.args | 4 +-
tests/qemuxml2argvdata/ppce500-serial.args | 4 +-
tests/qemuxml2argvdata/pseries-basic.args | 4 +-
.../pseries-console-virtio.args | 4 +-
.../pseries-cpu-compat-power9.args | 4 +-
.../qemuxml2argvdata/pseries-cpu-compat.args | 4 +-
tests/qemuxml2argvdata/pseries-cpu-exact.args | 4 +-
tests/qemuxml2argvdata/pseries-cpu-le.args | 4 +-
tests/qemuxml2argvdata/pseries-features.args | 4 +-
.../qemuxml2argvdata/pseries-hostdevs-1.args | 4 +-
.../qemuxml2argvdata/pseries-hostdevs-2.args | 4 +-
.../qemuxml2argvdata/pseries-hostdevs-3.args | 4 +-
.../pseries-machine-max-cpu-compat.args | 4 +-
.../pseries-many-buses-1.args | 4 +-
.../pseries-many-buses-2.args | 4 +-
.../pseries-many-devices.args | 4 +-
tests/qemuxml2argvdata/pseries-nvram.args | 4 +-
.../pseries-panic-missing.args | 4 +-
.../pseries-panic-no-address.args | 4 +-
.../pseries-phb-default-missing.args | 4 +-
.../pseries-phb-numa-node.args | 4 +-
.../qemuxml2argvdata/pseries-phb-simple.args | 4 +-
.../pseries-serial-native.args | 4 +-
.../qemuxml2argvdata/pseries-serial-pci.args | 4 +-
.../qemuxml2argvdata/pseries-serial-usb.args | 4 +-
.../qemuxml2argvdata/pseries-usb-default.args | 4 +-
tests/qemuxml2argvdata/pseries-usb-kbd.args | 4 +-
tests/qemuxml2argvdata/pseries-usb-multi.args | 4 +-
.../pseries-vio-user-assigned.args | 4 +-
tests/qemuxml2argvdata/pseries-vio.args | 4 +-
tests/qemuxml2argvdata/q35-acpi-nouefi.args | 4 +-
tests/qemuxml2argvdata/q35-acpi-uefi.args | 4 +-
.../q35-default-devices-only.args | 4 +-
tests/qemuxml2argvdata/q35-multifunction.args | 4 +-
tests/qemuxml2argvdata/q35-noacpi-nouefi.args | 4 +-
.../q35-pci-force-address.args | 4 +-
tests/qemuxml2argvdata/q35-pcie-autoadd.args | 4 +-
tests/qemuxml2argvdata/q35-pcie.args | 4 +-
.../q35-pm-disable-fallback.args | 4 +-
tests/qemuxml2argvdata/q35-pm-disable.args | 4 +-
tests/qemuxml2argvdata/q35-usb2-multi.args | 4 +-
tests/qemuxml2argvdata/q35-usb2-reorder.args | 4 +-
tests/qemuxml2argvdata/q35-usb2.args | 4 +-
.../q35-virt-manager-basic.args | 6 +-
tests/qemuxml2argvdata/q35-virtio-pci.args | 4 +-
tests/qemuxml2argvdata/q35.args | 4 +-
tests/qemuxml2argvdata/qemu-ns-alt.args | 4 +-
.../qemu-ns-commandline-ns0.args | 4 +-
.../qemu-ns-commandline-ns1.args | 4 +-
.../qemuxml2argvdata/qemu-ns-commandline.args | 4 +-
.../qemu-ns-domain-commandline-ns0.args | 4 +-
.../qemu-ns-domain-commandline.args | 4 +-
.../qemuxml2argvdata/qemu-ns-domain-ns0.args | 4 +-
tests/qemuxml2argvdata/qemu-ns-no-env.args | 4 +-
.../reboot-timeout-disabled.args | 4 +-
.../reboot-timeout-enabled.args | 4 +-
tests/qemuxml2argvdata/restore-v2-fd.args | 4 +-
tests/qemuxml2argvdata/restore-v2.args | 4 +-
tests/qemuxml2argvdata/riscv64-virt-pci.args | 4 +-
tests/qemuxml2argvdata/riscv64-virt.args | 4 +-
.../qemuxml2argvdata/s390-panic-missing.args | 4 +-
.../s390-panic-no-address.args | 4 +-
tests/qemuxml2argvdata/s390-serial-2.args | 4 +-
.../qemuxml2argvdata/s390-serial-console.args | 4 +-
tests/qemuxml2argvdata/s390-serial.args | 4 +-
tests/qemuxml2argvdata/seclabel-dac-none.args | 4 +-
.../seclabel-dynamic-baselabel.args | 4 +-
.../seclabel-dynamic-labelskip.args | 4 +-
.../seclabel-dynamic-override.args | 4 +-
.../seclabel-dynamic-relabel.args | 4 +-
tests/qemuxml2argvdata/seclabel-dynamic.args | 4 +-
tests/qemuxml2argvdata/seclabel-none.args | 4 +-
.../seclabel-static-labelskip.args | 4 +-
.../seclabel-static-relabel.args | 4 +-
tests/qemuxml2argvdata/seclabel-static.args | 4 +-
.../serial-dev-chardev-iobase.args | 4 +-
.../qemuxml2argvdata/serial-dev-chardev.args | 4 +-
.../qemuxml2argvdata/serial-file-chardev.args | 4 +-
tests/qemuxml2argvdata/serial-file-log.args | 4 +-
.../qemuxml2argvdata/serial-many-chardev.args | 4 +-
.../qemuxml2argvdata/serial-pty-chardev.args | 4 +-
.../serial-spiceport-nospice.args | 4 +-
tests/qemuxml2argvdata/serial-spiceport.args | 4 +-
.../qemuxml2argvdata/serial-tcp-chardev.args | 4 +-
.../serial-tcp-telnet-chardev.args | 4 +-
.../serial-tcp-tlsx509-chardev-notls.args | 4 +-
.../serial-tcp-tlsx509-chardev-verify.args | 4 +-
.../serial-tcp-tlsx509-chardev.args | 4 +-
.../serial-tcp-tlsx509-secret-chardev.args | 4 +-
.../qemuxml2argvdata/serial-udp-chardev.args | 4 +-
.../qemuxml2argvdata/serial-unix-chardev.args | 6 +-
tests/qemuxml2argvdata/serial-vc-chardev.args | 4 +-
.../shmem-plain-doorbell.args | 4 +-
tests/qemuxml2argvdata/shmem.args | 4 +-
.../smartcard-controller.args | 4 +-
.../smartcard-host-certificates-database.args | 4 +-
.../smartcard-host-certificates.args | 4 +-
tests/qemuxml2argvdata/smartcard-host.args | 4 +-
.../smartcard-passthrough-spicevmc.args | 4 +-
.../smartcard-passthrough-tcp.args | 4 +-
tests/qemuxml2argvdata/smbios-type-fwcfg.args | 4 +-
tests/qemuxml2argvdata/smbios.args | 4 +-
tests/qemuxml2argvdata/smp-dies.args | 4 +-
tests/qemuxml2argvdata/smp.args | 4 +-
tests/qemuxml2argvdata/sound-device.args | 4 +-
tests/qemuxml2argvdata/sound.args | 4 +-
tests/qemuxml2argvdata/sparc-minimal.args | 4 +-
.../usb-controller-default-q35.args | 4 +-
.../usb-controller-explicit-q35.args | 4 +-
.../usb-controller-qemu-xhci.args | 4 +-
.../qemuxml2argvdata/usb-controller-xhci.args | 4 +-
tests/qemuxml2argvdata/usb-controller.args | 4 +-
.../usb-hub-autoadd-deluxe.args | 4 +-
tests/qemuxml2argvdata/usb-hub-autoadd.args | 4 +-
tests/qemuxml2argvdata/usb-hub.args | 4 +-
.../qemuxml2argvdata/usb-ich9-autoassign.args | 4 +-
.../qemuxml2argvdata/usb-ich9-companion.args | 4 +-
.../qemuxml2argvdata/usb-ich9-ehci-addr.args | 4 +-
.../qemuxml2argvdata/usb-long-port-path.args | 4 +-
tests/qemuxml2argvdata/usb-none.args | 4 +-
.../usb-piix3-controller.args | 4 +-
.../qemuxml2argvdata/usb-port-autoassign.args | 4 +-
tests/qemuxml2argvdata/usb-port-missing.args | 4 +-
tests/qemuxml2argvdata/usb-ports.args | 4 +-
tests/qemuxml2argvdata/usb-redir-boot.args | 4 +-
.../usb-redir-filter-version.args | 4 +-
tests/qemuxml2argvdata/usb-redir-filter.args | 4 +-
tests/qemuxml2argvdata/usb-redir.args | 4 +-
.../qemuxml2argvdata/usb-xhci-autoassign.args | 4 +-
tests/qemuxml2argvdata/usb1-usb2.args | 4 +-
tests/qemuxml2argvdata/user-aliases-usb.args | 4 +-
tests/qemuxml2argvdata/user-aliases.args | 6 +-
.../vcpu-placement-static.args | 4 +-
.../video-device-pciaddr-default.args | 4 +-
tests/qemuxml2argvdata/video-none-device.args | 4 +-
.../video-qxl-device-vgamem.args | 4 +-
tests/qemuxml2argvdata/video-qxl-device.args | 4 +-
tests/qemuxml2argvdata/video-qxl-heads.args | 4 +-
tests/qemuxml2argvdata/video-qxl-noheads.args | 4 +-
.../video-qxl-resolution.args | 4 +-
.../video-qxl-sec-device-vgamem.args | 4 +-
.../video-qxl-sec-device.args | 4 +-
.../video-vga-device-vgamem.args | 4 +-
tests/qemuxml2argvdata/video-vga-device.args | 4 +-
.../qemuxml2argvdata/video-vga-qxl-heads.args | 4 +-
.../video-virtio-gpu-ccw.args | 4 +-
.../video-virtio-gpu-device.args | 4 +-
.../video-virtio-gpu-sdl-gl.args | 4 +-
.../video-virtio-gpu-secondary.args | 4 +-
.../video-virtio-gpu-spice-gl.args | 4 +-
.../video-virtio-gpu-virgl.args | 4 +-
tests/qemuxml2argvdata/video-virtio-vga.args | 4 +-
.../virtio-input-passthrough.args | 4 +-
tests/qemuxml2argvdata/virtio-input.args | 4 +-
tests/qemuxml2argvdata/virtio-rng-ccw.args | 4 +-
.../qemuxml2argvdata/virtio-rng-default.args | 4 +-
tests/qemuxml2argvdata/virtio-rng-egd.args | 4 +-
.../qemuxml2argvdata/virtio-rng-multiple.args | 4 +-
tests/qemuxml2argvdata/virtio-rng-random.args | 4 +-
tests/qemuxml2argvdata/vmcoreinfo.args | 4 +-
tests/qemuxml2argvtest.c | 28 +-
tests/testutilsqemu.c | 3 +-
549 files changed, 956 insertions(+), 237440 deletions(-)
delete mode 100644 ci/containers/ubuntu-1804.Dockerfile
delete mode 100644 tests/qemucapabilitiesdata/caps_2.11.0.s390x.replies
delete mode 100644 tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml
delete mode 100644 tests/qemucapabilitiesdata/caps_2.11.0.x86_64.replies
delete mode 100644 tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml
delete mode 100644 tests/qemucapabilitiesdata/caps_2.12.0.aarch64.replies
delete mode 100644 tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml
delete mode 100644 tests/qemucapabilitiesdata/caps_2.12.0.ppc64.replies
delete mode 100644 tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml
delete mode 100644 tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies
delete mode 100644 tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml
delete mode 100644 tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies
delete mode 100644 tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml
delete mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.ppc64.replies
delete mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml
delete mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.riscv32.replies
delete mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml
delete mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.riscv64.replies
delete mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml
delete mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.s390x.replies
delete mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml
delete mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies
delete mode 100644 tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml
delete mode 100644 tests/qemuxml2argvdata/cpu-host-model.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/cpu-host-model.x86_64-2.12.0.args
delete mode 100644 tests/qemuxml2argvdata/cpu-host-model.x86_64-3.0.0.args
delete mode 100644 tests/qemuxml2argvdata/disk-error-policy-s390x.s390x-2.12.0.args
delete mode 100644 tests/qemuxml2argvdata/disk-error-policy.x86_64-2.12.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc-auto-socket-cfg.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc-auto-socket.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc-egl-headless.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc-no-listen-attr.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc-none.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc-policy.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc-remove-generated-socket.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc-sasl.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc-socket-new-cmdline.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc-socket.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc-tls.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc-websocket.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/graphics-vnc.x86_64-2.11.0.args
delete mode 100644 tests/qemuxml2argvdata/launch-security-sev-missing-platform-info.x86_64-2.12.0.args
delete mode 100644 tests/qemuxml2argvdata/launch-security-sev.x86_64-2.12.0.args
delete mode 100644 tests/qemuxml2argvdata/mlock-off.x86_64-3.0.0.args
delete mode 100644 tests/qemuxml2argvdata/mlock-on.x86_64-3.0.0.args
delete mode 100644 tests/qemuxml2argvdata/name-escape.x86_64-2.11.0.args
--
2.34.1
2 years, 7 months
[libvirt PATCH] drivers: Group global feature together
by Andrea Bolognani
All these features are supposed to be handled by the call to
virDriverFeatureIsGlobal() placed right above the switch
statement, so group them together and add a comment. If any of
these features is actually encountered as part of the switch
statements, that means there's a bug in the driver and we should
error out.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
Applies on top of
[PATCH 0/8] driver: Fix handling of driver feature flags
https://listman.redhat.com/archives/libvir-list/2022-February/msg00644.html
src/ch/ch_driver.c | 13 +++++++------
src/esx/esx_driver.c | 21 +++++++++++----------
src/libxl/libxl_driver.c | 16 +++++++++-------
src/lxc/lxc_driver.c | 11 ++++++-----
src/network/bridge_driver.c | 15 ++++++++-------
src/openvz/openvz_driver.c | 16 +++++++++-------
src/qemu/qemu_driver.c | 16 +++++++++-------
7 files changed, 59 insertions(+), 49 deletions(-)
diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c
index ac9298c0b5..9cbd7b71df 100644
--- a/src/ch/ch_driver.c
+++ b/src/ch/ch_driver.c
@@ -928,23 +928,24 @@ chConnectSupportsFeature(virConnectPtr conn,
return supported;
switch ((virDrvFeature) feature) {
+ case VIR_DRV_FEATURE_REMOTE:
+ case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
+ case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
+ case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
case VIR_DRV_FEATURE_TYPED_PARAM_STRING:
case VIR_DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER:
- return 1;
+ case VIR_DRV_FEATURE_FD_PASSING:
+ /* Should have already been handled by virDriverFeatureIsGlobal() */
+ return -1;
case VIR_DRV_FEATURE_MIGRATION_V2:
case VIR_DRV_FEATURE_MIGRATION_V3:
case VIR_DRV_FEATURE_MIGRATION_P2P:
case VIR_DRV_FEATURE_MIGRATE_CHANGE_PROTECTION:
- case VIR_DRV_FEATURE_FD_PASSING:
case VIR_DRV_FEATURE_XML_MIGRATABLE:
case VIR_DRV_FEATURE_MIGRATION_OFFLINE:
case VIR_DRV_FEATURE_MIGRATION_PARAMS:
case VIR_DRV_FEATURE_MIGRATION_DIRECT:
case VIR_DRV_FEATURE_MIGRATION_V1:
- case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
- case VIR_DRV_FEATURE_REMOTE:
- case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
- case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
default:
return 0;
}
diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c
index 3149f3e963..6e5f9c8cc1 100644
--- a/src/esx/esx_driver.c
+++ b/src/esx/esx_driver.c
@@ -1024,7 +1024,17 @@ esxConnectSupportsFeature(virConnectPtr conn, int feature)
return supported;
switch ((virDrvFeature) feature) {
- case VIR_DRV_FEATURE_MIGRATION_V1:
+ case VIR_DRV_FEATURE_REMOTE:
+ case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
+ case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
+ case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
+ case VIR_DRV_FEATURE_TYPED_PARAM_STRING:
+ case VIR_DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER:
+ case VIR_DRV_FEATURE_FD_PASSING:
+ /* Should have already been handled by virDriverFeatureIsGlobal() */
+ return -1;
+
+ case VIR_DRV_FEATURE_MIGRATION_V1:
supportsVMotion = esxSupportsVMotion(priv);
if (supportsVMotion == esxVI_Boolean_Undefined)
@@ -1034,10 +1044,6 @@ esxConnectSupportsFeature(virConnectPtr conn, int feature)
return priv->vCenter &&
supportsVMotion == esxVI_Boolean_True ? 1 : 0;
- case VIR_DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER:
- return 1;
-
- case VIR_DRV_FEATURE_FD_PASSING:
case VIR_DRV_FEATURE_MIGRATE_CHANGE_PROTECTION:
case VIR_DRV_FEATURE_MIGRATION_DIRECT:
case VIR_DRV_FEATURE_MIGRATION_OFFLINE:
@@ -1045,11 +1051,6 @@ esxConnectSupportsFeature(virConnectPtr conn, int feature)
case VIR_DRV_FEATURE_MIGRATION_PARAMS:
case VIR_DRV_FEATURE_MIGRATION_V2:
case VIR_DRV_FEATURE_MIGRATION_V3:
- case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
- case VIR_DRV_FEATURE_REMOTE:
- case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
- case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
- case VIR_DRV_FEATURE_TYPED_PARAM_STRING:
case VIR_DRV_FEATURE_XML_MIGRATABLE:
default:
return 0;
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 478ab3e941..46596978d4 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -5706,22 +5706,24 @@ libxlConnectSupportsFeature(virConnectPtr conn, int feature)
return supported;
switch ((virDrvFeature) feature) {
- case VIR_DRV_FEATURE_MIGRATION_V3:
+ case VIR_DRV_FEATURE_REMOTE:
+ case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
+ case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
+ case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
case VIR_DRV_FEATURE_TYPED_PARAM_STRING:
+ case VIR_DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER:
+ case VIR_DRV_FEATURE_FD_PASSING:
+ /* Should have already been handled by virDriverFeatureIsGlobal() */
+ return -1;
+ case VIR_DRV_FEATURE_MIGRATION_V3:
case VIR_DRV_FEATURE_MIGRATION_PARAMS:
case VIR_DRV_FEATURE_MIGRATION_P2P:
- case VIR_DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER:
return 1;
- case VIR_DRV_FEATURE_FD_PASSING:
case VIR_DRV_FEATURE_MIGRATE_CHANGE_PROTECTION:
case VIR_DRV_FEATURE_MIGRATION_DIRECT:
case VIR_DRV_FEATURE_MIGRATION_OFFLINE:
case VIR_DRV_FEATURE_MIGRATION_V1:
case VIR_DRV_FEATURE_MIGRATION_V2:
- case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
- case VIR_DRV_FEATURE_REMOTE:
- case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
- case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
case VIR_DRV_FEATURE_XML_MIGRATABLE:
default:
return 0;
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index 020ec257ae..023292a75a 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -1627,10 +1627,15 @@ lxcConnectSupportsFeature(virConnectPtr conn, int feature)
return supported;
switch ((virDrvFeature) feature) {
+ case VIR_DRV_FEATURE_REMOTE:
+ case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
+ case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
+ case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
case VIR_DRV_FEATURE_TYPED_PARAM_STRING:
case VIR_DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER:
- return 1;
case VIR_DRV_FEATURE_FD_PASSING:
+ /* Should have already been handled by virDriverFeatureIsGlobal() */
+ return -1;
case VIR_DRV_FEATURE_MIGRATE_CHANGE_PROTECTION:
case VIR_DRV_FEATURE_MIGRATION_DIRECT:
case VIR_DRV_FEATURE_MIGRATION_OFFLINE:
@@ -1639,10 +1644,6 @@ lxcConnectSupportsFeature(virConnectPtr conn, int feature)
case VIR_DRV_FEATURE_MIGRATION_V1:
case VIR_DRV_FEATURE_MIGRATION_V2:
case VIR_DRV_FEATURE_MIGRATION_V3:
- case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
- case VIR_DRV_FEATURE_REMOTE:
- case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
- case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
case VIR_DRV_FEATURE_XML_MIGRATABLE:
default:
return 0;
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index d6ae05360b..559600d2af 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -866,23 +866,24 @@ networkConnectSupportsFeature(virConnectPtr conn, int feature)
return supported;
switch ((virDrvFeature) feature) {
+ case VIR_DRV_FEATURE_REMOTE:
+ case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
+ case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
+ case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
+ case VIR_DRV_FEATURE_TYPED_PARAM_STRING:
case VIR_DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER:
- return 1;
+ case VIR_DRV_FEATURE_FD_PASSING:
+ /* Should have already been handled by virDriverFeatureIsGlobal() */
+ return -1;
case VIR_DRV_FEATURE_MIGRATION_V2:
case VIR_DRV_FEATURE_MIGRATION_V3:
case VIR_DRV_FEATURE_MIGRATION_P2P:
case VIR_DRV_FEATURE_MIGRATE_CHANGE_PROTECTION:
- case VIR_DRV_FEATURE_FD_PASSING:
- case VIR_DRV_FEATURE_TYPED_PARAM_STRING:
case VIR_DRV_FEATURE_XML_MIGRATABLE:
case VIR_DRV_FEATURE_MIGRATION_OFFLINE:
case VIR_DRV_FEATURE_MIGRATION_PARAMS:
case VIR_DRV_FEATURE_MIGRATION_DIRECT:
case VIR_DRV_FEATURE_MIGRATION_V1:
- case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
- case VIR_DRV_FEATURE_REMOTE:
- case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
- case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
default:
return 0;
}
diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c
index aa1db09540..c034fd5af9 100644
--- a/src/openvz/openvz_driver.c
+++ b/src/openvz/openvz_driver.c
@@ -1944,22 +1944,24 @@ openvzConnectSupportsFeature(virConnectPtr conn G_GNUC_UNUSED, int feature)
return supported;
switch ((virDrvFeature) feature) {
+ case VIR_DRV_FEATURE_REMOTE:
+ case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
+ case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
+ case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
+ case VIR_DRV_FEATURE_TYPED_PARAM_STRING:
+ case VIR_DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER:
+ case VIR_DRV_FEATURE_FD_PASSING:
+ /* Should have already been handled by virDriverFeatureIsGlobal() */
+ return -1;
case VIR_DRV_FEATURE_MIGRATION_PARAMS:
case VIR_DRV_FEATURE_MIGRATION_V3:
- case VIR_DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER:
return 1;
- case VIR_DRV_FEATURE_FD_PASSING:
case VIR_DRV_FEATURE_MIGRATE_CHANGE_PROTECTION:
case VIR_DRV_FEATURE_MIGRATION_DIRECT:
case VIR_DRV_FEATURE_MIGRATION_OFFLINE:
case VIR_DRV_FEATURE_MIGRATION_P2P:
case VIR_DRV_FEATURE_MIGRATION_V1:
case VIR_DRV_FEATURE_MIGRATION_V2:
- case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
- case VIR_DRV_FEATURE_REMOTE:
- case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
- case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
- case VIR_DRV_FEATURE_TYPED_PARAM_STRING:
case VIR_DRV_FEATURE_XML_MIGRATABLE:
default:
return 0;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index f1f708e511..433ba09745 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -1182,23 +1182,25 @@ qemuConnectSupportsFeature(virConnectPtr conn, int feature)
return supported;
switch ((virDrvFeature) feature) {
+ case VIR_DRV_FEATURE_REMOTE:
+ case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
+ case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
+ case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
+ case VIR_DRV_FEATURE_TYPED_PARAM_STRING:
+ case VIR_DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER:
+ case VIR_DRV_FEATURE_FD_PASSING:
+ /* Should have already been handled by virDriverFeatureIsGlobal() */
+ return -1;
case VIR_DRV_FEATURE_MIGRATION_V2:
case VIR_DRV_FEATURE_MIGRATION_V3:
case VIR_DRV_FEATURE_MIGRATION_P2P:
case VIR_DRV_FEATURE_MIGRATE_CHANGE_PROTECTION:
- case VIR_DRV_FEATURE_FD_PASSING:
- case VIR_DRV_FEATURE_TYPED_PARAM_STRING:
case VIR_DRV_FEATURE_XML_MIGRATABLE:
case VIR_DRV_FEATURE_MIGRATION_OFFLINE:
case VIR_DRV_FEATURE_MIGRATION_PARAMS:
- case VIR_DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER:
return 1;
case VIR_DRV_FEATURE_MIGRATION_DIRECT:
case VIR_DRV_FEATURE_MIGRATION_V1:
- case VIR_DRV_FEATURE_PROGRAM_KEEPALIVE:
- case VIR_DRV_FEATURE_REMOTE:
- case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK:
- case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK:
default:
return 0;
}
--
2.35.1
2 years, 7 months
[PATCH v2 0/4] VirtioNet RSS support.
by Andrew Melnychenko
This series of patches add RSS property support for virtio-net-pci.
Virtio RSS effectively works with TAP devices, it requires additional
vectors for VirtioNet, queues for TAP device, and vCPU cores.
Example of device configuration:
```
<interface type="network">
<mac address="52:54:00:c4:90:25"/>
<source network="default"/>
<model type="virtio"/>
<driver name="qemu" queues="9" rss="on" rss_hash_report="off"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>
```
Capability "rss" enables RSS, "rss_hash_report" - enables hashes in vheader.
For now, "rss" property will trigger "in-qemu" RSS in most cases.
Current Qemu(6.2) supports eBPF RSS that may require additional capabilities.
In future, the helper will be provided. And this code is the base for VirtIO RSS.
Changes since v1:
* refactored patches
* changed docs and tests
Changes since RFC:
* rebased and refactored
* added tests
* postponed the helper
Andrew Melnychenko (4):
domain_conf: Added configs for RSS and Hash report.
qemu_capabilities: Added capabilites for qemu's "rss" and "hash".
qemu_command: Added "rss" and "hash" properties.
test: Added xml2argv and xml2xml tests.
docs/formatdomain.rst | 18 ++++++++
docs/schemas/domaincommon.rng | 10 +++++
src/conf/domain_conf.c | 31 ++++++++++++-
src/conf/domain_conf.h | 2 +
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 2 +
src/qemu/qemu_validate.c | 14 ++++++
.../caps_5.1.0.x86_64.xml | 1 +
.../caps_5.2.0.aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_5.2.0.ppc64.xml | 1 +
.../caps_5.2.0.riscv64.xml | 1 +
.../qemucapabilitiesdata/caps_5.2.0.s390x.xml | 1 +
.../caps_5.2.0.x86_64.xml | 1 +
.../caps_6.0.0.aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_6.0.0.s390x.xml | 1 +
.../caps_6.0.0.x86_64.xml | 1 +
.../caps_6.1.0.x86_64.xml | 1 +
.../caps_6.2.0.aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_6.2.0.ppc64.xml | 1 +
.../caps_6.2.0.x86_64.xml | 1 +
.../net-virtio-rss.x86_64-latest.args | 43 +++++++++++++++++++
tests/qemuxml2argvdata/net-virtio-rss.xml | 39 +++++++++++++++++
.../virtio-options.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/virtio-options.xml | 2 +-
tests/qemuxml2argvtest.c | 2 +
26 files changed, 178 insertions(+), 3 deletions(-)
create mode 100644 tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/net-virtio-rss.xml
--
2.34.1
2 years, 7 months
libvirt: introduce VIR_DOMAIN_DESTROY_REMOVE_LOGS flag
by Nikolay Shirokovskiy
The patch series based on discussion in RFC [1].
I wonder if we'd better add some property like "transient logs" instead
of adding a flag to destoy API.
Yes libguestfs uses virDomainDestroyFlags to terminate a VM and it is
intended client of this new flag but it or other clients may want to use
shutdown API or use autodestroy domains with same log behaviour. Then
for the current task we only need to support this property in domain xml
I guess.
[1] removing VMs logs
https://listman.redhat.com/archives/libvir-list/2022-February/msg00273.html
Nikolay Shirokovskiy (3):
libvirt: introduce VIR_DOMAIN_DESTROY_REMOVE_LOGS flag
qemu: support VIR_DOMAIN_DESTROY_REMOVE_LOGS flag
tools: support --remove-logs flag on destroing domain
docs/manpages/virsh.rst | 7 +++++-
include/libvirt/libvirt-domain.h | 1 +
src/libvirt-domain.c | 6 +++++
src/qemu/qemu_domain.c | 41 ++++++++++++++++++++++++++++++++
src/qemu/qemu_domain.h | 4 ++++
src/qemu/qemu_driver.c | 8 ++++++-
tools/virsh-domain.c | 8 ++++++-
7 files changed, 72 insertions(+), 3 deletions(-)
--
2.31.1
2 years, 7 months
[PATCH 0/9] Fixes and improvements around virXMLPropTristate*()
by Andrea Bolognani
I have manually audited all commits that have converted existing
code to use the new helpers (full list below) and have convinced
myself that allowReboot is indeed the only one that requires
special handling.
Changes from [RFC]:
* introduce a separate helper for the one scenario where we need
to accept 'default' as input instead of going for an approach
that would require updating most callers;
* throw in a bunch of extra fixes and improvements.
[RFC] https://listman.redhat.com/archives/libvir-list/2022-March/229506.html
Commits that performed the conversion in a way that accurately
preserved the existing behavior:
14c803cb8276c564d242d4aec8f7d1f64da30321
deac783c86009e0e828746c8c49de70f656aeb85
e1e2e7ec46191a83eadf32be8a87901b01488a6d
cea39e95291517ff2a8ae515573bad587a7dad2d
388cdd11f3c746690edc8e0f71289872c6180c60
dfff3db7763f55b0157f22d816d84c71bbc2dcad
793e71ee76acb49b215e31ee89e0c9cb52322811
92204134806ba4c41ba6cbc20ad2408015e7f3d5
c348da7c4c138c108695c5f309f62e87d0101eda
45abc1a5db60213bf94b5fb780dc6549ddd9103c
45a61cbf68a2459202b7eda4a01a56bfcb6be048
be63e8703c7354bdf0c767a771223b33ab2ad4f2
b13f801d6ff6f9fe5e58aa48fc31bd25ad0b072b
b45ba35e350f2a62c6b06a637d707029bc99e559
fa48004af5ba58cfab38cd8ab5092719a5978509
fcc563a29bd91bd2a45b8f242eccaf37ab75b5b3
97cdb5be1ea84b5224f6353b425ea2503763df07
754a7f6c942268b2b604de072a3391ea4df91e57
b975a8a755b192f5980a14c46e745a92d3cdd3be
e2a38216d2ff6dac8bc927603fdec1ba887b2da7
cd4c756fd5eece6b1d7723a407ead0ed1bf8a298
e663717cb13e49f4da21280bc2f455ddfeee782c
cacde05ad3e8428ad0e16afcfdb715cb4b3d3165
567efa85c2194e45ae943c01c9dffe5b44e81c96
54fb0b9e95c398e8ba09bc7cdceca3f588f910b8
3b7bc307d5fd8e7b9c618a6454d32d59b83277d2
2beae8273b932505888dec35ae97bd8d74893272
0eb42087c7907f43c114cb57b5ff2cf2a52dfea4
b683978f1f4609e7a099ff8b36d7cac25e84cf7c
a85d553d7608bf4c9ffe74546d32afe0275d7c69
86cfd4d4e8de1834607e977318eee4e0c6a9a565
593140dabd66f01aa0d606984ff684f7cb9c1eb1
956373230631929dfa9a36814a283666cb290ee0
0f8fd4548295e3a1516939d7f3bb912a8d7e4713
7ae08ef3a230978510e2722fc56b61ebbae9c6b7
Commits that altered the existing behavior but did so safely, in
that they stopped accepting 'default' as a valid value for a
property that was defined in the schema as only taking either 'yes'
or 'no' and for which libvirt itself never produced the 'default'
value:
9086ae4facfb91436c1d9e7daec9285156cb4eb8
931afa7d99b8ff6eb18a6aa402ed64b789197d30
38dc25989c50dad1f6f64aa038de8c2d1c008734
38d76cde5e90cbb59cd8c726f35646be1740c685
ee387289dd6c993bd2bcfdebcbad86a51fe36da8
550981ce9713ef82df49116c336a9f4bd0eedef4
b127e50290383dc26e8714ba866acc9f501d7af6
54635ea592859d110e87d19565ffabe24d2f0e2e
232c01ec4f650523ab5ff84cf38c4d8b55763052
bb94b3d28db909d43d83b3f2ab73aa3f881b5c95
3681a5393313eba7bfa8e8f763116efb9961c686
Commits that altered the existing behavior in a way that required
some fixing afterwards:
0fe2d8dd335054fae38b46bbbac58a4662e1a1d0
Andrea Bolognani (9):
conf: Don't pass PROP_NONZERO to virXMLPropTristateBool()
conf: Use virTristateBoolToBool() more
qemu: Format <allowReboot> conditionally
util: Introduce virXMLPropTristateBoolAllowDefault()
qemu: Accept <allowReboot value='default'/>
qemu: Don't ignore XMLParseAllowReboot() errors
conf: Restore error checking in VideoAccelDefParseXML()
conf: Format managed property of hostdev-pci ports correctly
network: Convert managed property of hostdev-pci ports correctly
src/conf/domain_conf.c | 42 +++++++++++--------
src/conf/interface_conf.c | 2 +-
src/conf/virnetworkportdef.c | 7 +++-
src/libvirt_private.syms | 1 +
src/network/bridge_driver.c | 2 +-
src/qemu/qemu_domain.c | 19 +++++----
src/util/virxml.c | 18 ++++++++
src/util/virxml.h | 7 ++++
.../plug-hostdev-pci-unmanaged.xml | 12 ++++++
tests/virnetworkportxml2xmltest.c | 1 +
10 files changed, 83 insertions(+), 28 deletions(-)
create mode 100644 tests/virnetworkportxml2xmldata/plug-hostdev-pci-unmanaged.xml
--
2.35.1
2 years, 7 months