Devel
Threads by month
- ----- 2026 -----
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
February 2023
- 52 participants
- 119 discussions
Before a PCI device can be assigned to a guest with VFIO, that device
must be bound to the vfio-pci driver rather than to the device's
normal driver. The vfio-pci driver provides APIs that permit QEMU to
perform all the necessary operations to make the device accessible to
the guest.
There has been kernel work recently to support vendor/device-specific
VFIO variant drivers that provide the basic vfio-pci driver functionality
while adding support for device-specific operations (for example these
device-specific drivers are planned to support live migration of
certain devices). All that will be needed to make this functionality
available will be to bind the new vendor-specific driver to the device
(rather than the generic vfio-pci driver, which will continue to work
just without the extra functionality).
But until now libvirt has required that all PCI devices being assigned
to a guest with VFIO specifically have the "vfio-pci" driver bound to
the device. So even if the user manually binds a shiny new
vendor-specific vfio variant driver to the device (and puts
"managed='no'" in the config to prevent libvirt from changing the
binding), libvirt will just fail during startup of the guest (or
during hotplug) because the driver bound to the device isn't exactly
"vfio-pci".
This patch loosens that restriction a bit - rather than requiring that
the device be bound to "vfio-pci", it also checks if the drivername
contains the string "vfio" at all, and in this case allows the
operation to continue. If the driver is in fact a VFIO variant, then
the assignment will succeed, but if it is not a VFIO variant then QEMU
will fail (and report the error back to libvirt).
In the near future (possibly by kernel 6.0) there will be a
formal method of identifying a VFIO variant driver by looking in
sysfs; in the meantime the inexact, but simple, method in this patch
will allow users of the few existing VFIO variant drivers (and
developers of new VFIO variant drivers) to use their new drivers
without needing to remove libvirt from their setup - they can simply
pre-bind the device to the new driver, then use "managed='no'" in
their libvirt config.
NB: this patch does *not* handle automatically determining the proper
vendor-specific driver and binding to it in the case of
"managed='yes'". This will be implemented later when there is a widely
available driver / device combo we can use for testing.
Signed-off-by: Laine Stump <laine(a)redhat.com>
---
V1 here: https://listman.redhat.com/archives/libvir-list/2022-August/233327.html
Change in V2:
V1 used the output of modinfo to look for "vfio_pci" as an alias for a
driver to see if it was a VFIO variant driver.
As a result of discussion of V1, V2 is much simpler - it just assumes
that any driver with "vfio" in the name is a VFIO variant. This is
okay because 1) QEMU will still catch it and libvirt will properly log
the error if the driver isn't actually a VFIO variant, and 2) it's a
temporary situation, just to enable use of VFIO variant drivers with
libvirt until a standard method of detecting this is added to sysfs
(which, according to the discussion of V1, is coming in the near
future).
(NB: I did implement checking of /lib/modules/`uname -r`/modules.alias
as suggested by Erik, but it turned out that this caused the unit
tests to call uname(3) and open the modules.alias file on the test
host - for a proper unit test I would have also needed to mock these
two functions, and it seemed like too much complexity for a temporary
workaround. I've implemented Jason's suggestion here (accept any
driver with "vfio" in the name), which is similar to danpb's
suggestion (accept specifically the two drivers that are already in
the upstream kernel), but will also allow for new drivers that may be
under development.)
src/hypervisor/virhostdev.c | 26 ++++---------
src/util/virpci.c | 76 ++++++++++++++++++++++++++++++++++---
src/util/virpci.h | 3 ++
3 files changed, 82 insertions(+), 23 deletions(-)
diff --git a/src/hypervisor/virhostdev.c b/src/hypervisor/virhostdev.c
index c0ce867596..15b35fa75e 100644
--- a/src/hypervisor/virhostdev.c
+++ b/src/hypervisor/virhostdev.c
@@ -747,9 +747,8 @@ virHostdevPreparePCIDevicesImpl(virHostdevManager *mgr,
mgr->inactivePCIHostdevs) < 0)
goto reattachdevs;
} else {
- g_autofree char *driverPath = NULL;
- g_autofree char *driverName = NULL;
- int stub;
+ g_autofree char *drvName = NULL;
+ virPCIStubDriver drvType;
/* Unmanaged devices should already have been marked as
* inactive: if that's the case, we can simply move on */
@@ -769,18 +768,14 @@ virHostdevPreparePCIDevicesImpl(virHostdevManager *mgr,
* information about active / inactive device across
* daemon restarts has been implemented */
- if (virPCIDeviceGetDriverPathAndName(pci,
- &driverPath, &driverName) < 0)
+ if (virPCIDeviceGetDriverNameAndType(pci, &drvName, &drvType) < 0)
goto reattachdevs;
- stub = virPCIStubDriverTypeFromString(driverName);
-
- if (stub > VIR_PCI_STUB_DRIVER_NONE &&
- stub < VIR_PCI_STUB_DRIVER_LAST) {
+ if (drvType > VIR_PCI_STUB_DRIVER_NONE) {
/* The device is bound to a known stub driver: store this
* information and add a copy to the inactive list */
- virPCIDeviceSetStubDriver(pci, stub);
+ virPCIDeviceSetStubDriver(pci, drvType);
VIR_DEBUG("Adding PCI device %s to inactive list",
virPCIDeviceGetName(pci));
@@ -2292,18 +2287,13 @@ virHostdevPrepareOneNVMeDevice(virHostdevManager *hostdev_mgr,
/* Let's check if all PCI devices are NVMe disks. */
for (i = 0; i < virPCIDeviceListCount(pciDevices); i++) {
virPCIDevice *pci = virPCIDeviceListGet(pciDevices, i);
- g_autofree char *drvPath = NULL;
g_autofree char *drvName = NULL;
- int stub = VIR_PCI_STUB_DRIVER_NONE;
+ virPCIStubDriver drvType;
- if (virPCIDeviceGetDriverPathAndName(pci, &drvPath, &drvName) < 0)
+ if (virPCIDeviceGetDriverNameAndType(pci, &drvName, &drvType) < 0)
goto cleanup;
- if (drvName)
- stub = virPCIStubDriverTypeFromString(drvName);
-
- if (stub == VIR_PCI_STUB_DRIVER_VFIO ||
- STREQ_NULLABLE(drvName, "nvme"))
+ if (drvType == VIR_PCI_STUB_DRIVER_VFIO || STREQ_NULLABLE(drvName, "nvme"))
continue;
VIR_WARN("Suspicious NVMe disk assignment. PCI device "
diff --git a/src/util/virpci.c b/src/util/virpci.c
index 7800966963..51ccf4d9fd 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -277,6 +277,71 @@ virPCIDeviceGetDriverPathAndName(virPCIDevice *dev, char **path, char **name)
}
+/**
+ * virPCIDeviceGetDriverNameAndType:
+ * @dev: virPCIDevice object to examine
+ * @drvName: returns name of driver bound to this device (if any)
+ * @drvType: returns type of driver if it is a known stub driver type
+ *
+ * Find the name of the driver bound to @dev (if any) and the type of
+ * the driver if it is a known/recognized "stub" driver (based on the
+ * driver name).
+ *
+ * There are vfio "variant" drivers that provide all the basic
+ * functionality of the standard vfio-pci driver as well as additional
+ * stuff. There is a plan to add info to sysfs that will allow easily
+ * determining if a driver is a vfio variant driver, but that sysfs
+ * entry isn't yet available. In the meantime as a workaround so that
+ * the few existing vfio variant drivers can be used with libvirt, and
+ * so that driver developers can test their new vfio variant drivers
+ * without needing to bypass libvirt, we also check if the driver name
+ * contains the string "vfio"; if it does, then we consider this drier
+ * as type VFIO. This can lead to false positives, but that isn't a
+ * horrible thing, because the problem will still be caught by QEMU as
+ * soon as libvirt makes the request to attach the device.
+ *
+ * Return 0 on success, -1 on failure. If -1 is returned, then an error
+ * message has been logged.
+ */
+int
+virPCIDeviceGetDriverNameAndType(virPCIDevice *dev,
+ char **drvName,
+ virPCIStubDriver *drvType)
+{
+ g_autofree char *drvPath = NULL;
+ int tmpType;
+
+ if (virPCIDeviceGetDriverPathAndName(dev, &drvPath, drvName) < 0)
+ return -1;
+
+ if (!*drvName) {
+ *drvType = VIR_PCI_STUB_DRIVER_NONE;
+ return 0;
+ }
+
+ tmpType = virPCIStubDriverTypeFromString(*drvName);
+
+ if (tmpType > VIR_PCI_STUB_DRIVER_NONE) {
+ *drvType = tmpType;
+ return 0; /* exact match of a known driver name (or no name) */
+ }
+
+ /* Check if the drivername contains "vfio" and count as a VFIO
+ * driver if so - see above for explanation.
+ */
+
+ if (strstr(*drvName, "vfio")) {
+ VIR_DEBUG("Driver %s is a vfio_pci driver", *drvName);
+ *drvType = VIR_PCI_STUB_DRIVER_VFIO;
+ } else {
+ VIR_DEBUG("Driver %s is NOT a vfio_pci driver", *drvName);
+ *drvType = VIR_PCI_STUB_DRIVER_NONE;
+ }
+
+ return 0;
+}
+
+
static int
virPCIDeviceConfigOpenInternal(virPCIDevice *dev, bool readonly, bool fatal)
{
@@ -1004,8 +1069,8 @@ virPCIDeviceReset(virPCIDevice *dev,
virPCIDeviceList *activeDevs,
virPCIDeviceList *inactiveDevs)
{
- g_autofree char *drvPath = NULL;
g_autofree char *drvName = NULL;
+ virPCIStubDriver drvType;
int ret = -1;
int fd = -1;
int hdrType = -1;
@@ -1032,15 +1097,16 @@ virPCIDeviceReset(virPCIDevice *dev,
* reset it whenever appropriate, so doing it ourselves would just
* be redundant.
*/
- if (virPCIDeviceGetDriverPathAndName(dev, &drvPath, &drvName) < 0)
+ if (virPCIDeviceGetDriverNameAndType(dev, &drvName, &drvType) < 0)
goto cleanup;
- if (virPCIStubDriverTypeFromString(drvName) == VIR_PCI_STUB_DRIVER_VFIO) {
- VIR_DEBUG("Device %s is bound to vfio-pci - skip reset",
- dev->name);
+ if (drvType == VIR_PCI_STUB_DRIVER_VFIO) {
+
+ VIR_DEBUG("Device %s is bound to %s - skip reset", dev->name, drvName);
ret = 0;
goto cleanup;
}
+
VIR_DEBUG("Resetting device %s", dev->name);
if ((fd = virPCIDeviceConfigOpenWrite(dev)) < 0)
diff --git a/src/util/virpci.h b/src/util/virpci.h
index 4d9193f24e..0532b90f90 100644
--- a/src/util/virpci.h
+++ b/src/util/virpci.h
@@ -280,6 +280,9 @@ int virPCIDeviceRebind(virPCIDevice *dev);
int virPCIDeviceGetDriverPathAndName(virPCIDevice *dev,
char **path,
char **name);
+int virPCIDeviceGetDriverNameAndType(virPCIDevice *dev,
+ char **drvName,
+ virPCIStubDriver *drvType);
int virPCIDeviceIsPCIExpress(virPCIDevice *dev);
int virPCIDeviceHasPCIExpressLink(virPCIDevice *dev);
--
2.37.1
5
13
[PATCH 0/7] qemu: Don't use deprecated '-no-acpi' and RFC: fix ACPI config for machine types not supporting ACPI
by Peter Krempa 26 May '23
by Peter Krempa 26 May '23
26 May '23
The first part of the series is a straightforward replacement of
'-no-acpi' by '-machine acpi=on/off' based on configuration.
'-no-acpi' was recently deprecated by qemu thus we must adapt.
The second part of this series fixes the use of ACPI (or lack thereof)
for ARM machine types which don't support ACPI. We'll break such
commandline by adding '-no-acpi' due to historical baggage.
The second part is RFC as it's based on a qemu patch I'll be posting
along this series. This posting will also illustrate to qemu devs how
libvirt itends to use the added information.
I'll post the link to the qemu patch once I submit it.
Peter Krempa (7):
qemu: capabilities: Introduce QEMU_CAPS_MACHINE_ACPI
qemu: Use '-machine acpi=on/off' instead of deprecated '-no-acpi'
qemu: capabilities: Refactor XML parsing in virQEMUCapsLoadMachines
RFC BELOW:
qemu: capabilities: Extract whether machine type supports ACPI
qemu: capabilities: Introduce virQEMUCapsMachineSupportsACPI
XXX: tests: qemucapabilitiesdata: Regenerate with support for 'acpi'
in 'query-machines'
qemu: command: Don't format '-machine acpi=off' for machine types not
supporting ACPI
src/qemu/qemu_capabilities.c | 89 ++--
src/qemu/qemu_capabilities.h | 4 +
src/qemu/qemu_capspriv.h | 3 +-
src/qemu/qemu_command.c | 51 ++
src/qemu/qemu_monitor.h | 1 +
src/qemu/qemu_monitor_json.c | 12 +
.../caps_4.2.0.x86_64.xml | 2 +-
.../caps_5.0.0.x86_64.xml | 2 +-
.../caps_5.1.0.x86_64.xml | 2 +-
.../caps_5.2.0.x86_64.xml | 2 +-
.../caps_6.0.0.x86_64.xml | 2 +-
.../caps_6.1.0.x86_64.xml | 2 +-
.../caps_6.2.0.aarch64.xml | 2 +-
.../qemucapabilitiesdata/caps_6.2.0.ppc64.xml | 1 +
.../caps_6.2.0.x86_64.xml | 2 +-
.../caps_7.0.0.aarch64.xml | 2 +-
.../qemucapabilitiesdata/caps_7.0.0.ppc64.xml | 1 +
.../caps_7.0.0.x86_64.xml | 2 +-
.../qemucapabilitiesdata/caps_7.1.0.ppc64.xml | 1 +
.../caps_7.1.0.x86_64.xml | 2 +-
.../caps_7.2.0.x86_64.xml | 2 +-
.../caps_8.0.0.x86_64.replies | 471 ++++++++++++------
.../caps_8.0.0.x86_64.xml | 244 ++++-----
...fault-cpu-kvm-virt-4.2.aarch64-latest.args | 3 +-
...fault-cpu-tcg-virt-4.2.aarch64-latest.args | 3 +-
.../aarch64-features-sve.aarch64-latest.args | 3 +-
.../aarch64-tpm.aarch64-latest.args | 3 +-
.../aarch64-virt-graphics.aarch64-latest.args | 2 +-
.../aarch64-virt-headless.aarch64-latest.args | 2 +-
...h64-virtio-pci-default.aarch64-latest.args | 3 +-
.../audio-alsa-best.x86_64-latest.args | 3 +-
.../audio-alsa-full.x86_64-latest.args | 3 +-
.../audio-alsa-minimal.x86_64-latest.args | 3 +-
.../audio-coreaudio-best.x86_64-latest.args | 3 +-
.../audio-coreaudio-full.x86_64-latest.args | 3 +-
...audio-coreaudio-minimal.x86_64-latest.args | 3 +-
...udio-default-nographics.x86_64-latest.args | 3 +-
.../audio-default-sdl.x86_64-latest.args | 3 +-
.../audio-default-spice.x86_64-latest.args | 3 +-
.../audio-default-vnc.x86_64-latest.args | 3 +-
.../audio-file-best.x86_64-latest.args | 3 +-
.../audio-file-full.x86_64-latest.args | 3 +-
.../audio-file-minimal.x86_64-latest.args | 3 +-
.../audio-jack-full.x86_64-latest.args | 3 +-
.../audio-jack-minimal.x86_64-latest.args | 3 +-
.../audio-many-backends.x86_64-latest.args | 3 +-
.../audio-none-best.x86_64-latest.args | 3 +-
.../audio-none-full.x86_64-latest.args | 3 +-
.../audio-none-minimal.x86_64-latest.args | 3 +-
.../audio-oss-best.x86_64-latest.args | 3 +-
.../audio-oss-full.x86_64-latest.args | 3 +-
.../audio-oss-minimal.x86_64-latest.args | 3 +-
.../audio-pulseaudio-best.x86_64-latest.args | 3 +-
.../audio-pulseaudio-full.x86_64-latest.args | 3 +-
...udio-pulseaudio-minimal.x86_64-latest.args | 3 +-
.../audio-sdl-best.x86_64-latest.args | 3 +-
.../audio-sdl-full.x86_64-latest.args | 3 +-
.../audio-sdl-minimal.x86_64-latest.args | 3 +-
.../audio-spice-best.x86_64-latest.args | 3 +-
.../audio-spice-full.x86_64-latest.args | 3 +-
.../audio-spice-minimal.x86_64-latest.args | 3 +-
.../blkdeviotune-group-num.x86_64-latest.args | 3 +-
...blkdeviotune-max-length.x86_64-latest.args | 3 +-
.../blkdeviotune-max.x86_64-latest.args | 3 +-
.../blkdeviotune.x86_64-latest.args | 3 +-
.../boot-cdrom.x86_64-latest.args | 3 +-
.../boot-complex.x86_64-latest.args | 3 +-
.../boot-floppy-q35.x86_64-latest.args | 3 +-
.../boot-floppy.x86_64-latest.args | 3 +-
...boot-menu-disable-drive.x86_64-latest.args | 3 +-
.../boot-menu-disable.x86_64-latest.args | 3 +-
...enu-enable-with-timeout.x86_64-latest.args | 3 +-
.../boot-menu-enable.x86_64-latest.args | 3 +-
.../boot-multi.x86_64-latest.args | 3 +-
.../boot-network.x86_64-latest.args | 3 +-
.../boot-order.x86_64-latest.args | 3 +-
...l-qemu-vdagent-features.x86_64-latest.args | 3 +-
.../channel-qemu-vdagent.x86_64-latest.args | 3 +-
.../channel-unix-guestfwd.x86_64-latest.args | 3 +-
.../clock-absolute.x86_64-latest.args | 3 +-
.../clock-timer-armvtimer.aarch64-latest.args | 3 +-
.../console-compat-auto.x86_64-latest.args | 3 +-
.../console-compat-chardev.x86_64-latest.args | 3 +-
.../console-compat.x86_64-latest.args | 3 +-
.../console-virtio-unix.x86_64-latest.args | 3 +-
.../controller-usb-order.x86_64-latest.args | 3 +-
.../controller-virtio-scsi.x86_64-latest.args | 3 +-
...-Icelake-Server-pconfig.x86_64-latest.args | 3 +-
.../cpu-eoi-disabled.x86_64-latest.args | 2 +-
.../cpu-eoi-enabled.x86_64-latest.args | 2 +-
.../cpu-host-model.x86_64-4.2.0.args | 3 +-
.../cpu-host-model.x86_64-5.0.0.args | 3 +-
.../cpu-host-model.x86_64-5.1.0.args | 3 +-
.../cpu-host-model.x86_64-5.2.0.args | 3 +-
.../cpu-host-model.x86_64-6.0.0.args | 3 +-
.../cpu-host-model.x86_64-6.1.0.args | 3 +-
.../cpu-host-model.x86_64-latest.args | 3 +-
.../cpu-translation.x86_64-latest.args | 3 +-
.../cputune-cpuset-big-id.x86_64-latest.args | 3 +-
.../crypto-builtin.x86_64-latest.args | 3 +-
...ult-video-type-aarch64.aarch64-latest.args | 3 +-
...default-video-type-ppc64.ppc64-latest.args | 2 +-
.../devices-acpi-index.x86_64-latest.args | 2 +-
.../disk-aio-io_uring.x86_64-latest.args | 3 +-
.../disk-aio.x86_64-latest.args | 3 +-
.../disk-arm-virtio-sd.aarch64-latest.args | 3 +-
...-backing-chains-noindex.x86_64-latest.args | 3 +-
.../disk-blockio.x86_64-latest.args | 3 +-
.../disk-boot-cdrom.x86_64-latest.args | 3 +-
.../disk-boot-disk.x86_64-latest.args | 3 +-
.../disk-cache.x86_64-latest.args | 3 +-
.../disk-cdrom-bus-other.x86_64-latest.args | 3 +-
...m-empty-network-invalid.x86_64-latest.args | 3 +-
.../disk-cdrom-network.x86_64-latest.args | 2 +-
.../disk-cdrom-tray.x86_64-latest.args | 3 +-
.../disk-cdrom.x86_64-latest.args | 3 +-
.../disk-copy_on_read.x86_64-latest.args | 3 +-
.../disk-detect-zeroes.x86_64-latest.args | 3 +-
.../disk-discard.x86_64-latest.args | 3 +-
.../disk-error-policy.x86_64-latest.args | 3 +-
.../disk-floppy-q35.x86_64-latest.args | 3 +-
.../disk-floppy-tray.x86_64-latest.args | 3 +-
.../disk-floppy.x86_64-latest.args | 3 +-
.../disk-fmt-qcow.x86_64-latest.args | 3 +-
.../disk-geometry.x86_64-latest.args | 3 +-
.../disk-ide-split.x86_64-latest.args | 3 +-
.../disk-ide-wwn.x86_64-latest.args | 3 +-
.../disk-ioeventfd.x86_64-latest.args | 3 +-
.../disk-metadata-cache.x86_64-latest.args | 3 +-
.../disk-network-gluster.x86_64-latest.args | 3 +-
.../disk-network-http.x86_64-latest.args | 3 +-
.../disk-network-iscsi.x86_64-latest.args | 3 +-
.../disk-network-nbd.x86_64-latest.args | 3 +-
.../disk-network-nfs.x86_64-latest.args | 3 +-
...-network-rbd-encryption.x86_64-latest.args | 3 +-
...sk-network-rbd-no-colon.x86_64-latest.args | 3 +-
.../disk-network-rbd.x86_64-latest.args | 3 +-
.../disk-network-sheepdog.x86_64-6.0.0.args | 3 +-
...isk-network-source-auth.x86_64-latest.args | 3 +-
...rk-tlsx509-nbd-hostname.x86_64-latest.args | 3 +-
...disk-network-tlsx509-nbd.x86_64-5.2.0.args | 3 +-
...isk-network-tlsx509-nbd.x86_64-latest.args | 3 +-
...isk-network-tlsx509-vxhs.x86_64-5.0.0.args | 3 +-
.../disk-no-boot.x86_64-latest.args | 3 +-
.../disk-nvme.x86_64-latest.args | 3 +-
.../disk-order.x86_64-latest.args | 3 +-
.../disk-readonly-disk.x86_64-latest.args | 3 +-
.../disk-rotation.x86_64-latest.args | 3 +-
.../disk-sata-device.x86_64-latest.args | 3 +-
.../disk-scsi-device-auto.x86_64-latest.args | 3 +-
.../disk-scsi-disk-split.x86_64-latest.args | 3 +-
.../disk-scsi-disk-vpd.x86_64-latest.args | 3 +-
.../disk-scsi-disk-wwn.x86_64-latest.args | 3 +-
...sk-scsi-lun-passthrough.x86_64-latest.args | 3 +-
.../disk-scsi.x86_64-latest.args | 3 +-
.../disk-serial.x86_64-latest.args | 3 +-
.../disk-shared.x86_64-latest.args | 3 +-
.../disk-slices.x86_64-latest.args | 3 +-
.../disk-snapshot.x86_64-latest.args | 3 +-
.../disk-source-fd.x86_64-latest.args | 3 +-
.../disk-source-pool-mode.x86_64-latest.args | 3 +-
.../disk-source-pool.x86_64-latest.args | 3 +-
.../disk-transient.x86_64-latest.args | 3 +-
...sk-usb-device-removable.x86_64-latest.args | 3 +-
.../disk-usb-device.x86_64-latest.args | 3 +-
.../disk-vhostuser-numa.x86_64-4.2.0.args | 3 +-
.../disk-vhostuser-numa.x86_64-latest.args | 3 +-
.../disk-vhostuser.x86_64-latest.args | 3 +-
.../disk-virtio-queues.x86_64-latest.args | 3 +-
...virtio-scsi-reservations.x86_64-5.2.0.args | 3 +-
...irtio-scsi-reservations.x86_64-latest.args | 3 +-
.../disk-virtio.x86_64-latest.args | 3 +-
.../encrypted-disk-usage.x86_64-latest.args | 3 +-
.../encrypted-disk.x86_64-latest.args | 3 +-
.../eoi-disabled.x86_64-latest.args | 2 +-
.../eoi-enabled.x86_64-latest.args | 2 +-
.../event_idx.x86_64-latest.args | 3 +-
...d-memory-numa-topology4.x86_64-latest.args | 3 +-
.../fips-enabled.x86_64-5.1.0.args | 3 +-
.../fips-enabled.x86_64-latest.args | 3 +-
...are-auto-bios-stateless.x86_64-latest.args | 2 +-
.../firmware-auto-bios.x86_64-latest.args | 2 +-
...mware-auto-efi-aarch64.aarch64-latest.args | 2 +-
...-auto-efi-enrolled-keys.x86_64-latest.args | 2 +-
...-auto-efi-loader-secure.x86_64-latest.args | 2 +-
...to-efi-no-enrolled-keys.x86_64-latest.args | 2 +-
...are-auto-efi-no-secboot.x86_64-latest.args | 2 +-
...firmware-auto-efi-nvram.x86_64-latest.args | 2 +-
...rmware-auto-efi-secboot.x86_64-latest.args | 2 +-
...ware-auto-efi-stateless.x86_64-latest.args | 2 +-
.../firmware-auto-efi.x86_64-latest.args | 2 +-
...manual-bios-rw-implicit.x86_64-latest.args | 2 +-
...firmware-manual-bios-rw.x86_64-latest.args | 2 +-
...e-manual-efi-nvram-file.x86_64-latest.args | 2 +-
...efi-nvram-network-iscsi.x86_64-latest.args | 2 +-
...l-efi-nvram-network-nbd.x86_64-latest.args | 2 +-
...nual-efi-nvram-template.x86_64-latest.args | 2 +-
...re-manual-efi-stateless.x86_64-latest.args | 2 +-
.../floppy-drive-fat.x86_64-latest.args | 3 +-
.../qemuxml2argvdata/fs9p.x86_64-latest.args | 3 +-
.../genid-auto.x86_64-latest.args | 2 +-
.../qemuxml2argvdata/genid.x86_64-latest.args | 2 +-
...egl-headless-rendernode.x86_64-latest.args | 3 +-
.../graphics-egl-headless.x86_64-latest.args | 3 +-
...s-spice-agent-file-xfer.x86_64-latest.args | 3 +-
...aphics-spice-agentmouse.x86_64-latest.args | 3 +-
...s-spice-auto-socket-cfg.x86_64-latest.args | 3 +-
...phics-spice-auto-socket.x86_64-latest.args | 3 +-
...phics-spice-compression.x86_64-latest.args | 3 +-
...hics-spice-egl-headless.x86_64-latest.args | 3 +-
...pice-gl-auto-rendernode.x86_64-latest.args | 3 +-
.../graphics-spice-no-args.x86_64-latest.args | 3 +-
.../graphics-spice-qxl-vga.x86_64-latest.args | 3 +-
.../graphics-spice-sasl.x86_64-latest.args | 3 +-
.../graphics-spice-socket.x86_64-latest.args | 3 +-
.../graphics-spice-timeout.x86_64-latest.args | 2 +-
...raphics-spice-usb-redir.x86_64-latest.args | 3 +-
.../graphics-spice.x86_64-latest.args | 3 +-
...ics-vnc-auto-socket-cfg.x86_64-latest.args | 3 +-
...raphics-vnc-auto-socket.x86_64-latest.args | 3 +-
...aphics-vnc-egl-headless.x86_64-latest.args | 3 +-
...hics-vnc-no-listen-attr.x86_64-latest.args | 3 +-
.../graphics-vnc-none.x86_64-latest.args | 3 +-
.../graphics-vnc-policy.x86_64-latest.args | 3 +-
.../graphics-vnc-power.x86_64-latest.args | 3 +-
...remove-generated-socket.x86_64-latest.args | 3 +-
.../graphics-vnc-sasl.x86_64-latest.args | 3 +-
...-vnc-socket-new-cmdline.x86_64-latest.args | 3 +-
.../graphics-vnc-socket.x86_64-latest.args | 3 +-
.../graphics-vnc-tls-secret.x86_64-5.2.0.args | 3 +-
...graphics-vnc-tls-secret.x86_64-latest.args | 3 +-
.../graphics-vnc-tls.x86_64-latest.args | 3 +-
.../graphics-vnc-websocket.x86_64-latest.args | 3 +-
.../graphics-vnc.x86_64-latest.args | 3 +-
...tdev-mdev-display-ramfb.x86_64-latest.args | 3 +-
...play-spice-egl-headless.x86_64-latest.args | 3 +-
...ev-display-spice-opengl.x86_64-latest.args | 3 +-
...isplay-vnc-egl-headless.x86_64-latest.args | 3 +-
...ostdev-mdev-display-vnc.x86_64-latest.args | 3 +-
...tdev-pci-address-device.x86_64-latest.args | 3 +-
.../hostdev-pci-address.x86_64-latest.args | 3 +-
.../hostdev-scsi-lsi.x86_64-latest.args | 3 +-
...dev-scsi-vhost-scsi-pcie.x86_64-4.2.0.args | 3 +-
...ev-scsi-vhost-scsi-pcie.x86_64-latest.args | 3 +-
...ostdev-scsi-virtio-scsi.x86_64-latest.args | 3 +-
...usb-address-device-boot.x86_64-latest.args | 3 +-
...tdev-usb-address-device.x86_64-latest.args | 3 +-
.../hostdev-usb-address.x86_64-latest.args | 3 +-
.../hugepages-default-2M.x86_64-latest.args | 3 +-
...ges-default-system-size.x86_64-latest.args | 3 +-
.../hugepages-default.x86_64-latest.args | 3 +-
.../hugepages-memaccess.x86_64-latest.args | 3 +-
.../hugepages-memaccess2.x86_64-latest.args | 3 +-
.../hugepages-memaccess3.x86_64-latest.args | 3 +-
.../hugepages-nodeset.x86_64-latest.args | 3 +-
...gepages-numa-default-2M.x86_64-latest.args | 3 +-
...pages-numa-default-dimm.x86_64-latest.args | 3 +-
.../hugepages-numa-default.x86_64-latest.args | 3 +-
...pages-numa-nodeset-part.x86_64-latest.args | 3 +-
.../hugepages-numa-nodeset.x86_64-latest.args | 3 +-
.../hugepages-nvdimm.x86_64-latest.args | 3 +-
.../hugepages-shared.x86_64-latest.args | 3 +-
.../hyperv-off.x86_64-latest.args | 2 +-
.../hyperv-panic.x86_64-latest.args | 2 +-
.../hyperv-passthrough.x86_64-6.1.0.args | 2 +-
.../hyperv-passthrough.x86_64-latest.args | 2 +-
.../hyperv-stimer-direct.x86_64-latest.args | 2 +-
.../hyperv.x86_64-latest.args | 2 +-
.../input-linux.x86_64-latest.args | 3 +-
.../intel-iommu-aw-bits.x86_64-latest.args | 3 +-
...ntel-iommu-caching-mode.x86_64-latest.args | 3 +-
...ntel-iommu-device-iotlb.x86_64-latest.args | 3 +-
.../intel-iommu-eim.x86_64-latest.args | 3 +-
.../intel-iommu.x86_64-latest.args | 3 +-
.../iommu-smmuv3.aarch64-latest.args | 3 +-
...othreads-ids-pool-sizes.x86_64-latest.args | 3 +-
...othreads-virtio-scsi-pci.x86_64-5.2.0.args | 3 +-
...threads-virtio-scsi-pci.x86_64-latest.args | 3 +-
.../kvmclock+eoi-disabled.x86_64-latest.args | 2 +-
...nch-security-sev-direct.x86_64-latest.args | 3 +-
...ev-missing-platform-info.x86_64-6.0.0.args | 3 +-
.../launch-security-sev.x86_64-6.0.0.args | 3 +-
.../luks-disks-source-qcow2.x86_64-5.2.0.args | 3 +-
...luks-disks-source-qcow2.x86_64-latest.args | 3 +-
.../luks-disks-source.x86_64-latest.args | 3 +-
.../luks-disks.x86_64-latest.args | 3 +-
.../machine-smm-off.x86_64-latest.args | 3 +-
.../machine-smm-on.x86_64-latest.args | 3 +-
...memory-default-hugepage.x86_64-latest.args | 3 +-
.../memfd-memory-numa.x86_64-latest.args | 3 +-
...emory-hotplug-dimm-addr.x86_64-latest.args | 3 +-
...y-hotplug-nvdimm-access.x86_64-latest.args | 3 +-
...ory-hotplug-nvdimm-align.x86_64-5.2.0.args | 3 +-
...ry-hotplug-nvdimm-align.x86_64-latest.args | 3 +-
...ory-hotplug-nvdimm-label.x86_64-5.2.0.args | 3 +-
...ry-hotplug-nvdimm-label.x86_64-latest.args | 3 +-
...mory-hotplug-nvdimm-pmem.x86_64-5.2.0.args | 3 +-
...ory-hotplug-nvdimm-pmem.x86_64-latest.args | 3 +-
...-hotplug-nvdimm-readonly.x86_64-5.2.0.args | 3 +-
...hotplug-nvdimm-readonly.x86_64-latest.args | 3 +-
.../memory-hotplug-nvdimm.x86_64-latest.args | 3 +-
...mory-hotplug-virtio-mem.x86_64-latest.args | 3 +-
...mory-hotplug-virtio-pmem.x86_64-5.2.0.args | 3 +-
...ory-hotplug-virtio-pmem.x86_64-latest.args | 3 +-
.../misc-no-reboot.x86_64-5.2.0.args | 3 +-
.../misc-no-reboot.x86_64-latest.args | 3 +-
.../mlock-off.x86_64-latest.args | 3 +-
.../mlock-on.x86_64-latest.args | 3 +-
.../name-escape.x86_64-latest.args | 3 +-
.../net-user-passt.x86_64-7.2.0.args | 3 +-
.../net-user-passt.x86_64-latest.args | 3 +-
.../net-user.x86_64-latest.args | 3 +-
.../net-vdpa-multiqueue.x86_64-latest.args | 3 +-
.../net-vdpa.x86_64-latest.args | 3 +-
.../net-vhostuser.x86_64-latest.args | 3 +-
.../net-virtio-rss.x86_64-latest.args | 3 +-
.../numatune-hmat.x86_64-latest.args | 2 +-
...emnode-restrictive-mode.x86_64-latest.args | 3 +-
.../numatune-memnode.x86_64-5.2.0.args | 3 +-
.../numatune-memnode.x86_64-latest.args | 3 +-
.../numatune-system-memory.x86_64-latest.args | 3 +-
.../pages-dimm-discard.x86_64-latest.args | 3 +-
...pages-discard-hugepages.x86_64-latest.args | 3 +-
.../pages-discard.x86_64-latest.args | 3 +-
.../panic-double.x86_64-latest.args | 2 +-
.../panic-no-address.x86_64-latest.args | 3 +-
.../qemuxml2argvdata/panic.x86_64-latest.args | 3 +-
...arallel-parport-chardev.x86_64-latest.args | 3 +-
.../parallel-tcp-chardev.x86_64-latest.args | 3 +-
.../parallel-unix-chardev.x86_64-latest.args | 3 +-
...pi-root-hotplug-disable.x86_64-latest.args | 3 +-
...cpi-root-hotplug-enable.x86_64-latest.args | 3 +-
.../pci-serial-dev-chardev.x86_64-latest.args | 3 +-
...e-expander-bus-aarch64.aarch64-latest.args | 3 +-
...cie-root-port-nohotplug.x86_64-latest.args | 3 +-
...ault-cpu-kvm-pseries-2.7.ppc64-latest.args | 2 +-
...ault-cpu-kvm-pseries-3.1.ppc64-latest.args | 2 +-
...ault-cpu-kvm-pseries-4.2.ppc64-latest.args | 2 +-
...ault-cpu-tcg-pseries-2.7.ppc64-latest.args | 2 +-
...ault-cpu-tcg-pseries-3.1.ppc64-latest.args | 2 +-
...ault-cpu-tcg-pseries-4.2.ppc64-latest.args | 2 +-
.../ppc64-pseries-graphics.ppc64-latest.args | 2 +-
.../ppc64-pseries-headless.ppc64-latest.args | 2 +-
.../ppc64-tpmproxy-single.ppc64-latest.args | 2 +-
.../ppc64-tpmproxy-with-tpm.ppc64-latest.args | 2 +-
.../pseries-basic.ppc64-latest.args | 2 +-
.../pseries-console-virtio.ppc64-latest.args | 2 +-
...eries-cpu-compat-power10.ppc64-latest.args | 2 +-
...series-cpu-compat-power9.ppc64-latest.args | 2 +-
.../pseries-cpu-compat.ppc64-latest.args | 2 +-
.../pseries-cpu-exact.ppc64-latest.args | 2 +-
.../pseries-cpu-le.ppc64-latest.args | 2 +-
.../pseries-features.ppc64-latest.args | 2 +-
.../pseries-hostdevs-1.ppc64-latest.args | 2 +-
.../pseries-hostdevs-2.ppc64-latest.args | 2 +-
.../pseries-hostdevs-3.ppc64-latest.args | 2 +-
.../pseries-many-buses-1.ppc64-latest.args | 2 +-
.../pseries-many-buses-2.ppc64-latest.args | 2 +-
.../pseries-many-devices.ppc64-latest.args | 2 +-
.../pseries-nvram.ppc64-latest.args | 2 +-
.../pseries-panic-missing.ppc64-latest.args | 2 +-
...pseries-panic-no-address.ppc64-latest.args | 2 +-
...ries-phb-default-missing.ppc64-latest.args | 2 +-
.../pseries-phb-numa-node.ppc64-latest.args | 2 +-
.../pseries-phb-simple.ppc64-latest.args | 2 +-
.../pseries-serial-native.ppc64-latest.args | 2 +-
.../pseries-serial-pci.ppc64-latest.args | 2 +-
.../pseries-serial-usb.ppc64-latest.args | 2 +-
.../pseries-usb-default.ppc64-latest.args | 2 +-
.../pseries-usb-kbd.ppc64-latest.args | 2 +-
.../pseries-usb-multi.ppc64-latest.args | 2 +-
...series-vio-user-assigned.ppc64-latest.args | 2 +-
.../pseries-vio.ppc64-latest.args | 2 +-
.../pv-spinlock-disabled.x86_64-latest.args | 2 +-
.../pv-spinlock-enabled.x86_64-latest.args | 2 +-
.../pvpanic-pci-aarch64.aarch64-latest.args | 2 +-
...pci-no-address-aarch64.aarch64-latest.args | 2 +-
.../pvpanic-pci-x86_64.x86_64-latest.args | 3 +-
...q35-default-devices-only.x86_64-4.2.0.args | 3 +-
...35-default-devices-only.x86_64-latest.args | 3 +-
.../q35-multifunction.x86_64-4.2.0.args | 3 +-
.../q35-multifunction.x86_64-latest.args | 3 +-
.../q35-pcie-autoadd.x86_64-4.2.0.args | 3 +-
.../q35-pcie-autoadd.x86_64-latest.args | 3 +-
.../q35-pcie.x86_64-4.2.0.args | 3 +-
.../q35-pcie.x86_64-latest.args | 3 +-
.../q35-virt-manager-basic.x86_64-4.2.0.args | 2 +-
.../q35-virt-manager-basic.x86_64-latest.args | 2 +-
.../qemu-ns.x86_64-latest.args | 3 +-
.../serial-debugcon.x86_64-latest.args | 3 +-
...rial-dev-chardev-iobase.x86_64-latest.args | 3 +-
.../serial-dev-chardev.x86_64-latest.args | 3 +-
.../serial-file-chardev.x86_64-latest.args | 3 +-
.../serial-file-log.x86_64-latest.args | 3 +-
.../serial-many-chardev.x86_64-latest.args | 3 +-
.../serial-pty-chardev.x86_64-latest.args | 3 +-
.../serial-spiceport.x86_64-latest.args | 3 +-
.../serial-tcp-chardev.x86_64-latest.args | 3 +-
...rial-tcp-telnet-chardev.x86_64-latest.args | 3 +-
...p-tlsx509-chardev-notls.x86_64-latest.args | 3 +-
...-tlsx509-chardev-verify.x86_64-latest.args | 3 +-
...ial-tcp-tlsx509-chardev.x86_64-latest.args | 3 +-
...-tlsx509-secret-chardev.x86_64-latest.args | 3 +-
.../serial-udp-chardev.x86_64-latest.args | 3 +-
.../serial-unix-chardev.x86_64-latest.args | 3 +-
.../serial-vc-chardev.x86_64-latest.args | 3 +-
.../sgx-epc.x86_64-7.0.0.args | 3 +-
...rtcard-passthrough-unix.x86_64-latest.args | 3 +-
.../tpm-emulator-spapr.ppc64-latest.args | 2 +-
.../tpm-emulator-tpm2-enc.x86_64-latest.args | 2 +-
...pm-emulator-tpm2-pstate.x86_64-latest.args | 2 +-
.../tpm-emulator-tpm2.x86_64-latest.args | 2 +-
.../tpm-emulator.x86_64-latest.args | 2 +-
.../tpm-external.x86_64-latest.args | 2 +-
.../tpm-passthrough-crb.x86_64-latest.args | 2 +-
.../tpm-passthrough.x86_64-latest.args | 2 +-
.../tseg-explicit-size.x86_64-latest.args | 3 +-
.../usb-redir-unix.x86_64-latest.args | 3 +-
.../user-aliases-usb.x86_64-latest.args | 2 +-
.../user-aliases.x86_64-latest.args | 2 +-
.../user-aliases2.x86_64-latest.args | 3 +-
...vhost-user-fs-fd-memory.x86_64-latest.args | 3 +-
...vhost-user-fs-hugepages.x86_64-latest.args | 2 +-
...host-user-gpu-secondary.x86_64-latest.args | 3 +-
.../vhost-user-vga.x86_64-latest.args | 3 +-
.../vhost-vsock-auto.x86_64-latest.args | 3 +-
.../vhost-vsock.x86_64-latest.args | 3 +-
...eo-bochs-display-device.x86_64-latest.args | 3 +-
...video-qxl-device-vram64.x86_64-latest.args | 3 +-
...o-qxl-sec-device-vram64.x86_64-latest.args | 3 +-
...eo-ramfb-display-device.x86_64-latest.args | 3 +-
...video-virtio-vga-gpu-gl.x86_64-latest.args | 3 +-
.../virtio-9p-createmode.x86_64-latest.args | 3 +-
.../virtio-9p-multidevs.x86_64-latest.args | 3 +-
.../virtio-iommu-aarch64.aarch64-latest.args | 2 +-
.../virtio-iommu-x86_64.x86_64-latest.args | 2 +-
.../virtio-lun.x86_64-latest.args | 3 +-
...virtio-non-transitional.x86_64-latest.args | 3 +-
...-options-controller-ats.x86_64-latest.args | 3 +-
...ptions-controller-iommu.x86_64-latest.args | 3 +-
...tions-controller-packed.x86_64-latest.args | 3 +-
...virtio-options-disk-ats.x86_64-latest.args | 3 +-
...rtio-options-disk-iommu.x86_64-latest.args | 3 +-
...tio-options-disk-packed.x86_64-latest.args | 3 +-
.../virtio-options-fs-ats.x86_64-latest.args | 3 +-
...virtio-options-fs-iommu.x86_64-latest.args | 3 +-
...irtio-options-fs-packed.x86_64-latest.args | 3 +-
...irtio-options-input-ats.x86_64-latest.args | 3 +-
...tio-options-input-iommu.x86_64-latest.args | 3 +-
...io-options-input-packed.x86_64-latest.args | 3 +-
...-options-memballoon-ats.x86_64-latest.args | 3 +-
...loon-freepage-reporting.x86_64-latest.args | 3 +-
...ptions-memballoon-iommu.x86_64-latest.args | 3 +-
...tions-memballoon-packed.x86_64-latest.args | 3 +-
.../virtio-options-net-ats.x86_64-latest.args | 3 +-
...irtio-options-net-iommu.x86_64-latest.args | 3 +-
...rtio-options-net-packed.x86_64-latest.args | 3 +-
.../virtio-options-rng-ats.x86_64-latest.args | 3 +-
...irtio-options-rng-iommu.x86_64-latest.args | 3 +-
...rtio-options-rng-packed.x86_64-latest.args | 3 +-
...irtio-options-video-ats.x86_64-latest.args | 3 +-
...tio-options-video-iommu.x86_64-latest.args | 3 +-
...io-options-video-packed.x86_64-latest.args | 3 +-
.../virtio-options.x86_64-latest.args | 3 +-
.../virtio-rng-builtin.x86_64-5.2.0.args | 3 +-
.../virtio-rng-builtin.x86_64-latest.args | 3 +-
.../virtio-rng-egd-unix.x86_64-5.2.0.args | 3 +-
.../virtio-rng-egd-unix.x86_64-latest.args | 3 +-
.../virtio-transitional.x86_64-latest.args | 3 +-
.../watchdog-device.x86_64-latest.args | 3 +-
.../watchdog-dump.x86_64-latest.args | 3 +-
.../watchdog-injectnmi.x86_64-latest.args | 3 +-
.../watchdog-q35-multiple.x86_64-latest.args | 3 +-
.../watchdog.x86_64-latest.args | 3 +-
.../x86-kvm-32-on-64.x86_64-latest.args | 3 +-
...-default-cpu-kvm-pc-4.2.x86_64-latest.args | 2 +-
...default-cpu-kvm-q35-4.2.x86_64-latest.args | 2 +-
...efault-cpu-tcg-features.x86_64-latest.args | 2 +-
...-default-cpu-tcg-pc-4.2.x86_64-latest.args | 2 +-
...default-cpu-tcg-q35-4.2.x86_64-latest.args | 2 +-
.../x86_64-pc-graphics.x86_64-latest.args | 2 +-
.../x86_64-pc-headless.x86_64-latest.args | 2 +-
.../x86_64-q35-graphics.x86_64-latest.args | 2 +-
.../x86_64-q35-headless.x86_64-latest.args | 2 +-
tests/testutilsqemu.c | 9 +-
485 files changed, 1044 insertions(+), 1145 deletions(-)
--
2.39.2
6
18
18 May '23
Add compress method zlib and zstd for parallel migration and new
migration options to set qemu's parameter related with parallel
migration(multifd-compression, multifd-zlib-level and multifd-zstd-level).
These parameters has been supported by QEMU since 5.0.
v3 of:
https://listman.redhat.com/archives/libvir-list/2023-February/237604.html
diff to v2:
* merge the processing of new method into 'qemuMigrationParamsSetCompression'
* improve descriptions for the new options.
Jiang Jiacheng (3):
Add public API for parallel compression method
virsh: Add migrate options to set parallel compress level
qemu: support set parallel migration compression method
docs/manpages/virsh.rst | 29 ++++++++----
include/libvirt/libvirt-domain.h | 30 ++++++++++--
src/qemu/qemu_migration.h | 2 +
src/qemu/qemu_migration_params.c | 80 +++++++++++++++++++++++++++++++-
src/qemu/qemu_migration_params.h | 3 ++
tools/virsh-domain.c | 26 +++++++++++
6 files changed, 156 insertions(+), 14 deletions(-)
--
2.33.0
2
12
06 Apr '23
Testing 32-bit host OS support takes a lot of precious time during the QEMU
contiguous integration tests, and considering that many OS vendors stopped
shipping 32-bit variants of their OS distributions and most hardware from
the past >10 years is capable of 64-bit, keeping the 32-bit support alive
is an inadequate burden for the QEMU project. Let's mark the 32-bit
support as deprecated so we can drop it after a while - this will help
us to cut down our limited CI minutes in the gitlab CI, for example.
Signed-off-by: Thomas Huth <thuth(a)redhat.com>
---
docs/about/deprecated.rst | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 9f1bbc495d..ce6463e72b 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -181,9 +181,20 @@ As Debian 10 ("Buster") moved into LTS the big endian 32 bit version of
MIPS moved out of support making it hard to maintain our
cross-compilation CI tests of the architecture. As we no longer have
CI coverage support may bitrot away before the deprecation process
-completes. The little endian variants of MIPS (both 32 and 64 bit) are
+completes. The little endian variants of MIPS are
still a supported host architecture.
+32-bit host operating systems (since 8.0)
+'''''''''''''''''''''''''''''''''''''''''
+
+Testing 32-bit host OS support takes a lot of precious time during the QEMU
+contiguous integration tests, and considering that many OS vendors stopped
+shipping 32-bit variants of their OS distributions and most hardware from
+the past >10 years is capable of 64-bit, keeping the 32-bit support alive
+is an inadequate burden for the QEMU project. Thus QEMU will soon drop the
+support for 32-bit host systems.
+
+
QEMU API (QAPI) events
----------------------
--
2.31.1
16
44
libxl added support for specifying custom firmware paths long ago. This series
adds support to the libxl driver and the XML to xl.cfg config converter.
Jim Fehlig (2):
libxl: Support specifying a custom firmware path
libxl: Add support for custom firmware path in config converter
src/libxl/libxl_conf.c | 14 ++--
src/libxl/xen_xl.c | 19 +++--
tests/libxlxml2domconfigdata/efi-hvm.json | 91 +++++++++++++++++++++++
tests/libxlxml2domconfigdata/efi-hvm.xml | 36 +++++++++
tests/libxlxml2domconfigtest.c | 1 +
tests/xlconfigdata/test-fullvirt-ovmf.cfg | 1 +
tests/xlconfigdata/test-fullvirt-ovmf.xml | 2 +-
7 files changed, 150 insertions(+), 14 deletions(-)
create mode 100644 tests/libxlxml2domconfigdata/efi-hvm.json
create mode 100644 tests/libxlxml2domconfigdata/efi-hvm.xml
--
2.39.1
3
5
[PATCH] virnettlscontext: allow client/server cert chains
by matoro_mailinglist_libvirtï¼ matoro.tk 23 Mar '23
by matoro_mailinglist_libvirtï¼ matoro.tk 23 Mar '23
23 Mar '23
From: matoro <11910244-matoro3(a)users.noreply.gitlab.com>
The existing implementation assumes that client/server certificates are
single individual certificates. If using publicly-issued certificates,
or internal CAs that use an intermediate issuer, this is unlikely to be
the case, and they will instead be certificate chains. While this can
be worked around by moving the intermediate certificates to the CA
certificate, which DOES currently support multiple certificates, this
instead allows the issued certificate chains to be used as-is, without
requiring the overhead of shuffling certificates around.
See: https://gitlab.com/libvirt/libvirt/-/merge_requests/222
Signed-off-by: matoro <matoro_github(a)matoro.tk>
---
src/rpc/virnettlscontext.c | 97 +++++++++++++-----------------------
tests/virnettlscontexttest.c | 72 +++++++++++++++++++++++++-
2 files changed, 104 insertions(+), 65 deletions(-)
diff --git a/src/rpc/virnettlscontext.c b/src/rpc/virnettlscontext.c
index cfd26f0701..78b4b0f187 100644
--- a/src/rpc/virnettlscontext.c
+++ b/src/rpc/virnettlscontext.c
@@ -424,7 +424,8 @@ static int virNetTLSContextCheckCert(gnutls_x509_crt_t cert,
}
-static int virNetTLSContextCheckCertPair(gnutls_x509_crt_t cert,
+static int virNetTLSContextCheckCertPair(gnutls_x509_crt_t *certs,
+ size_t ncerts,
const char *certFile,
gnutls_x509_crt_t *cacerts,
size_t ncacerts,
@@ -433,7 +434,7 @@ static int virNetTLSContextCheckCertPair(gnutls_x509_crt_t cert,
{
unsigned int status;
- if (gnutls_x509_crt_list_verify(&cert, 1,
+ if (gnutls_x509_crt_list_verify(certs, ncerts,
cacerts, ncacerts,
NULL, 0,
0, &status) < 0) {
@@ -469,57 +470,18 @@ static int virNetTLSContextCheckCertPair(gnutls_x509_crt_t cert,
}
-static gnutls_x509_crt_t virNetTLSContextLoadCertFromFile(const char *certFile,
- bool isServer)
-{
- gnutls_datum_t data;
- gnutls_x509_crt_t cert = NULL;
- g_autofree char *buf = NULL;
- int ret = -1;
-
- VIR_DEBUG("isServer %d certFile %s",
- isServer, certFile);
-
- if (gnutls_x509_crt_init(&cert) < 0) {
- virReportError(VIR_ERR_SYSTEM_ERROR, "%s",
- _("Unable to initialize certificate"));
- goto cleanup;
- }
-
- if (virFileReadAll(certFile, (1<<16), &buf) < 0)
- goto cleanup;
-
- data.data = (unsigned char *)buf;
- data.size = strlen(buf);
-
- if (gnutls_x509_crt_import(cert, &data, GNUTLS_X509_FMT_PEM) < 0) {
- virReportError(VIR_ERR_SYSTEM_ERROR, isServer ?
- _("Unable to import server certificate %s") :
- _("Unable to import client certificate %s"),
- certFile);
- goto cleanup;
- }
-
- ret = 0;
-
- cleanup:
- if (ret != 0) {
- g_clear_pointer(&cert, gnutls_x509_crt_deinit);
- }
- return cert;
-}
-
-
-static int virNetTLSContextLoadCACertListFromFile(const char *certFile,
- gnutls_x509_crt_t *certs,
- unsigned int certMax,
- size_t *ncerts)
+static int virNetTLSContextLoadCertListFromFile(const char *certFile,
+ gnutls_x509_crt_t *certs,
+ unsigned int certMax,
+ size_t *ncerts,
+ bool isServer,
+ bool isCA)
{
gnutls_datum_t data;
g_autofree char *buf = NULL;
*ncerts = 0;
- VIR_DEBUG("certFile %s", certFile);
+ VIR_DEBUG("isCA %d isServer %d certFile %s", isCA, isServer, certFile);
if (virFileReadAll(certFile, (1<<16), &buf) < 0)
return -1;
@@ -527,9 +489,13 @@ static int virNetTLSContextLoadCACertListFromFile(const char *certFile,
data.data = (unsigned char *)buf;
data.size = strlen(buf);
- if (gnutls_x509_crt_list_import(certs, &certMax, &data, GNUTLS_X509_FMT_PEM, 0) < 0) {
+ if (gnutls_x509_crt_list_import(certs, &certMax, &data, GNUTLS_X509_FMT_PEM,
+ isCA ? GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED :
+ GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED | GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED) < 0) {
virReportError(VIR_ERR_SYSTEM_ERROR,
- _("Unable to import CA certificate list %s"),
+ isCA ? _("Unable to import CA certificate list %s") :
+ (isServer ? _("Unable to import server certificate %s") :
+ _("Unable to import client certificate %s")),
certFile);
return -1;
}
@@ -539,44 +505,49 @@ static int virNetTLSContextLoadCACertListFromFile(const char *certFile,
}
-#define MAX_CERTS 16
+// Limited by frame size of 4096 bytes.
+// Typical system CA bundle contains 140-ish CAs.
+#define MAX_CERTS 200
static int virNetTLSContextSanityCheckCredentials(bool isServer,
const char *cacertFile,
const char *certFile)
{
- gnutls_x509_crt_t cert = NULL;
+ gnutls_x509_crt_t certs[MAX_CERTS];
gnutls_x509_crt_t cacerts[MAX_CERTS];
- size_t ncacerts = 0;
+ size_t ncerts = 0, ncacerts = 0;
size_t i;
int ret = -1;
+ memset(certs, 0, sizeof(certs));
memset(cacerts, 0, sizeof(cacerts));
if ((access(certFile, R_OK) == 0) &&
- !(cert = virNetTLSContextLoadCertFromFile(certFile, isServer)))
+ virNetTLSContextLoadCertListFromFile(certFile, certs,
+ MAX_CERTS, &ncerts, isServer, false) < 0)
goto cleanup;
if ((access(cacertFile, R_OK) == 0) &&
- virNetTLSContextLoadCACertListFromFile(cacertFile, cacerts,
- MAX_CERTS, &ncacerts) < 0)
+ virNetTLSContextLoadCertListFromFile(cacertFile, cacerts,
+ MAX_CERTS, &ncacerts, isServer, true) < 0)
goto cleanup;
- if (cert &&
- virNetTLSContextCheckCert(cert, certFile, isServer, false) < 0)
- goto cleanup;
+ for (i = 0; i < ncerts; i++) {
+ if (virNetTLSContextCheckCert(certs[i], certFile, isServer, (i != 0)) < 0)
+ goto cleanup;
+ }
for (i = 0; i < ncacerts; i++) {
if (virNetTLSContextCheckCert(cacerts[i], cacertFile, isServer, true) < 0)
goto cleanup;
}
- if (cert && ncacerts &&
- virNetTLSContextCheckCertPair(cert, certFile, cacerts, ncacerts, cacertFile, isServer) < 0)
+ if (ncerts && ncacerts &&
+ virNetTLSContextCheckCertPair(certs, ncerts, certFile, cacerts, ncacerts, cacertFile, isServer) < 0)
goto cleanup;
ret = 0;
cleanup:
- if (cert)
- gnutls_x509_crt_deinit(cert);
+ for (i = 0; i < ncerts; i++)
+ gnutls_x509_crt_deinit(certs[i]);
for (i = 0; i < ncacerts; i++)
gnutls_x509_crt_deinit(cacerts[i]);
return ret;
diff --git a/tests/virnettlscontexttest.c b/tests/virnettlscontexttest.c
index 2311524db8..918ff04134 100644
--- a/tests/virnettlscontexttest.c
+++ b/tests/virnettlscontexttest.c
@@ -517,6 +517,12 @@ mymain(void)
true, true, GNUTLS_KEY_KEY_CERT_SIGN,
false, false, NULL, NULL,
0, 0);
+ TLS_ROOT_REQ(someotherrootreq,
+ "UK", "some other random CA", NULL, NULL, NULL, NULL,
+ true, true, true,
+ true, true, GNUTLS_KEY_KEY_CERT_SIGN,
+ false, false, NULL, NULL,
+ 0, 0);
TLS_CERT_REQ(cacertlevel1areq, cacertrootreq,
"UK", "libvirt level 1a", NULL, NULL, NULL, NULL,
true, true, true,
@@ -555,15 +561,72 @@ mymain(void)
cacertlevel2areq.crt,
};
+ gnutls_x509_crt_t cabundle[] = {
+ someotherrootreq.crt,
+ cacertrootreq.crt,
+ };
+
+ gnutls_x509_crt_t servercertchain[] = {
+ servercertlevel3areq.crt,
+ cacertlevel2areq.crt,
+ cacertlevel1areq.crt,
+ };
+
+ gnutls_x509_crt_t servercertchain_incomplete[] = {
+ servercertlevel3areq.crt,
+ cacertlevel2areq.crt,
+ };
+
+ gnutls_x509_crt_t servercertchain_unsorted[] = {
+ servercertlevel3areq.crt,
+ cacertlevel1areq.crt,
+ cacertlevel2areq.crt,
+ };
+
+ gnutls_x509_crt_t clientcertchain[] = {
+ clientcertlevel2breq.crt,
+ cacertlevel1breq.crt,
+ };
+
testTLSWriteCertChain("cacertchain-ctx.pem",
certchain,
G_N_ELEMENTS(certchain));
- VIR_WARNINGS_RESET
-
DO_CTX_TEST(true, "cacertchain-ctx.pem", servercertlevel3areq.filename, false);
DO_CTX_TEST(false, "cacertchain-ctx.pem", clientcertlevel2breq.filename, false);
+ testTLSWriteCertChain("servercertchain-ctx.pem",
+ servercertchain,
+ G_N_ELEMENTS(servercertchain));
+
+ DO_CTX_TEST(true, cacertrootreq.filename, "servercertchain-ctx.pem", false);
+
+ testTLSWriteCertChain("cabundle-ctx.pem",
+ cabundle,
+ G_N_ELEMENTS(cabundle));
+
+ DO_CTX_TEST(true, "cabundle-ctx.pem", "servercertchain-ctx.pem", false);
+
+ testTLSWriteCertChain("servercertchain_incomplete-ctx.pem",
+ servercertchain_incomplete,
+ G_N_ELEMENTS(servercertchain_incomplete));
+
+ DO_CTX_TEST(true, cacertrootreq.filename, "servercertchain_incomplete-ctx.pem", true);
+
+ testTLSWriteCertChain("servercertchain_unsorted-ctx.pem",
+ servercertchain_unsorted,
+ G_N_ELEMENTS(servercertchain_unsorted));
+
+ DO_CTX_TEST(true, cacertrootreq.filename, "servercertchain_unsorted-ctx.pem", true);
+
+ testTLSWriteCertChain("clientcertchain-ctx.pem",
+ clientcertchain,
+ G_N_ELEMENTS(clientcertchain));
+
+ VIR_WARNINGS_RESET
+
+ DO_CTX_TEST(false, cacertrootreq.filename, "clientcertchain-ctx.pem", false);
+
DO_CTX_TEST(false, "cacertdoesnotexist.pem", "servercertdoesnotexist.pem", true);
testTLSDiscardCert(&cacertreq);
@@ -620,7 +683,12 @@ mymain(void)
testTLSDiscardCert(&cacertlevel2areq);
testTLSDiscardCert(&servercertlevel3areq);
testTLSDiscardCert(&clientcertlevel2breq);
+ testTLSDiscardCert(&someotherrootreq);
unlink("cacertchain-ctx.pem");
+ unlink("servercertchain-ctx.pem");
+ unlink("servercertchain_incomplete-ctx.pem");
+ unlink("servercertchain_unsorted-ctx.pem");
+ unlink("clientcertchain.pem");
testTLSCleanup(KEYFILE);
--
2.39.1
2
1
Internal disk snapshots are currently only supported on non-active VMs.
For RBD disks only, this patch series extends this support for active VMs running with qemu.
We also add the option to set a name for each RBD snapshot, and allow taking them alongside other external disk snapshots (mixing).
Deletion and reverting to snapshots containing RBD snapshots is not allowed, and is validated.
Note that taking RBD snapshots on a non-active VM is still unsupported.
Changes in v2:
- reduce patch to RBD use-case only (e.g. not including qcow2 internal snapshots)
- add validation to disallow RBD snapshots deletion / reverting
Or Ozeri (6):
conf: Add snapshotName attribute for internal disk snapshot
qemu: Block deletion and reverting on non-full internal snapshots
qemu: Add internal support for active disk internal snapshots
qemu: Allow active disk snapshots for RBD disks
qemu: Allow setting per-disk snapshot name for RBD disks
qemu: Allow mixing active internal and external active disk snapshots
docs/formatsnapshot.rst | 5 +
src/conf/schemas/domainsnapshot.rng | 4 +
src/conf/snapshot_conf.c | 56 ++++++++++
src/conf/snapshot_conf.h | 5 +
src/libvirt_private.syms | 1 +
src/qemu/qemu_monitor.c | 9 ++
src/qemu/qemu_monitor.h | 5 +
src/qemu/qemu_monitor_json.c | 14 +++
src/qemu/qemu_monitor_json.h | 5 +
src/qemu/qemu_snapshot.c | 105 ++++++++++++------
.../disk_snapshot.xml | 2 +-
.../disk_snapshot.xml | 2 +-
.../disk_snapshot_redefine.xml | 2 +-
tests/qemumonitorjsontest.c | 1 +
14 files changed, 181 insertions(+), 35 deletions(-)
--
2.25.1
3
14
[libvirt PATCH v3] qemu: implement QEMU NBD source reconnect delay attribute
by Christian Nautze 10 Mar '23
by Christian Nautze 10 Mar '23
10 Mar '23
Currently it's only possible to set this parameter during domain
creation via QEMU commandline passthrough feature.
With the new delay attribute it's also possible to set this
parameter if you want to attach a new NBD disk
using "virsh attach-device domain device.xml" e.g.:
<disk type='network' device='disk'>
<driver name='qemu' type='raw'/>
<source protocol='nbd' name='foo'>
<host name='example.org' port='6000'/>
<reconnect delay='10'/>
</source>
<target dev='vdb' bus='virtio'/>
</disk>
Signed-off-by: Christian Nautze <christian.nautze(a)exoscale.ch>
---
Changes: schema reconnect element: drop mandatory 'enabled' attribute when using 'delay'
reconnect element: use choice for attributes
---
docs/formatdomain.rst | 11 +++++++--
src/conf/domain_conf.c | 12 ++++++++++
src/conf/schemas/domaincommon.rng | 3 +++
src/conf/schemas/storagecommon.rng | 19 ++++++++++-----
src/conf/storage_source_conf.c | 1 +
src/conf/storage_source_conf.h | 4 ++++
src/qemu/qemu_block.c | 4 +++-
src/qemu/qemu_domain.c | 9 ++++++++
.../disk-network-nbd.x86_64-latest.args | 23 +++++++++++--------
tests/qemuxml2argvdata/disk-network-nbd.xml | 8 +++++++
tests/qemuxml2xmloutdata/disk-network-nbd.xml | 9 ++++++++
11 files changed, 84 insertions(+), 19 deletions(-)
diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
index 638768c18d..e4ea330a0d 100644
--- a/docs/formatdomain.rst
+++ b/docs/formatdomain.rst
@@ -2946,13 +2946,20 @@ paravirtualized driver is specified via the ``disk`` element.
are intended to be default, then the entire element may be omitted.
``reconnect``
For disk type ``vhostuser`` configures reconnect timeout if the connection
- is lost. It has two mandatory attributes:
+ is lost. This is set with the two mandatory attributes ``enabled`` and
+ ``timeout``.
+ For disk type ``network`` and protocol ``nbd`` the QEMU NBD reconnect delay
+ can be set via attribute ``delay``:
``enabled``
If the reconnect feature is enabled, accepts ``yes`` and ``no``
``timeout``
The amount of seconds after which hypervisor tries to reconnect.
-
+ ``delay``
+ Only for NBD hosts. The amount of seconds during which all requests are
+ paused and will be rerun after a successful reconnect. After that time, any
+ delayed requests and all future requests before a successful reconnect
+ will immediately fail. If not set the default QEMU value is 0.
For a "file" or "volume" disk type which represents a cdrom or floppy (the
``device`` attribute), it is possible to define policy what to do with the
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 84ffd93b7f..1e5c88e45d 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -7146,6 +7146,15 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
src->tlsFromConfig = !!value;
}
+ if (src->protocol == VIR_STORAGE_NET_PROTOCOL_NBD) {
+ xmlNodePtr cur;
+ if ((cur = virXPathNode("./reconnect", ctxt))) {
+ if (virXMLPropUInt(cur, "delay", 10, VIR_XML_PROP_NONE,
+ &src->reconnectDelay) < 0)
+ return -1;
+ }
+ }
+
/* for historical reasons we store the volume and image name in one XML
* element although it complicates thing when attempting to access them. */
if (src->path &&
@@ -22087,6 +22096,9 @@ virDomainDiskSourceFormatNetwork(virBuffer *attrBuf,
virBufferAddLit(childBuf, "/>\n");
}
+ if (src->reconnectDelay) {
+ virBufferAsprintf(childBuf, "<reconnect delay='%u'/>\n", src->reconnectDelay);
+ }
virBufferEscapeString(childBuf, "<snapshot name='%s'/>\n", src->snapshot);
virBufferEscapeString(childBuf, "<config file='%s'/>\n", src->configFile);
diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng
index ab4886b783..03aab6f7e5 100644
--- a/src/conf/schemas/domaincommon.rng
+++ b/src/conf/schemas/domaincommon.rng
@@ -2199,6 +2199,9 @@
</optional>
<ref name="diskSourceCommon"/>
<ref name="diskSourceNetworkHost"/>
+ <optional>
+ <ref name="reconnect"/>
+ </optional>
<optional>
<ref name="encryption"/>
</optional>
diff --git a/src/conf/schemas/storagecommon.rng b/src/conf/schemas/storagecommon.rng
index 4d6e646c9a..23eff9ecb1 100644
--- a/src/conf/schemas/storagecommon.rng
+++ b/src/conf/schemas/storagecommon.rng
@@ -55,14 +55,21 @@
<define name="reconnect">
<element name="reconnect">
- <attribute name="enabled">
- <ref name="virYesNo"/>
- </attribute>
- <optional>
- <attribute name="timeout">
+ <choice>
+ <group>
+ <attribute name="enabled">
+ <ref name="virYesNo"/>
+ </attribute>
+ <optional>
+ <attribute name="timeout">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </optional>
+ </group>
+ <attribute name="delay">
<ref name="unsignedInt"/>
</attribute>
- </optional>
+ </choice>
</element>
</define>
diff --git a/src/conf/storage_source_conf.c b/src/conf/storage_source_conf.c
index cecd7e811e..58009fd06e 100644
--- a/src/conf/storage_source_conf.c
+++ b/src/conf/storage_source_conf.c
@@ -811,6 +811,7 @@ virStorageSourceCopy(const virStorageSource *src,
def->sslverify = src->sslverify;
def->readahead = src->readahead;
def->timeout = src->timeout;
+ def->reconnectDelay = src->reconnectDelay;
def->metadataCacheMaxSize = src->metadataCacheMaxSize;
/* storage driver metadata are not copied */
diff --git a/src/conf/storage_source_conf.h b/src/conf/storage_source_conf.h
index 14a6825d54..c6187dda59 100644
--- a/src/conf/storage_source_conf.h
+++ b/src/conf/storage_source_conf.h
@@ -312,6 +312,10 @@ struct _virStorageSource {
unsigned long long readahead; /* size of the readahead buffer in bytes */
unsigned long long timeout; /* connection timeout in seconds */
+ /* NBD QEMU reconnect-delay option,
+ * 0 as default value */
+ unsigned int reconnectDelay;
+
virStorageSourceNVMeDef *nvme; /* type == VIR_STORAGE_TYPE_NVME */
virDomainChrSourceDef *vhostuser; /* type == VIR_STORAGE_TYPE_VHOST_USER */
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index 5e700eff99..8fcebd8992 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -529,6 +529,7 @@ qemuBlockStorageSourceGetNBDProps(virStorageSource *src,
"S:export", src->path,
"S:tls-creds", tlsAlias,
"S:tls-hostname", tlsHostname,
+ "p:reconnect-delay", src->reconnectDelay,
NULL) < 0)
return NULL;
@@ -1848,7 +1849,8 @@ qemuBlockGetBackingStoreString(virStorageSource *src,
src->ncookies == 0 &&
src->sslverify == VIR_TRISTATE_BOOL_ABSENT &&
src->timeout == 0 &&
- src->readahead == 0) {
+ src->readahead == 0 &&
+ src->reconnectDelay == 0) {
switch ((virStorageNetProtocol) src->protocol) {
case VIR_STORAGE_NET_PROTOCOL_NBD:
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 4cf9a259ea..1206d59f4a 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -5020,6 +5020,15 @@ qemuDomainValidateStorageSource(virStorageSource *src,
}
}
+ if (src->reconnectDelay > 0) {
+ if (actualType != VIR_STORAGE_TYPE_NETWORK ||
+ src->protocol != VIR_STORAGE_NET_PROTOCOL_NBD) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("reconnect delay is supported only with NBD protocol"));
+ return -1;
+ }
+ }
+
if (src->query &&
(actualType != VIR_STORAGE_TYPE_NETWORK ||
(src->protocol != VIR_STORAGE_NET_PROTOCOL_HTTPS &&
diff --git a/tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args b/tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args
index 21e619af3e..e8d13b0bd4 100644
--- a/tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args
@@ -28,21 +28,24 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
-no-acpi \
-boot strict=on \
-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
--blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"node-name":"libvirt-5-storage","auto-read-only":true,"discard":"unmap"}' \
+-blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"node-name":"libvirt-6-storage","auto-read-only":true,"discard":"unmap"}' \
+-blockdev '{"node-name":"libvirt-6-format","read-only":false,"driver":"raw","file":"libvirt-6-storage"}' \
+-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x2","drive":"libvirt-6-format","id":"virtio-disk0","bootindex":1}' \
+-blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"export":"bar","node-name":"libvirt-5-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-5-format","read-only":false,"driver":"raw","file":"libvirt-5-storage"}' \
--device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x2","drive":"libvirt-5-format","id":"virtio-disk0","bootindex":1}' \
--blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"export":"bar","node-name":"libvirt-4-storage","auto-read-only":true,"discard":"unmap"}' \
+-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x3","drive":"libvirt-5-format","id":"virtio-disk1"}' \
+-blockdev '{"driver":"nbd","server":{"type":"inet","host":"::1","port":"6000"},"node-name":"libvirt-4-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-4-format","read-only":false,"driver":"raw","file":"libvirt-4-storage"}' \
--device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x3","drive":"libvirt-4-format","id":"virtio-disk1"}' \
--blockdev '{"driver":"nbd","server":{"type":"inet","host":"::1","port":"6000"},"node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"}' \
+-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x4","drive":"libvirt-4-format","id":"virtio-disk2"}' \
+-blockdev '{"driver":"nbd","server":{"type":"inet","host":"::1","port":"6000"},"export":"bar","node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-3-format","read-only":false,"driver":"raw","file":"libvirt-3-storage"}' \
--device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x4","drive":"libvirt-3-format","id":"virtio-disk2"}' \
--blockdev '{"driver":"nbd","server":{"type":"inet","host":"::1","port":"6000"},"export":"bar","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \
+-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x5","drive":"libvirt-3-format","id":"virtio-disk3"}' \
+-blockdev '{"driver":"nbd","server":{"type":"unix","path":"/var/run/nbdsock"},"export":"bar","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"}' \
--device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x5","drive":"libvirt-2-format","id":"virtio-disk3"}' \
--blockdev '{"driver":"nbd","server":{"type":"unix","path":"/var/run/nbdsock"},"export":"bar","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x6","drive":"libvirt-2-format","id":"virtio-disk4"}' \
+-blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"export":"foo","reconnect-delay":10,"node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
--device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x6","drive":"libvirt-1-format","id":"virtio-disk4"}' \
+-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x7","drive":"libvirt-1-format","id":"virtio-disk5"}' \
-audiodev '{"id":"audio1","driver":"none"}' \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/disk-network-nbd.xml b/tests/qemuxml2argvdata/disk-network-nbd.xml
index 8ac6cc3b7b..4e8b1e5b03 100644
--- a/tests/qemuxml2argvdata/disk-network-nbd.xml
+++ b/tests/qemuxml2argvdata/disk-network-nbd.xml
@@ -49,6 +49,14 @@
</source>
<target dev='vde' bus='virtio'/>
</disk>
+ <disk type='network' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source protocol='nbd' name='foo'>
+ <host name='example.org' port='6000'/>
+ <reconnect delay='10'/>
+ </source>
+ <target dev='vdf' bus='virtio'/>
+ </disk>
<controller type='usb' index='0'/>
<controller type='ide' index='0'/>
<controller type='pci' index='0' model='pci-root'/>
diff --git a/tests/qemuxml2xmloutdata/disk-network-nbd.xml b/tests/qemuxml2xmloutdata/disk-network-nbd.xml
index f8dcca4bab..38d1f290c8 100644
--- a/tests/qemuxml2xmloutdata/disk-network-nbd.xml
+++ b/tests/qemuxml2xmloutdata/disk-network-nbd.xml
@@ -54,6 +54,15 @@
<target dev='vde' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
+ <disk type='network' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source protocol='nbd' name='foo'>
+ <host name='example.org' port='6000'/>
+ <reconnect delay='10'/>
+ </source>
+ <target dev='vdf' bus='virtio'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
+ </disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
--
2.34.1
2
2
07 Mar '23
This series implements fixes in the handling of passt's lifecycle.
v2: In 1/3, preserve the VM-specific MCS range by explicitly setting a
label, as suggested by Daniel, with a temporary workaround sketched
by Michal.
Stefano Brivio (3):
qemu_passt: Don't make passt transition to svirt_t/libvirt_domain on
start
qemu_passt: Set UID and GID to configured values for qemu driver, if
any
qemu_passt: Remove passt socket file on exit
src/qemu/qemu_passt.c | 46 +++++++++++++++++++++++++++++++++++--------
1 file changed, 38 insertions(+), 8 deletions(-)
--
2.39.1
6
25
[libvirt PATCH 00/33] qemu: Move firmware selection to postparse and add support for QCOW2 firmware
by Andrea Bolognani 03 Mar '23
by Andrea Bolognani 03 Mar '23
03 Mar '23
Motivation for these changes can be found in the commit message
for patch 20 ("qemu: Move firmware selection from startup to
postparse") as well as [RHBZ#2161965].
Patches 01-17 are preparatory fixes/improvements/cleanups.
Patches 19-20 move firmware selection from startup to postparse,
and patches 21-22 clean up a bit after that change. Patch 20 in
particular is significantly larger than I would have liked, but
I haven't been able to come up with a way to split it while
still preserving bisectability and making things clearer instead
of complicating them. If anyone has ideas in this regard, please
let me know!
Patches 23-27 add support for choosing a firmware format, but
are effectively no-op because formats other than raw are still
rejected at this point.
Patches 28-30 add support for QCOW2 format firmware in the QEMU
driver.
Patches 31-33 document the changes.
[RHBZ#2161965] https://bugzilla.redhat.com/show_bug.cgi?id=2161965
Andrea Bolognani (33):
docs: Fix documentation for loader.stateless attribute
tests: Set nvramDir in qemuxml2xmltest
tests: Rename firmware-manual-efi-rw* tests
tests: Use x86_64 for all x86 firmware tests
tests: Move firmware tests to CAPS_LATEST
tests: Unify input files for firmware tests
tests: Enable qemuxml2xml for more firmware tests
tests: Add more firmware tests
qemu: Introduce qemuDomainDefMachinePostParse()
qemu: Introduce qemuDomainDefBootPostParse()
conf: Introduce virDomainLoaderDefParseXMLLoader()
conf: introduce virDomainLoaderDefNew()
qemu: Add convenience local variables
qemu: Only fill nvramTemplate for local sources
qemu: Clear os.firmwareFeatures after autoselection
qemu: Don't pick firmware that requires SMM when smm=off
qemu: Don't pick firmware with unsupported format
tests: Add descriptors for QCOW2 format firmware builds
conf: Export virDomainDefOSValidate()
qemu: Move firmware selection from startup to postparse
qemu: Move qemuDomainNVRAMPathFormat() to qemu_firmware
qemu: Introduce qemuFirmwareEnsureNVRAM()
conf: Change handling for empty NVRAM path
conf: Parse firmware format
drivers: Reject unsupported firmware formats
qemu: Filter firmwares based on format
qemu: Propagate firmware format
conf: Accept QCOW2 firmware format
qemu: Add support for QCOW2 format firmware
tests: Add more firmware tests
docs: Document firmware format attribute
news: Document changes to firmware autoselection
news: Document support for QCOW2 format firmware
NEWS.rst | 16 +
docs/formatdomain.rst | 11 +-
src/bhyve/bhyve_firmware.c | 9 +-
src/conf/domain_conf.c | 123 ++++-
src/conf/domain_conf.h | 2 +
src/conf/domain_validate.c | 4 +-
src/conf/domain_validate.h | 3 +
src/conf/schemas/domaincommon.rng | 15 +
src/libvirt_private.syms | 2 +
src/libxl/libxl_conf.c | 9 +-
src/libxl/xen_xl.c | 4 +-
src/libxl/xen_xm.c | 2 +-
src/qemu/qemu_domain.c | 113 +++--
src/qemu/qemu_domain.h | 5 -
src/qemu/qemu_driver.c | 2 -
src/qemu/qemu_firmware.c | 460 +++++++++++++-----
src/qemu/qemu_firmware.h | 3 +-
src/qemu/qemu_process.c | 33 +-
.../share/qemu/firmware/65-ovmf-qcow2.json | 35 ++
.../share/qemu/firmware/66-aavmf-qcow2.json | 36 ++
tests/qemufirmwaretest.c | 11 +-
.../firmware-auto-bios-not-stateless.xml | 4 +-
.../firmware-auto-bios-nvram.xml | 6 +-
...are-auto-bios-stateless.x86_64-latest.args | 16 +-
.../firmware-auto-bios-stateless.xml | 4 +-
.../firmware-auto-bios.x86_64-latest.args | 16 +-
tests/qemuxml2argvdata/firmware-auto-bios.xml | 4 +-
...mware-auto-efi-aarch64.aarch64-latest.args | 22 +-
.../firmware-auto-efi-aarch64.xml | 4 +-
...ware-auto-efi-enrolled-keys-no-secboot.xml | 4 +-
...-auto-efi-enrolled-keys.x86_64-latest.args | 18 +-
.../firmware-auto-efi-enrolled-keys.xml | 4 +-
...fi-format-loader-qcow2.x86_64-latest.args} | 24 +-
...firmware-auto-efi-format-loader-qcow2.xml} | 6 +-
...efi-format-loader-raw.aarch64-latest.args} | 5 +-
...> firmware-auto-efi-format-loader-raw.xml} | 5 +-
...auto-efi-format-mismatch.x86_64-latest.err | 1 +
... => firmware-auto-efi-format-mismatch.xml} | 7 +-
...vram-qcow2-network-nbd.x86_64-latest.args} | 22 +-
...to-efi-format-nvram-qcow2-network-nbd.xml} | 11 +-
...ormat-nvram-qcow2-path.x86_64-latest.args} | 24 +-
...ware-auto-efi-format-nvram-qcow2-path.xml} | 6 +-
...efi-format-nvram-qcow2.x86_64-latest.args} | 24 +-
... firmware-auto-efi-format-nvram-qcow2.xml} | 6 +-
.../firmware-auto-efi-loader-insecure.xml | 4 +-
.../firmware-auto-efi-loader-path.xml | 4 +-
...-auto-efi-loader-secure.x86_64-latest.args | 18 +-
.../firmware-auto-efi-loader-secure.xml | 4 +-
...to-efi-no-enrolled-keys.x86_64-latest.args | 18 +-
.../firmware-auto-efi-no-enrolled-keys.xml | 4 +-
...are-auto-efi-no-secboot.x86_64-latest.args | 18 +-
.../firmware-auto-efi-no-secboot.xml | 4 +-
...re-auto-efi-nvram-file.x86_64-latest.args} | 13 +-
...5.xml => firmware-auto-efi-nvram-file.xml} | 9 +-
...fi-nvram-network-iscsi.x86_64-latest.args} | 16 +-
...firmware-auto-efi-nvram-network-iscsi.xml} | 9 +-
...-efi-nvram-network-nbd.x86_64-latest.args} | 16 +-
...> firmware-auto-efi-nvram-network-nbd.xml} | 9 +-
...firmware-auto-efi-nvram.x86_64-latest.args | 18 +-
.../firmware-auto-efi-nvram.xml | 6 +-
...rmware-auto-efi-secboot.x86_64-latest.args | 18 +-
.../firmware-auto-efi-secboot.xml | 4 +-
...mware-auto-efi-smm-off.x86_64-latest.args} | 17 +-
...-efi.xml => firmware-auto-efi-smm-off.xml} | 5 +-
...ware-auto-efi-stateless.x86_64-latest.args | 16 +-
.../firmware-auto-efi-stateless.xml | 4 +-
.../firmware-auto-efi.x86_64-latest.args | 18 +-
tests/qemuxml2argvdata/firmware-auto-efi.xml | 4 +-
...nual-bios-not-stateless.x86_64-latest.err} | 0
.../firmware-manual-bios-not-stateless.xml | 8 +-
.../firmware-manual-bios-stateless.args | 30 --
...-manual-bios-stateless.x86_64-latest.args} | 12 +-
.../firmware-manual-bios-stateless.xml | 8 +-
.../firmware-manual-bios.args | 30 --
...> firmware-manual-bios.x86_64-latest.args} | 12 +-
.../qemuxml2argvdata/firmware-manual-bios.xml | 8 +-
...nual-efi-acpi-aarch64.aarch64-latest.args} | 11 +-
.../firmware-manual-efi-acpi-aarch64.xml | 6 +-
...re-manual-efi-acpi-q35.x86_64-latest.args} | 11 +-
.../firmware-manual-efi-acpi-q35.xml | 6 +-
.../firmware-manual-efi-features.xml | 6 +-
...ware-manual-efi-no-path.x86_64-latest.err} | 0
.../firmware-manual-efi-no-path.xml | 6 +-
...al-efi-noacpi-aarch64.aarch64-latest.args} | 11 +-
.../firmware-manual-efi-noacpi-aarch64.xml | 6 +-
...e-manual-efi-noacpi-q35.x86_64-latest.err} | 0
.../firmware-manual-efi-noacpi-q35.xml | 6 +-
...e-manual-efi-nvram-file.x86_64-latest.args | 18 +-
.../firmware-manual-efi-nvram-file.xml | 8 +-
...efi-nvram-network-iscsi.x86_64-latest.args | 16 +-
...irmware-manual-efi-nvram-network-iscsi.xml | 6 +-
...l-efi-nvram-network-nbd.x86_64-latest.args | 16 +-
.../firmware-manual-efi-nvram-network-nbd.xml | 6 +-
.../firmware-manual-efi-nvram-stateless.xml | 8 +-
...re-manual-efi-nvram-template-stateless.xml | 6 +-
...nual-efi-nvram-template.x86_64-latest.args | 18 +-
.../firmware-manual-efi-nvram-template.xml | 6 +-
...manual-efi-rw-implicit.x86_64-latest.args} | 18 +-
...ml => firmware-manual-efi-rw-implicit.xml} | 8 +-
...firmware-manual-efi-rw.x86_64-latest.args} | 18 +-
...bios-rw.xml => firmware-manual-efi-rw.xml} | 8 +-
.../firmware-manual-efi-secure.args | 35 --
...ware-manual-efi-secure.x86_64-latest.args} | 20 +-
.../firmware-manual-efi-secure.xml | 8 +-
...re-manual-efi-stateless.x86_64-latest.args | 16 +-
.../firmware-manual-efi-stateless.xml | 6 +-
.../qemuxml2argvdata/firmware-manual-efi.args | 32 --
...=> firmware-manual-efi.x86_64-latest.args} | 13 +-
.../qemuxml2argvdata/firmware-manual-efi.xml | 8 +-
...ual-noefi-acpi-aarch64.aarch64-latest.err} | 0
.../firmware-manual-noefi-acpi-aarch64.xml | 4 +-
...-manual-noefi-acpi-q35.x86_64-latest.args} | 9 +-
.../firmware-manual-noefi-acpi-q35.xml | 4 +-
...-noefi-noacpi-aarch64.aarch64-latest.args} | 9 +-
.../firmware-manual-noefi-noacpi-aarch64.xml | 4 +-
...anual-noefi-noacpi-q35.x86_64-latest.args} | 9 +-
.../firmware-manual-noefi-noacpi-q35.xml | 4 +-
.../virtio-iommu-aarch64.aarch64-latest.args | 8 +-
tests/qemuxml2argvtest.c | 51 +-
.../aarch64-virt-graphics.aarch64-latest.xml | 2 +-
.../aarch64-virt-headless.aarch64-latest.xml | 2 +-
...ware-auto-bios-stateless.x86_64-latest.xml | 10 +-
.../firmware-auto-bios.x86_64-latest.xml | 9 +-
...rmware-auto-efi-aarch64.aarch64-latest.xml | 8 +-
...e-auto-efi-enrolled-keys.x86_64-latest.xml | 15 +-
...efi-format-loader-qcow2.x86_64-latest.xml} | 11 +-
...-efi-format-loader-raw.aarch64-latest.xml} | 8 +-
...nvram-qcow2-network-nbd.x86_64-latest.xml} | 10 +-
...format-nvram-qcow2-path.x86_64-latest.xml} | 11 +-
...-efi-format-nvram-qcow2.x86_64-latest.xml} | 11 +-
...e-auto-efi-loader-secure.x86_64-latest.xml | 12 +-
...uto-efi-no-enrolled-keys.x86_64-latest.xml | 13 +-
...ware-auto-efi-no-secboot.x86_64-latest.xml | 13 +-
...are-auto-efi-nvram-file.x86_64-latest.xml} | 10 +-
...efi-nvram-network-iscsi.x86_64-latest.xml} | 6 +-
...o-efi-nvram-network-nbd.x86_64-latest.xml} | 6 +-
.../firmware-auto-efi-nvram.x86_64-latest.xml | 12 +-
...irmware-auto-efi-secboot.x86_64-latest.xml | 14 +-
...rmware-auto-efi-smm-off.x86_64-latest.xml} | 12 +-
...ware-auto-efi-stateless.x86_64-latest.xml} | 10 +-
.../firmware-auto-efi.x86_64-latest.xml | 11 +-
...e-manual-bios-stateless.x86_64-latest.xml} | 11 +-
...=> firmware-manual-bios.x86_64-latest.xml} | 11 +-
...anual-efi-acpi-aarch64.aarch64-latest.xml} | 8 +-
...are-manual-efi-acpi-q35.x86_64-latest.xml} | 13 +-
...ual-efi-noacpi-aarch64.aarch64-latest.xml} | 9 +-
...re-manual-efi-nvram-file.x86_64-latest.xml | 10 +-
...-efi-nvram-network-iscsi.x86_64-latest.xml | 6 +-
...al-efi-nvram-network-nbd.x86_64-latest.xml | 6 +-
...nual-efi-nvram-template.x86_64-latest.xml} | 10 +-
...-manual-efi-rw-implicit.x86_64-latest.xml} | 11 +-
... firmware-manual-efi-rw.x86_64-latest.xml} | 11 +-
...mware-manual-efi-secure.x86_64-latest.xml} | 14 +-
...re-manual-efi-stateless.x86_64-latest.xml} | 11 +-
... => firmware-manual-efi.x86_64-latest.xml} | 11 +-
...e-manual-noefi-acpi-q35.x86_64-latest.xml} | 10 +-
...l-noefi-noacpi-aarch64.aarch64-latest.xml} | 7 +-
...manual-noefi-noacpi-q35.x86_64-latest.xml} | 13 +-
.../virtio-iommu-aarch64.aarch64-latest.xml | 4 +-
tests/qemuxml2xmltest.c | 32 +-
160 files changed, 1408 insertions(+), 990 deletions(-)
create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/65-ovmf-qcow2.json
create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/66-aavmf-qcow2.json
copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-auto-efi-format-loader-qcow2.x86_64-latest.args} (61%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-stateless.xml => firmware-auto-efi-format-loader-qcow2.xml} (81%)
copy tests/qemuxml2argvdata/{virtio-iommu-aarch64.aarch64-latest.args => firmware-auto-efi-format-loader-raw.aarch64-latest.args} (89%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-aarch64.xml => firmware-auto-efi-format-loader-raw.xml} (79%)
create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err
copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-format-mismatch.xml} (75%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-nbd.x86_64-latest.args => firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.args} (61%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-nbd.xml => firmware-auto-efi-format-nvram-qcow2-network-nbd.xml} (63%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.args} (58%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-format-nvram-qcow2-path.xml} (76%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-auto-efi-format-nvram-qcow2.x86_64-latest.args} (61%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-loader-secure.xml => firmware-auto-efi-format-nvram-qcow2.xml} (81%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.args => firmware-auto-efi-nvram-file.x86_64-latest.args} (63%)
copy tests/qemuxml2argvdata/{firmware-manual-noefi-acpi-q35.xml => firmware-auto-efi-nvram-file.xml} (60%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-iscsi.x86_64-latest.args => firmware-auto-efi-nvram-network-iscsi.x86_64-latest.args} (77%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-iscsi.xml => firmware-auto-efi-nvram-network-iscsi.xml} (73%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-nbd.x86_64-latest.args => firmware-auto-efi-nvram-network-nbd.x86_64-latest.args} (72%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-nbd.xml => firmware-auto-efi-nvram-network-nbd.xml} (67%)
copy tests/qemuxml2argvdata/{virtio-iommu-aarch64.aarch64-latest.args => firmware-auto-efi-smm-off.x86_64-latest.args} (67%)
copy tests/qemuxml2argvdata/{firmware-auto-efi.xml => firmware-auto-efi-smm-off.xml} (82%)
rename tests/qemuxml2argvdata/{firmware-manual-bios-not-stateless.err => firmware-manual-bios-not-stateless.x86_64-latest.err} (100%)
delete mode 100644 tests/qemuxml2argvdata/firmware-manual-bios-stateless.args
copy tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-q35.args => firmware-manual-bios-stateless.x86_64-latest.args} (60%)
delete mode 100644 tests/qemuxml2argvdata/firmware-manual-bios.args
copy tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-q35.args => firmware-manual-bios.x86_64-latest.args} (60%)
rename tests/qemuxml2argvdata/{firmware-manual-efi-acpi-aarch64.args => firmware-manual-efi-acpi-aarch64.aarch64-latest.args} (62%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.args => firmware-manual-efi-acpi-q35.x86_64-latest.args} (64%)
rename tests/qemuxml2argvdata/{firmware-manual-efi-no-path.err => firmware-manual-efi-no-path.x86_64-latest.err} (100%)
rename tests/qemuxml2argvdata/{firmware-manual-efi-noacpi-aarch64.args => firmware-manual-efi-noacpi-aarch64.aarch64-latest.args} (62%)
rename tests/qemuxml2argvdata/{firmware-manual-efi-noacpi-q35.err => firmware-manual-efi-noacpi-q35.x86_64-latest.err} (100%)
rename tests/qemuxml2argvdata/{firmware-manual-bios-rw.x86_64-latest.args => firmware-manual-efi-rw-implicit.x86_64-latest.args} (57%)
rename tests/qemuxml2argvdata/{firmware-manual-bios-rw-implicit.xml => firmware-manual-efi-rw-implicit.xml} (60%)
rename tests/qemuxml2argvdata/{firmware-manual-bios-rw-implicit.x86_64-latest.args => firmware-manual-efi-rw.x86_64-latest.args} (57%)
rename tests/qemuxml2argvdata/{firmware-manual-bios-rw.xml => firmware-manual-efi-rw.xml} (59%)
delete mode 100644 tests/qemuxml2argvdata/firmware-manual-efi-secure.args
copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.x86_64-latest.args => firmware-manual-efi-secure.x86_64-latest.args} (70%)
delete mode 100644 tests/qemuxml2argvdata/firmware-manual-efi.args
rename tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.args => firmware-manual-efi.x86_64-latest.args} (63%)
rename tests/qemuxml2argvdata/{firmware-manual-noefi-acpi-aarch64.err => firmware-manual-noefi-acpi-aarch64.aarch64-latest.err} (100%)
rename tests/qemuxml2argvdata/{firmware-manual-noefi-acpi-q35.args => firmware-manual-noefi-acpi-q35.x86_64-latest.args} (63%)
rename tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-aarch64.args => firmware-manual-noefi-noacpi-aarch64.aarch64-latest.args} (60%)
rename tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-q35.args => firmware-manual-noefi-noacpi-q35.x86_64-latest.args} (64%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-auto-efi-format-loader-qcow2.x86_64-latest.xml} (74%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-auto-efi-format-loader-raw.aarch64-latest.xml} (74%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-network-nbd.x86_64-latest.xml => firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.xml} (76%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.xml} (75%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-auto-efi-format-nvram-qcow2.x86_64-latest.xml} (74%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-auto-efi-nvram-file.x86_64-latest.xml} (78%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-network-iscsi.x86_64-latest.xml => firmware-auto-efi-nvram-network-iscsi.x86_64-latest.xml} (89%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-network-nbd.x86_64-latest.xml => firmware-auto-efi-nvram-network-nbd.x86_64-latest.xml} (88%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-auto-efi-smm-off.x86_64-latest.xml} (75%)
copy tests/qemuxml2xmloutdata/{firmware-auto-bios-stateless.x86_64-latest.xml => firmware-auto-efi-stateless.x86_64-latest.xml} (82%)
rename tests/qemuxml2xmloutdata/{firmware-manual-bios-stateless.xml => firmware-manual-bios-stateless.x86_64-latest.xml} (69%)
rename tests/qemuxml2xmloutdata/{firmware-manual-bios.xml => firmware-manual-bios.x86_64-latest.xml} (69%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-manual-efi-acpi-aarch64.aarch64-latest.xml} (76%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-manual-efi-acpi-q35.x86_64-latest.xml} (76%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-manual-efi-noacpi-aarch64.aarch64-latest.xml} (76%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-manual-efi-nvram-template.x86_64-latest.xml} (78%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-manual-efi-rw-implicit.x86_64-latest.xml} (72%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-manual-efi-rw.x86_64-latest.xml} (72%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-manual-efi-secure.x86_64-latest.xml} (73%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-manual-efi-stateless.x86_64-latest.xml} (72%)
rename tests/qemuxml2xmloutdata/{firmware-manual-efi.xml => firmware-manual-efi.x86_64-latest.xml} (70%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi.x86_64-latest.xml => firmware-manual-noefi-acpi-q35.x86_64-latest.xml} (86%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-manual-noefi-noacpi-aarch64.aarch64-latest.xml} (88%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi.x86_64-latest.xml => firmware-manual-noefi-noacpi-q35.x86_64-latest.xml} (83%)
--
2.39.1
2
36