forked from rpms/libvirt
import CS libvirt-9.5.0-6.el9
This commit is contained in:
parent
2cdc7698de
commit
274bcf4b7f
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
SOURCES/libvirt-9.0.0.tar.xz
|
|
@ -1 +0,0 @@
|
|||||||
43b6ebfd7dc0ff360e75a89b25012f734c76b653 SOURCES/libvirt-9.0.0.tar.xz
|
|
BIN
SOURCES/libvirt-9.5.0.tar.xz
Normal file
BIN
SOURCES/libvirt-9.5.0.tar.xz
Normal file
Binary file not shown.
38
SOURCES/libvirt-Revert-qemu_passt-Actually-use-logfd.patch
Normal file
38
SOURCES/libvirt-Revert-qemu_passt-Actually-use-logfd.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
From f3e5bf77bc6f591e5799ae9de36498df5c2a1811 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <f3e5bf77bc6f591e5799ae9de36498df5c2a1811.1691014499.git.jdenemar@redhat.com>
|
||||||
|
From: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Date: Tue, 1 Aug 2023 16:18:47 +0200
|
||||||
|
Subject: [PATCH] Revert "qemu_passt: Actually use @logfd"
|
||||||
|
|
||||||
|
This reverts commit 83686f1eea1a001a37a92f2c054ffb2689c43a40.
|
||||||
|
|
||||||
|
This is needed only so that the next revert is clean.
|
||||||
|
|
||||||
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
||||||
|
(cherry picked from commit bc9a254dc72b6904e8368c3fea3ab49b7238ff34)
|
||||||
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2209191
|
||||||
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_passt.c | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_passt.c b/src/qemu/qemu_passt.c
|
||||||
|
index 3679bf75fc..25b22d8ad9 100644
|
||||||
|
--- a/src/qemu/qemu_passt.c
|
||||||
|
+++ b/src/qemu/qemu_passt.c
|
||||||
|
@@ -204,9 +204,9 @@ qemuPasstStart(virDomainObj *vm,
|
||||||
|
/* The logFile location is not restricted to a per-domain directory. It
|
||||||
|
* can be anywhere. Pre-create it as passt may not have enough perms to
|
||||||
|
* do so. */
|
||||||
|
- if ((logfd = qemuDomainOpenFile(cfg, vm->def, net->backend.logFile,
|
||||||
|
- O_CREAT | O_TRUNC | O_APPEND | O_RDWR,
|
||||||
|
- &needUnlink)) < 0) {
|
||||||
|
+ if (qemuDomainOpenFile(cfg, vm->def, net->backend.logFile,
|
||||||
|
+ O_CREAT | O_TRUNC | O_APPEND | O_RDWR,
|
||||||
|
+ &needUnlink) < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.41.0
|
148
SOURCES/libvirt-Revert-qemu_passt-Precreate-passt-logfile.patch
Normal file
148
SOURCES/libvirt-Revert-qemu_passt-Precreate-passt-logfile.patch
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
From 8897c7d63f763bf9b59f7e79ec6b2f9caf84823b Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <8897c7d63f763bf9b59f7e79ec6b2f9caf84823b.1691014499.git.jdenemar@redhat.com>
|
||||||
|
From: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Date: Tue, 1 Aug 2023 16:20:58 +0200
|
||||||
|
Subject: [PATCH] Revert "qemu_passt: Precreate passt logfile"
|
||||||
|
|
||||||
|
This reverts commit 8511b96a319836700b4829816cdae27c3630060d.
|
||||||
|
|
||||||
|
Turns out, we need to do a bit more than just plain
|
||||||
|
qemuSecurityDomainSetPathLabel() which sets svirt_image_t. Passt
|
||||||
|
has its own SELinux policy and as a part of that they invent
|
||||||
|
passt_log_t for log files. Right now, I don't know how libvirt
|
||||||
|
could query that and even if I did, passt SELinux policy would
|
||||||
|
need to permit relabelling from svirt_t to passt_log_t, which it
|
||||||
|
doesn't [1].
|
||||||
|
|
||||||
|
Until these problems are addressed we shouldn't be pre-creating
|
||||||
|
the file as it puts users into way worse position - even
|
||||||
|
scenarios that used to work don't work. But then again - using
|
||||||
|
log file for passt is usually valuable for developers only and
|
||||||
|
not regular users.
|
||||||
|
|
||||||
|
1: https://bugzilla.redhat.com/show_bug.cgi?id=2209191#c10
|
||||||
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
||||||
|
(cherry picked from commit 99349ba18e726465215a71f28d2146a0a2adb65d)
|
||||||
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2209191
|
||||||
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_passt.c | 40 +++++-----------------------------------
|
||||||
|
1 file changed, 5 insertions(+), 35 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_passt.c b/src/qemu/qemu_passt.c
|
||||||
|
index 25b22d8ad9..99636a3a49 100644
|
||||||
|
--- a/src/qemu/qemu_passt.c
|
||||||
|
+++ b/src/qemu/qemu_passt.c
|
||||||
|
@@ -20,8 +20,6 @@
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
-#include <fcntl.h>
|
||||||
|
-
|
||||||
|
#include "qemu_dbus.h"
|
||||||
|
#include "qemu_extdevice.h"
|
||||||
|
#include "qemu_security.h"
|
||||||
|
@@ -138,13 +136,9 @@ void
|
||||||
|
qemuPasstStop(virDomainObj *vm,
|
||||||
|
virDomainNetDef *net)
|
||||||
|
{
|
||||||
|
- qemuDomainObjPrivate *priv = vm->privateData;
|
||||||
|
- virQEMUDriver *driver = priv->driver;
|
||||||
|
g_autofree char *pidfile = qemuPasstCreatePidFilename(vm, net);
|
||||||
|
g_autofree char *passtSocketName = qemuPasstCreateSocketPath(vm, net);
|
||||||
|
|
||||||
|
- qemuSecurityDomainRestorePathLabel(driver, vm, net->backend.logFile);
|
||||||
|
-
|
||||||
|
qemuPasstKill(pidfile, passtSocketName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -172,12 +166,10 @@ qemuPasstStart(virDomainObj *vm,
|
||||||
|
{
|
||||||
|
qemuDomainObjPrivate *priv = vm->privateData;
|
||||||
|
virQEMUDriver *driver = priv->driver;
|
||||||
|
- g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
|
||||||
|
g_autofree char *passtSocketName = qemuPasstCreateSocketPath(vm, net);
|
||||||
|
g_autoptr(virCommand) cmd = NULL;
|
||||||
|
g_autofree char *pidfile = qemuPasstCreatePidFilename(vm, net);
|
||||||
|
char macaddr[VIR_MAC_STRING_BUFLEN];
|
||||||
|
- bool needUnlink = false;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
cmd = virCommandNew(PASST);
|
||||||
|
@@ -199,25 +191,8 @@ qemuPasstStart(virDomainObj *vm,
|
||||||
|
if (net->sourceDev)
|
||||||
|
virCommandAddArgList(cmd, "--interface", net->sourceDev, NULL);
|
||||||
|
|
||||||
|
- if (net->backend.logFile) {
|
||||||
|
- VIR_AUTOCLOSE logfd = -1;
|
||||||
|
- /* The logFile location is not restricted to a per-domain directory. It
|
||||||
|
- * can be anywhere. Pre-create it as passt may not have enough perms to
|
||||||
|
- * do so. */
|
||||||
|
- if (qemuDomainOpenFile(cfg, vm->def, net->backend.logFile,
|
||||||
|
- O_CREAT | O_TRUNC | O_APPEND | O_RDWR,
|
||||||
|
- &needUnlink) < 0) {
|
||||||
|
- return -1;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (qemuSecurityDomainSetPathLabel(driver, vm,
|
||||||
|
- net->backend.logFile, false) < 0) {
|
||||||
|
- goto error;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* Worse, passt deliberately doesn't support FD passing. */
|
||||||
|
+ if (net->backend.logFile)
|
||||||
|
virCommandAddArgList(cmd, "--log-file", net->backend.logFile, NULL);
|
||||||
|
- }
|
||||||
|
|
||||||
|
/* Add IP address info */
|
||||||
|
for (i = 0; i < net->guestIP.nips; i++) {
|
||||||
|
@@ -228,7 +203,7 @@ qemuPasstStart(virDomainObj *vm,
|
||||||
|
* a single IPv4 and single IPv6 address
|
||||||
|
*/
|
||||||
|
if (!(addr = virSocketAddrFormat(&ip->address)))
|
||||||
|
- goto error;
|
||||||
|
+ return -1;
|
||||||
|
|
||||||
|
virCommandAddArgList(cmd, "--address", addr, NULL);
|
||||||
|
|
||||||
|
@@ -256,14 +231,14 @@ qemuPasstStart(virDomainObj *vm,
|
||||||
|
/* validation guarantees this will never happen */
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("Invalid portForward proto value %1$u"), pf->proto);
|
||||||
|
- goto error;
|
||||||
|
+ return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (VIR_SOCKET_ADDR_VALID(&pf->address)) {
|
||||||
|
g_autofree char *addr = NULL;
|
||||||
|
|
||||||
|
if (!(addr = virSocketAddrFormat(&pf->address)))
|
||||||
|
- goto error;
|
||||||
|
+ return -1;
|
||||||
|
|
||||||
|
virBufferAddStr(&buf, addr);
|
||||||
|
emitsep = true;
|
||||||
|
@@ -309,7 +284,7 @@ qemuPasstStart(virDomainObj *vm,
|
||||||
|
|
||||||
|
|
||||||
|
if (qemuExtDeviceLogCommand(driver, vm, cmd, "passt") < 0)
|
||||||
|
- goto error;
|
||||||
|
+ return -1;
|
||||||
|
|
||||||
|
if (qemuSecurityCommandRun(driver, vm, cmd, -1, -1, true, NULL) < 0)
|
||||||
|
goto error;
|
||||||
|
@@ -317,11 +292,6 @@ qemuPasstStart(virDomainObj *vm,
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
error:
|
||||||
|
- if (needUnlink && unlink(net->backend.logFile) < 0) {
|
||||||
|
- VIR_WARN("Unable to unlink '%s': %s",
|
||||||
|
- net->backend.logFile, g_strerror(errno));
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
qemuPasstKill(pidfile, passtSocketName);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.41.0
|
@ -0,0 +1,392 @@
|
|||||||
|
From 7708f08af4581f11d9bc3c3cdf858e55ebdb5a6c Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <7708f08af4581f11d9bc3c3cdf858e55ebdb5a6c.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Tue, 16 May 2023 19:50:50 +0200
|
||||||
|
Subject: [PATCH] conf: Don't default to raw format for loader/NVRAM
|
||||||
|
|
||||||
|
Due to the way the information is stored by the XML parser, we've
|
||||||
|
had this quirk where specifying any information about the loader
|
||||||
|
or NVRAM would implicitly set its format to raw. That is,
|
||||||
|
|
||||||
|
<nvram>/path/to/guest_VARS.fd</nvram>
|
||||||
|
|
||||||
|
would effectively be interpreted as
|
||||||
|
|
||||||
|
<nvram format='raw'>/path/to/guest_VARS.fd</nvram>
|
||||||
|
|
||||||
|
forcing the use of raw format firmware even when qcow2 format
|
||||||
|
would normally be preferred based on the ordering of firmware
|
||||||
|
descriptors. This behavior can be worked around in a number of
|
||||||
|
ways, but it's fairly unintuitive.
|
||||||
|
|
||||||
|
In order to remove this quirk, move the selection of the default
|
||||||
|
firmware format from the parser down to the individual drivers.
|
||||||
|
|
||||||
|
Most drivers only support raw firmware images, so they can
|
||||||
|
unconditionally set the format early and be done with it; the
|
||||||
|
QEMU driver, however, supports multiple formats and so in that
|
||||||
|
case we want this default to be applied as late as possible,
|
||||||
|
when we have already ruled out the possibility of using qcow2
|
||||||
|
formatted firmware images.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 10a8997cbb402f7edb9f970af70feee2fc256a1c)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
src/bhyve/bhyve_firmware.c | 3 ++
|
||||||
|
src/conf/domain_conf.c | 21 ++++++----
|
||||||
|
src/libxl/libxl_conf.c | 15 +++++---
|
||||||
|
src/libxl/xen_xl.c | 2 +
|
||||||
|
src/libxl/xen_xm.c | 1 +
|
||||||
|
src/qemu/qemu_firmware.c | 27 +++++++++++--
|
||||||
|
...uto-efi-format-mismatch.x86_64-latest.args | 38 +++++++++++++++++++
|
||||||
|
...auto-efi-format-mismatch.x86_64-latest.err | 1 -
|
||||||
|
.../firmware-auto-efi-format-mismatch.xml | 2 +-
|
||||||
|
...oader-secure-abi-update.x86_64-latest.args | 8 ++--
|
||||||
|
tests/qemuxml2argvtest.c | 2 +-
|
||||||
|
...loader-secure-abi-update.x86_64-latest.xml | 4 +-
|
||||||
|
12 files changed, 98 insertions(+), 26 deletions(-)
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.args
|
||||||
|
delete mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err
|
||||||
|
|
||||||
|
diff --git a/src/bhyve/bhyve_firmware.c b/src/bhyve/bhyve_firmware.c
|
||||||
|
index 57ab9c7a82..8aaf05dc62 100644
|
||||||
|
--- a/src/bhyve/bhyve_firmware.c
|
||||||
|
+++ b/src/bhyve/bhyve_firmware.c
|
||||||
|
@@ -80,6 +80,9 @@ bhyveFirmwareFillDomain(bhyveConn *driver,
|
||||||
|
if (!def->os.loader)
|
||||||
|
def->os.loader = virDomainLoaderDefNew();
|
||||||
|
|
||||||
|
+ if (!def->os.loader->format)
|
||||||
|
+ def->os.loader->format = VIR_STORAGE_FILE_RAW;
|
||||||
|
+
|
||||||
|
if (def->os.loader->format != VIR_STORAGE_FILE_RAW) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
_("Unsupported loader format '%1$s'"),
|
||||||
|
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
|
||||||
|
index 5ac5c0b771..8fa0a6dc73 100644
|
||||||
|
--- a/src/conf/domain_conf.c
|
||||||
|
+++ b/src/conf/domain_conf.c
|
||||||
|
@@ -3728,7 +3728,6 @@ virDomainLoaderDefNew(void)
|
||||||
|
virDomainLoaderDef *def = NULL;
|
||||||
|
|
||||||
|
def = g_new0(virDomainLoaderDef, 1);
|
||||||
|
- def->format = VIR_STORAGE_FILE_RAW;
|
||||||
|
|
||||||
|
return def;
|
||||||
|
}
|
||||||
|
@@ -16771,10 +16770,11 @@ virDomainLoaderDefParseXMLNvram(virDomainLoaderDef *loader,
|
||||||
|
|
||||||
|
if (virXMLPropEnumDefault(nvramNode, "format",
|
||||||
|
virStorageFileFormatTypeFromString, VIR_XML_PROP_NONE,
|
||||||
|
- &format, VIR_STORAGE_FILE_RAW) < 0) {
|
||||||
|
+ &format, VIR_STORAGE_FILE_NONE) < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
- if (format != VIR_STORAGE_FILE_RAW &&
|
||||||
|
+ if (format &&
|
||||||
|
+ format != VIR_STORAGE_FILE_RAW &&
|
||||||
|
format != VIR_STORAGE_FILE_QCOW2) {
|
||||||
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
|
_("Unsupported nvram format '%1$s'"),
|
||||||
|
@@ -16860,10 +16860,11 @@ virDomainLoaderDefParseXMLLoader(virDomainLoaderDef *loader,
|
||||||
|
|
||||||
|
if (virXMLPropEnumDefault(loaderNode, "format",
|
||||||
|
virStorageFileFormatTypeFromString, VIR_XML_PROP_NONE,
|
||||||
|
- &format, VIR_STORAGE_FILE_RAW) < 0) {
|
||||||
|
+ &format, VIR_STORAGE_FILE_NONE) < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
- if (format != VIR_STORAGE_FILE_RAW &&
|
||||||
|
+ if (format &&
|
||||||
|
+ format != VIR_STORAGE_FILE_RAW &&
|
||||||
|
format != VIR_STORAGE_FILE_QCOW2) {
|
||||||
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
|
_("Unsupported loader format '%1$s'"),
|
||||||
|
@@ -16894,7 +16895,9 @@ virDomainLoaderDefParseXML(virDomainLoaderDef *loader,
|
||||||
|
loaderNode) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
- if (loader->nvram && loader->format != loader->nvram->format) {
|
||||||
|
+ if (loader->nvram &&
|
||||||
|
+ loader->format && loader->nvram->format &&
|
||||||
|
+ loader->format != loader->nvram->format) {
|
||||||
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
|
_("Format mismatch: loader.format='%1$s' nvram.format='%2$s'"),
|
||||||
|
virStorageFileFormatTypeToString(loader->format),
|
||||||
|
@@ -26224,7 +26227,8 @@ virDomainLoaderDefFormatNvram(virBuffer *buf,
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (src->format != VIR_STORAGE_FILE_RAW) {
|
||||||
|
+ if (src->format &&
|
||||||
|
+ src->format != VIR_STORAGE_FILE_RAW) {
|
||||||
|
virBufferEscapeString(&attrBuf, " format='%s'",
|
||||||
|
virStorageFileFormatTypeToString(src->format));
|
||||||
|
}
|
||||||
|
@@ -26262,7 +26266,8 @@ virDomainLoaderDefFormat(virBuffer *buf,
|
||||||
|
virTristateBoolTypeToString(loader->stateless));
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (loader->format != VIR_STORAGE_FILE_RAW) {
|
||||||
|
+ if (loader->format &&
|
||||||
|
+ loader->format != VIR_STORAGE_FILE_RAW) {
|
||||||
|
virBufferEscapeString(&loaderAttrBuf, " format='%s'",
|
||||||
|
virStorageFileFormatTypeToString(loader->format));
|
||||||
|
}
|
||||||
|
diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
|
||||||
|
index a1c76935b6..14ad320023 100644
|
||||||
|
--- a/src/libxl/libxl_conf.c
|
||||||
|
+++ b/src/libxl/libxl_conf.c
|
||||||
|
@@ -654,11 +654,16 @@ libxlMakeDomBuildInfo(virDomainDef *def,
|
||||||
|
b_info->u.hvm.system_firmware = g_strdup(def->os.loader->path);
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (def->os.loader && def->os.loader->format != VIR_STORAGE_FILE_RAW) {
|
||||||
|
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
- _("Unsupported loader format '%1$s'"),
|
||||||
|
- virStorageFileFormatTypeToString(def->os.loader->format));
|
||||||
|
- return -1;
|
||||||
|
+ if (def->os.loader) {
|
||||||
|
+ if (!def->os.loader->format)
|
||||||
|
+ def->os.loader->format = VIR_STORAGE_FILE_RAW;
|
||||||
|
+
|
||||||
|
+ if (def->os.loader->format != VIR_STORAGE_FILE_RAW) {
|
||||||
|
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
+ _("Unsupported loader format '%1$s'"),
|
||||||
|
+ virStorageFileFormatTypeToString(def->os.loader->format));
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (def->emulator) {
|
||||||
|
diff --git a/src/libxl/xen_xl.c b/src/libxl/xen_xl.c
|
||||||
|
index 1cc42fa59f..ab1941454d 100644
|
||||||
|
--- a/src/libxl/xen_xl.c
|
||||||
|
+++ b/src/libxl/xen_xl.c
|
||||||
|
@@ -115,6 +115,7 @@ xenParseXLOS(virConf *conf, virDomainDef *def, virCaps *caps)
|
||||||
|
|
||||||
|
if (bios && STREQ(bios, "ovmf")) {
|
||||||
|
def->os.loader = virDomainLoaderDefNew();
|
||||||
|
+ def->os.loader->format = VIR_STORAGE_FILE_RAW;
|
||||||
|
def->os.loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH;
|
||||||
|
def->os.loader->readonly = VIR_TRISTATE_BOOL_YES;
|
||||||
|
if (bios_path)
|
||||||
|
@@ -126,6 +127,7 @@ xenParseXLOS(virConf *conf, virDomainDef *def, virCaps *caps)
|
||||||
|
if (caps->guests[i]->ostype == VIR_DOMAIN_OSTYPE_HVM &&
|
||||||
|
caps->guests[i]->arch.id == def->os.arch) {
|
||||||
|
def->os.loader = virDomainLoaderDefNew();
|
||||||
|
+ def->os.loader->format = VIR_STORAGE_FILE_RAW;
|
||||||
|
def->os.loader->path = g_strdup(caps->guests[i]->arch.defaultInfo.loader);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/src/libxl/xen_xm.c b/src/libxl/xen_xm.c
|
||||||
|
index 0031d6cbc6..5705a5ec0c 100644
|
||||||
|
--- a/src/libxl/xen_xm.c
|
||||||
|
+++ b/src/libxl/xen_xm.c
|
||||||
|
@@ -43,6 +43,7 @@ xenParseXMOS(virConf *conf, virDomainDef *def)
|
||||||
|
g_autofree char *boot = NULL;
|
||||||
|
|
||||||
|
def->os.loader = virDomainLoaderDefNew();
|
||||||
|
+ def->os.loader->format = VIR_STORAGE_FILE_RAW;
|
||||||
|
|
||||||
|
if (xenConfigCopyString(conf, "kernel", &def->os.loader->path) < 0)
|
||||||
|
return -1;
|
||||||
|
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
|
||||||
|
index ebaf32cf71..3dcd139a47 100644
|
||||||
|
--- a/src/qemu/qemu_firmware.c
|
||||||
|
+++ b/src/qemu/qemu_firmware.c
|
||||||
|
@@ -1082,6 +1082,11 @@ qemuFirmwareEnsureNVRAM(virDomainDef *def,
|
||||||
|
if (loader->stateless == VIR_TRISTATE_BOOL_YES)
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ /* If the NVRAM format hasn't been set yet, inherit the same as
|
||||||
|
+ * the loader */
|
||||||
|
+ if (loader->nvram && !loader->nvram->format)
|
||||||
|
+ loader->nvram->format = loader->format;
|
||||||
|
+
|
||||||
|
/* If the source already exists and is fully specified, including
|
||||||
|
* the path, leave it alone */
|
||||||
|
if (loader->nvram && loader->nvram->path)
|
||||||
|
@@ -1328,7 +1333,7 @@ qemuFirmwareMatchDomain(const virDomainDef *def,
|
||||||
|
flash->executable.format);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
- if (loader &&
|
||||||
|
+ if (loader && loader->format &&
|
||||||
|
STRNEQ(flash->executable.format, virStorageFileFormatTypeToString(loader->format))) {
|
||||||
|
VIR_DEBUG("Discarding loader with mismatching flash format '%s' != '%s'",
|
||||||
|
flash->executable.format,
|
||||||
|
@@ -1342,7 +1347,7 @@ qemuFirmwareMatchDomain(const virDomainDef *def,
|
||||||
|
flash->nvram_template.format);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
- if (loader && loader->nvram &&
|
||||||
|
+ if (loader && loader->nvram && loader->nvram->format &&
|
||||||
|
STRNEQ(flash->nvram_template.format, virStorageFileFormatTypeToString(loader->nvram->format))) {
|
||||||
|
VIR_DEBUG("Discarding loader with mismatching nvram template format '%s' != '%s'",
|
||||||
|
flash->nvram_template.format,
|
||||||
|
@@ -1630,7 +1635,8 @@ qemuFirmwareFillDomainLegacy(virQEMUDriver *driver,
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (loader->format != VIR_STORAGE_FILE_RAW) {
|
||||||
|
+ if (loader->format &&
|
||||||
|
+ loader->format != VIR_STORAGE_FILE_RAW) {
|
||||||
|
VIR_DEBUG("Ignoring legacy entries for loader with flash format '%s'",
|
||||||
|
virStorageFileFormatTypeToString(loader->format));
|
||||||
|
return 1;
|
||||||
|
@@ -1793,6 +1799,7 @@ qemuFirmwareFillDomain(virQEMUDriver *driver,
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (loader &&
|
||||||
|
+ loader->format &&
|
||||||
|
loader->format != VIR_STORAGE_FILE_RAW &&
|
||||||
|
loader->format != VIR_STORAGE_FILE_QCOW2) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
@@ -1801,6 +1808,7 @@ qemuFirmwareFillDomain(virQEMUDriver *driver,
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (nvram &&
|
||||||
|
+ nvram->format &&
|
||||||
|
nvram->format != VIR_STORAGE_FILE_RAW &&
|
||||||
|
nvram->format != VIR_STORAGE_FILE_QCOW2) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
@@ -1831,8 +1839,19 @@ qemuFirmwareFillDomain(virQEMUDriver *driver,
|
||||||
|
* CODE:NVRAM pairs that might have been provided at build
|
||||||
|
* time */
|
||||||
|
if (!autoSelection) {
|
||||||
|
- if (qemuFirmwareFillDomainLegacy(driver, def) < 0)
|
||||||
|
+ if ((ret = qemuFirmwareFillDomainLegacy(driver, def)) < 0)
|
||||||
|
return -1;
|
||||||
|
+
|
||||||
|
+ /* If we've gotten this far without finding a match, it
|
||||||
|
+ * means that we're dealing with a set of completely
|
||||||
|
+ * custom paths. In that case, unless the user has
|
||||||
|
+ * specified otherwise, we have to assume that they're in
|
||||||
|
+ * raw format */
|
||||||
|
+ if (ret == 1) {
|
||||||
|
+ if (loader && !loader->format) {
|
||||||
|
+ loader->format = VIR_STORAGE_FILE_RAW;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
} else {
|
||||||
|
virReportError(VIR_ERR_OPERATION_FAILED,
|
||||||
|
_("Unable to find any firmware to satisfy '%1$s'"),
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.args
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..e8d7d580f7
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.args
|
||||||
|
@@ -0,0 +1,38 @@
|
||||||
|
+LC_ALL=C \
|
||||||
|
+PATH=/bin \
|
||||||
|
+HOME=/var/lib/libvirt/qemu/domain--1-guest \
|
||||||
|
+USER=test \
|
||||||
|
+LOGNAME=test \
|
||||||
|
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \
|
||||||
|
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \
|
||||||
|
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
+/usr/bin/qemu-system-x86_64 \
|
||||||
|
+-name guest=guest,debug-threads=on \
|
||||||
|
+-S \
|
||||||
|
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/usr/share/edk2/ovmf/OVMF_CODE_4M.secboot.qcow2","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"qcow2","file":"libvirt-pflash0-storage"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/path/to/guest_VARS.qcow2","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"qcow2","file":"libvirt-pflash1-storage"}' \
|
||||||
|
+-machine pc-q35-4.0,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format,acpi=on \
|
||||||
|
+-accel kvm \
|
||||||
|
+-cpu qemu64 \
|
||||||
|
+-global driver=cfi.pflash01,property=secure,value=on \
|
||||||
|
+-m size=1048576k \
|
||||||
|
+-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \
|
||||||
|
+-overcommit mem-lock=off \
|
||||||
|
+-smp 1,sockets=1,cores=1,threads=1 \
|
||||||
|
+-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \
|
||||||
|
+-display none \
|
||||||
|
+-no-user-config \
|
||||||
|
+-nodefaults \
|
||||||
|
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
|
||||||
|
+-mon chardev=charmonitor,id=monitor,mode=control \
|
||||||
|
+-rtc base=utc \
|
||||||
|
+-no-shutdown \
|
||||||
|
+-boot strict=on \
|
||||||
|
+-audiodev '{"id":"audio1","driver":"none"}' \
|
||||||
|
+-global ICH9-LPC.noreboot=off \
|
||||||
|
+-watchdog-action reset \
|
||||||
|
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
|
||||||
|
+-msg timestamp=on
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err
|
||||||
|
deleted file mode 100644
|
||||||
|
index abfdfc4357..0000000000
|
||||||
|
--- a/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1 +0,0 @@
|
||||||
|
-XML error: Format mismatch: loader.format='qcow2' nvram.format='raw'
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml
|
||||||
|
index 6613d9e9a9..75fa44fd20 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml
|
||||||
|
@@ -6,7 +6,7 @@
|
||||||
|
<os firmware='efi'>
|
||||||
|
<type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
|
||||||
|
<loader format='qcow2'/>
|
||||||
|
- <nvram>/path/to/guest_VARS.fd</nvram>
|
||||||
|
+ <nvram>/path/to/guest_VARS.qcow2</nvram>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
<acpi/>
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-loader-secure-abi-update.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-loader-secure-abi-update.x86_64-latest.args
|
||||||
|
index 48f357cbf9..790fb619e8 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/firmware-auto-efi-loader-secure-abi-update.x86_64-latest.args
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-auto-efi-loader-secure-abi-update.x86_64-latest.args
|
||||||
|
@@ -10,10 +10,10 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
-name guest=guest,debug-threads=on \
|
||||||
|
-S \
|
||||||
|
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
--blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
--blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/usr/share/edk2/ovmf/OVMF_CODE_4M.secboot.qcow2","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"qcow2","file":"libvirt-pflash0-storage"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"qcow2","file":"libvirt-pflash1-storage"}' \
|
||||||
|
-machine pc-q35-4.0,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format,acpi=on \
|
||||||
|
-accel kvm \
|
||||||
|
-cpu qemu64 \
|
||||||
|
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
|
||||||
|
index 370b26a023..9439a5a1e6 100644
|
||||||
|
--- a/tests/qemuxml2argvtest.c
|
||||||
|
+++ b/tests/qemuxml2argvtest.c
|
||||||
|
@@ -1117,7 +1117,7 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2-network-nbd");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST("firmware-auto-efi-format-loader-raw", "aarch64");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("firmware-auto-efi-format-loader-raw-abi-update", "aarch64");
|
||||||
|
- DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-auto-efi-format-mismatch");
|
||||||
|
+ DO_TEST_CAPS_LATEST("firmware-auto-efi-format-mismatch");
|
||||||
|
|
||||||
|
DO_TEST_NOCAPS("clock-utc");
|
||||||
|
DO_TEST_NOCAPS("clock-localtime");
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure-abi-update.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure-abi-update.x86_64-latest.xml
|
||||||
|
index 332d931ba1..f4ff7a0fc2 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure-abi-update.x86_64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure-abi-update.x86_64-latest.xml
|
||||||
|
@@ -10,8 +10,8 @@
|
||||||
|
<feature enabled='yes' name='enrolled-keys'/>
|
||||||
|
<feature enabled='yes' name='secure-boot'/>
|
||||||
|
</firmware>
|
||||||
|
- <loader readonly='yes' secure='yes' type='pflash'>/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd</loader>
|
||||||
|
- <nvram template='/usr/share/edk2/ovmf/OVMF_VARS.secboot.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
|
||||||
|
+ <loader readonly='yes' secure='yes' type='pflash' format='qcow2'>/usr/share/edk2/ovmf/OVMF_CODE_4M.secboot.qcow2</loader>
|
||||||
|
+ <nvram template='/usr/share/edk2/ovmf/OVMF_VARS_4M.secboot.qcow2' format='qcow2'>/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -1,63 +0,0 @@
|
|||||||
From 0c35c1c0495a953268719ad83cf2f368ab53018b Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <0c35c1c0495a953268719ad83cf2f368ab53018b@dist-git>
|
|
||||||
From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
|
|
||||||
Date: Fri, 20 Jan 2023 12:56:48 +0100
|
|
||||||
Subject: [PATCH] conf: clarify some external TPM error messages
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Two of the messages referred to 'backend type' when dealing
|
|
||||||
with the source type and one mentioned the 'client' attribute
|
|
||||||
from an earlier iteration of the patches, even though the attribute
|
|
||||||
was later changed to 'connect'.
|
|
||||||
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=2063723
|
|
||||||
|
|
||||||
Signed-off-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 1c7476c8797b7f0d6e8d607f6a42c5bf43441677)
|
|
||||||
Signed-off-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
---
|
|
||||||
src/conf/domain_conf.c | 4 ++--
|
|
||||||
src/conf/domain_validate.c | 2 +-
|
|
||||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
|
|
||||||
index 45965fa0fa..733399e6da 100644
|
|
||||||
--- a/src/conf/domain_conf.c
|
|
||||||
+++ b/src/conf/domain_conf.c
|
|
||||||
@@ -10545,7 +10545,7 @@ virDomainTPMDefParseXML(virDomainXMLOption *xmlopt,
|
|
||||||
case VIR_DOMAIN_TPM_TYPE_EXTERNAL:
|
|
||||||
if (!(type = virXPathString("string(./backend/source/@type)", ctxt))) {
|
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
|
||||||
- _("missing external TPM backend type"));
|
|
||||||
+ _("missing external TPM backend source type"));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -10555,7 +10555,7 @@ virDomainTPMDefParseXML(virDomainXMLOption *xmlopt,
|
|
||||||
def->data.external.source->type = virDomainChrTypeFromString(type);
|
|
||||||
if (def->data.external.source->type < 0) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
|
||||||
- _("unknown backend type '%s' for external TPM"),
|
|
||||||
+ _("unknown backend source type '%s' for external TPM"),
|
|
||||||
type);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c
|
|
||||||
index 39d924d4ed..1c13929281 100644
|
|
||||||
--- a/src/conf/domain_validate.c
|
|
||||||
+++ b/src/conf/domain_validate.c
|
|
||||||
@@ -2757,7 +2757,7 @@ virDomainTPMDevValidate(const virDomainTPMDef *tpm)
|
|
||||||
}
|
|
||||||
if (tpm->data.external.source->data.nix.listen) {
|
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
|
||||||
- _("only 'client' mode is supported for external TPM device"));
|
|
||||||
+ _("only 'connect' mode is supported for external TPM device"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (tpm->data.external.source->data.nix.path == NULL) {
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,53 +0,0 @@
|
|||||||
From 31f2edcd7f42cda4173eabad879bfc318c202c9e Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <31f2edcd7f42cda4173eabad879bfc318c202c9e@dist-git>
|
|
||||||
From: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
Date: Tue, 17 Jan 2023 10:33:22 +0100
|
|
||||||
Subject: [PATCH] docs: document correct cpu shares limits with both cgroups v1
|
|
||||||
and v2
|
|
||||||
|
|
||||||
The limits are different with cgroups v1 and v2 but our XML
|
|
||||||
documentation and virsh manpage mentioned only cgroups v1 limits without
|
|
||||||
explicitly saying it only applies to cgroups v1.
|
|
||||||
|
|
||||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit ead6e1b00285cbd98e0f0727efb8adcb29ebc1ba)
|
|
||||||
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2037998
|
|
||||||
|
|
||||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
---
|
|
||||||
docs/formatdomain.rst | 2 +-
|
|
||||||
docs/manpages/virsh.rst | 3 ++-
|
|
||||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
|
|
||||||
index 490a954745..8fc8aeb928 100644
|
|
||||||
--- a/docs/formatdomain.rst
|
|
||||||
+++ b/docs/formatdomain.rst
|
|
||||||
@@ -849,7 +849,7 @@ CPU Tuning
|
|
||||||
There is no unit for the value, it's a relative measure based on the setting
|
|
||||||
of other VM, e.g. A VM configured with value 2048 will get twice as much CPU
|
|
||||||
time as a VM configured with value 1024. The value should be in range
|
|
||||||
- [2, 262144]. :since:`Since 0.9.0`
|
|
||||||
+ [2, 262144] using cgroups v1, [1, 10000] using cgroups v2. :since:`Since 0.9.0`
|
|
||||||
``period``
|
|
||||||
The optional ``period`` element specifies the enforcement interval (unit:
|
|
||||||
microseconds). Within ``period``, each vCPU of the domain will not be allowed
|
|
||||||
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
|
|
||||||
index 88b7fa1da8..d5b614dc03 100644
|
|
||||||
--- a/docs/manpages/virsh.rst
|
|
||||||
+++ b/docs/manpages/virsh.rst
|
|
||||||
@@ -4054,7 +4054,8 @@ If *--config* is specified, affect the next start of a persistent guest.
|
|
||||||
If *--current* is specified, it is equivalent to either *--live* or
|
|
||||||
*--config*, depending on the current state of the guest.
|
|
||||||
|
|
||||||
-``Note``: The cpu_shares parameter has a valid value range of 2-262144.
|
|
||||||
+``Note``: The cpu_shares parameter has a valid value range of 2-262144
|
|
||||||
+with cgroups v1, 1-10000 with cgroups v2.
|
|
||||||
|
|
||||||
``Note``: The weight and cap parameters are defined only for the
|
|
||||||
XEN_CREDIT scheduler.
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
|||||||
From fbf5f9bce43e19f8827e5cdef0e456b74ccc2f7d Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <fbf5f9bce43e19f8827e5cdef0e456b74ccc2f7d@dist-git>
|
|
||||||
From: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
Date: Tue, 17 Jan 2023 10:08:08 +0100
|
|
||||||
Subject: [PATCH] domain_validate: drop cpu.shares cgroup check
|
|
||||||
|
|
||||||
This check is done when VM is defined but doesn't take into account what
|
|
||||||
cgroups version is currently used on the host system so it doesn't work
|
|
||||||
correctly.
|
|
||||||
|
|
||||||
To make proper check at this point we would have to figure out cgroups
|
|
||||||
version while defining a VM but that will still not guarantee that the
|
|
||||||
VM will start correctly in the future as the host may be rebooted with
|
|
||||||
different cgroups version.
|
|
||||||
|
|
||||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 38af6497610075e5fe386734b87186731d4c17ac)
|
|
||||||
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2037998
|
|
||||||
|
|
||||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
---
|
|
||||||
src/conf/domain_validate.c | 10 ----------
|
|
||||||
1 file changed, 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c
|
|
||||||
index 5a9bf20d3f..39d924d4ed 100644
|
|
||||||
--- a/src/conf/domain_validate.c
|
|
||||||
+++ b/src/conf/domain_validate.c
|
|
||||||
@@ -1725,16 +1725,6 @@ virDomainDefOSValidate(const virDomainDef *def,
|
|
||||||
static int
|
|
||||||
virDomainDefCputuneValidate(const virDomainDef *def)
|
|
||||||
{
|
|
||||||
- if (def->cputune.shares > 0 &&
|
|
||||||
- (def->cputune.shares < VIR_CGROUP_CPU_SHARES_MIN ||
|
|
||||||
- def->cputune.shares > VIR_CGROUP_CPU_SHARES_MAX)) {
|
|
||||||
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
|
||||||
- _("Value of cputune 'shares' must be in range [%llu, %llu]"),
|
|
||||||
- VIR_CGROUP_CPU_SHARES_MIN,
|
|
||||||
- VIR_CGROUP_CPU_SHARES_MAX);
|
|
||||||
- return -1;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
CPUTUNE_VALIDATE_PERIOD(period);
|
|
||||||
CPUTUNE_VALIDATE_PERIOD(global_period);
|
|
||||||
CPUTUNE_VALIDATE_PERIOD(emulator_period);
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -0,0 +1,79 @@
|
|||||||
|
From f158b6573ac39bdd1ba36c3900e65afffe57f3ca Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <f158b6573ac39bdd1ba36c3900e65afffe57f3ca.1689974710.git.jdenemar@redhat.com>
|
||||||
|
From: Peter Krempa <pkrempa@redhat.com>
|
||||||
|
Date: Wed, 19 Jul 2023 15:22:22 +0200
|
||||||
|
Subject: [PATCH] node_device: Don't leak error message buffer from
|
||||||
|
virMdevctlListDefined|Active
|
||||||
|
|
||||||
|
nodeDeviceUpdateMediatedDevices invokes virMdevctlListDefined and
|
||||||
|
virMdevctlListActive both of which were passed the same 'errmsg' buffer.
|
||||||
|
|
||||||
|
Since virCommandSetErrorBuffer() always allocates the error buffer one
|
||||||
|
of them was leaked.
|
||||||
|
|
||||||
|
Fix it by populating the 'errmsg' buffer only on failure of
|
||||||
|
virMdevctlListActive|Defined which invoke the command.
|
||||||
|
|
||||||
|
Add a comment to nodeDeviceGetMdevctlListCommand reminding how
|
||||||
|
virCommandSetErrorBuffer() works.
|
||||||
|
|
||||||
|
Fixes: 44a0f2f0c8f
|
||||||
|
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
||||||
|
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
|
||||||
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2143158
|
||||||
|
|
||||||
|
(cherry picked from commit 7ca777cc09242cb3a30b12d5e0e396c6aaf1a5e7)
|
||||||
|
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
|
||||||
|
---
|
||||||
|
src/node_device/node_device_driver.c | 17 +++++++++++++++--
|
||||||
|
1 file changed, 15 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_device_driver.c
|
||||||
|
index 5dc45ddbb4..2ef9197adc 100644
|
||||||
|
--- a/src/node_device/node_device_driver.c
|
||||||
|
+++ b/src/node_device/node_device_driver.c
|
||||||
|
@@ -1044,6 +1044,15 @@ virMdevctlSetAutostart(virNodeDeviceDef *def, bool autostart, char **errmsg)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * nodeDeviceGetMdevctlListCommand:
|
||||||
|
+ * @defined: list mdevctl entries with persistent config
|
||||||
|
+ * @output: filled with the output of mdevctl once invoked
|
||||||
|
+ * @errmsg: always allocated, optionally filled with error from 'mdevctl'
|
||||||
|
+ *
|
||||||
|
+ * Prepares a virCommand structure to invoke 'mdevctl' caller is responsible to
|
||||||
|
+ * free the buffers which are filled by the virCommand infrastructure.
|
||||||
|
+ */
|
||||||
|
virCommand*
|
||||||
|
nodeDeviceGetMdevctlListCommand(bool defined,
|
||||||
|
char **output,
|
||||||
|
@@ -1624,9 +1633,11 @@ virMdevctlListDefined(virNodeDeviceDef ***devs, char **errmsg)
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
g_autofree char *output = NULL;
|
||||||
|
- g_autoptr(virCommand) cmd = nodeDeviceGetMdevctlListCommand(true, &output, errmsg);
|
||||||
|
+ g_autofree char *errbuf = NULL;
|
||||||
|
+ g_autoptr(virCommand) cmd = nodeDeviceGetMdevctlListCommand(true, &output, &errbuf);
|
||||||
|
|
||||||
|
if (virCommandRun(cmd, &status) < 0 || status != 0) {
|
||||||
|
+ *errmsg = g_steal_pointer(&errbuf);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1642,9 +1653,11 @@ virMdevctlListActive(virNodeDeviceDef ***devs, char **errmsg)
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
g_autofree char *output = NULL;
|
||||||
|
- g_autoptr(virCommand) cmd = nodeDeviceGetMdevctlListCommand(false, &output, errmsg);
|
||||||
|
+ g_autofree char *errbuf = NULL;
|
||||||
|
+ g_autoptr(virCommand) cmd = nodeDeviceGetMdevctlListCommand(false, &output, &errbuf);
|
||||||
|
|
||||||
|
if (virCommandRun(cmd, &status) < 0 || status != 0) {
|
||||||
|
+ *errmsg = g_steal_pointer(&errbuf);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.41.0
|
105
SOURCES/libvirt-nodedev-refactor-mdevctl-thread-functions.patch
Normal file
105
SOURCES/libvirt-nodedev-refactor-mdevctl-thread-functions.patch
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
From 05230da856d2f016c21f49a406780fbe15f74c32 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <05230da856d2f016c21f49a406780fbe15f74c32.1689602377.git.jdenemar@redhat.com>
|
||||||
|
From: Jonathon Jongsma <jjongsma@redhat.com>
|
||||||
|
Date: Wed, 5 Jul 2023 15:35:59 -0500
|
||||||
|
Subject: [PATCH] nodedev: refactor mdevctl thread functions
|
||||||
|
|
||||||
|
Factor out a new scheduleMdevctlUpdate() function so that we can re-use
|
||||||
|
it from other places. Now that other events can make it necessary to
|
||||||
|
re-query mdevctl for mdev updates, this function will be useful for
|
||||||
|
coalescing multiple updates in quick succession into a single mdevctl
|
||||||
|
query.
|
||||||
|
|
||||||
|
Also rename a couple functions. The names weren't very descriptive of
|
||||||
|
their behavior. For example, the old scheduleMdevctlHandler() function
|
||||||
|
didn't actually schedule anything, it just started a thread. So rename
|
||||||
|
it to free up the 'schedule' name for the above refactored function.
|
||||||
|
|
||||||
|
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
|
||||||
|
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
(cherry picked from commit 9b7fadc5dc33b85b597c95d944dc23c02c29c29f)
|
||||||
|
|
||||||
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2143158
|
||||||
|
|
||||||
|
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
|
||||||
|
---
|
||||||
|
src/node_device/node_device_udev.c | 36 ++++++++++++++++++++----------
|
||||||
|
1 file changed, 24 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
|
||||||
|
index fce4212728..86ef4af728 100644
|
||||||
|
--- a/src/node_device/node_device_udev.c
|
||||||
|
+++ b/src/node_device/node_device_udev.c
|
||||||
|
@@ -2075,7 +2075,7 @@ udevPCITranslateInit(bool privileged G_GNUC_UNUSED)
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
-mdevctlHandlerThread(void *opaque G_GNUC_UNUSED)
|
||||||
|
+mdevctlUpdateThreadFunc(void *opaque G_GNUC_UNUSED)
|
||||||
|
{
|
||||||
|
udevEventData *priv = driver->privateData;
|
||||||
|
VIR_LOCK_GUARD lock = virLockGuardLock(&priv->mdevctlLock);
|
||||||
|
@@ -2086,7 +2086,7 @@ mdevctlHandlerThread(void *opaque G_GNUC_UNUSED)
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
-scheduleMdevctlHandler(int timer G_GNUC_UNUSED, void *opaque)
|
||||||
|
+launchMdevctlUpdateThread(int timer G_GNUC_UNUSED, void *opaque)
|
||||||
|
{
|
||||||
|
udevEventData *priv = opaque;
|
||||||
|
virThread thread;
|
||||||
|
@@ -2096,7 +2096,7 @@ scheduleMdevctlHandler(int timer G_GNUC_UNUSED, void *opaque)
|
||||||
|
priv->mdevctlTimeout = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (virThreadCreateFull(&thread, false, mdevctlHandlerThread,
|
||||||
|
+ if (virThreadCreateFull(&thread, false, mdevctlUpdateThreadFunc,
|
||||||
|
"mdevctl-thread", false, NULL) < 0) {
|
||||||
|
virReportSystemError(errno, "%s",
|
||||||
|
_("failed to create mdevctl thread"));
|
||||||
|
@@ -2192,6 +2192,26 @@ mdevctlEnableMonitor(udevEventData *priv)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+/* Schedules an mdevctl update for 100ms in the future, canceling any existing
|
||||||
|
+ * timeout that may have been set. In this way, multiple update requests in
|
||||||
|
+ * quick succession can be collapsed into a single update. if @force is true,
|
||||||
|
+ * an update thread will be spawned immediately. */
|
||||||
|
+static void
|
||||||
|
+scheduleMdevctlUpdate(udevEventData *data,
|
||||||
|
+ bool force)
|
||||||
|
+{
|
||||||
|
+ if (!force) {
|
||||||
|
+ if (data->mdevctlTimeout > 0)
|
||||||
|
+ virEventRemoveTimeout(data->mdevctlTimeout);
|
||||||
|
+ data->mdevctlTimeout = virEventAddTimeout(100, launchMdevctlUpdateThread,
|
||||||
|
+ data, NULL);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ launchMdevctlUpdateThread(-1, data);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
mdevctlEventHandleCallback(GFileMonitor *monitor G_GNUC_UNUSED,
|
||||||
|
GFile *file,
|
||||||
|
@@ -2222,15 +2242,7 @@ mdevctlEventHandleCallback(GFileMonitor *monitor G_GNUC_UNUSED,
|
||||||
|
* configuration change, try to coalesce these changes by waiting for the
|
||||||
|
* CHANGES_DONE_HINT event. As a fallback, add a timeout to trigger the
|
||||||
|
* signal if that event never comes */
|
||||||
|
- if (event_type != G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT) {
|
||||||
|
- if (priv->mdevctlTimeout > 0)
|
||||||
|
- virEventRemoveTimeout(priv->mdevctlTimeout);
|
||||||
|
- priv->mdevctlTimeout = virEventAddTimeout(100, scheduleMdevctlHandler,
|
||||||
|
- priv, NULL);
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- scheduleMdevctlHandler(-1, priv);
|
||||||
|
+ scheduleMdevctlUpdate(priv, (event_type == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
2.41.0
|
104
SOURCES/libvirt-nodedev-report-mdev-persistence-properly.patch
Normal file
104
SOURCES/libvirt-nodedev-report-mdev-persistence-properly.patch
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
From c2150285aff9b308b969d5fc6f32f75db620dfe3 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <c2150285aff9b308b969d5fc6f32f75db620dfe3.1689974710.git.jdenemar@redhat.com>
|
||||||
|
From: Jonathon Jongsma <jjongsma@redhat.com>
|
||||||
|
Date: Tue, 18 Jul 2023 14:47:49 -0500
|
||||||
|
Subject: [PATCH] nodedev: report mdev persistence properly
|
||||||
|
|
||||||
|
Since commit 44a0f2f0, we now query mdevctl for transient (active) mdevs
|
||||||
|
in order to gather attributes for the mdev. Unfortunately, this commit
|
||||||
|
introduced a regression because nodeDeviceUpdateMediatedDevice() assumed
|
||||||
|
that all mdevs returned from mdevctl were actually persistent mdevs but
|
||||||
|
we were using it to update transient mdevs. Refactor the function so
|
||||||
|
that we can use it to update both persistent and transient mdevs.
|
||||||
|
|
||||||
|
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
|
||||||
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2143158
|
||||||
|
|
||||||
|
(cherry picked from commit fa0d5f4ebc0aa178d9dea278914f9149a4c4af54)
|
||||||
|
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
|
||||||
|
---
|
||||||
|
src/node_device/node_device_driver.c | 21 +++++++++++----------
|
||||||
|
1 file changed, 11 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_device_driver.c
|
||||||
|
index a2d0600560..5dc45ddbb4 100644
|
||||||
|
--- a/src/node_device/node_device_driver.c
|
||||||
|
+++ b/src/node_device/node_device_driver.c
|
||||||
|
@@ -1339,11 +1339,12 @@ nodeDeviceDestroy(virNodeDevicePtr device)
|
||||||
|
/* takes ownership of @def and potentially frees it. @def should not be used
|
||||||
|
* after returning from this function */
|
||||||
|
static int
|
||||||
|
-nodeDeviceUpdateMediatedDevice(virNodeDeviceDef *def)
|
||||||
|
+nodeDeviceUpdateMediatedDevice(virNodeDeviceDef *def,
|
||||||
|
+ bool defined)
|
||||||
|
{
|
||||||
|
virNodeDeviceObj *obj;
|
||||||
|
virObjectEvent *event;
|
||||||
|
- bool defined = false;
|
||||||
|
+ bool was_defined = false;
|
||||||
|
g_autoptr(virNodeDeviceDef) owned = def;
|
||||||
|
g_autofree char *name = g_strdup(owned->name);
|
||||||
|
|
||||||
|
@@ -1359,13 +1360,13 @@ nodeDeviceUpdateMediatedDevice(virNodeDeviceDef *def)
|
||||||
|
bool changed;
|
||||||
|
virNodeDeviceDef *olddef = virNodeDeviceObjGetDef(obj);
|
||||||
|
|
||||||
|
- defined = virNodeDeviceObjIsPersistent(obj);
|
||||||
|
+ was_defined = virNodeDeviceObjIsPersistent(obj);
|
||||||
|
/* Active devices contain some additional information (e.g. sysfs
|
||||||
|
* path) that is not provided by mdevctl, so re-use the existing
|
||||||
|
* definition and copy over new mdev data */
|
||||||
|
changed = nodeDeviceDefCopyFromMdevctl(olddef, owned);
|
||||||
|
|
||||||
|
- if (defined && !changed) {
|
||||||
|
+ if (was_defined && !changed) {
|
||||||
|
/* if this device was already defined and the definition
|
||||||
|
* hasn't changed, there's nothing to do for this device */
|
||||||
|
virNodeDeviceObjEndAPI(&obj);
|
||||||
|
@@ -1373,11 +1374,11 @@ nodeDeviceUpdateMediatedDevice(virNodeDeviceDef *def)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* all devices returned by virMdevctlListDefined() are persistent */
|
||||||
|
- virNodeDeviceObjSetPersistent(obj, true);
|
||||||
|
+ if (defined)
|
||||||
|
+ virNodeDeviceObjSetPersistent(obj, true);
|
||||||
|
virNodeDeviceObjSetAutostart(obj, def->caps->data.mdev.autostart);
|
||||||
|
|
||||||
|
- if (!defined)
|
||||||
|
+ if (!was_defined && defined)
|
||||||
|
event = virNodeDeviceEventLifecycleNew(name,
|
||||||
|
VIR_NODE_DEVICE_EVENT_DEFINED,
|
||||||
|
0);
|
||||||
|
@@ -1447,7 +1448,7 @@ nodeDeviceDefineXML(virConnect *conn,
|
||||||
|
* have already received the uuid from virMdevctlDefine(), we can simply
|
||||||
|
* add the provisional device to the list and return it immediately and
|
||||||
|
* avoid this long delay. */
|
||||||
|
- if (nodeDeviceUpdateMediatedDevice(g_steal_pointer(&def)) < 0)
|
||||||
|
+ if (nodeDeviceUpdateMediatedDevice(g_steal_pointer(&def), true) < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return virGetNodeDevice(conn, name);
|
||||||
|
@@ -1742,7 +1743,7 @@ nodeDeviceUpdateMediatedDevices(void)
|
||||||
|
removeMissingPersistentMdev, &data);
|
||||||
|
|
||||||
|
for (i = 0; i < data.ndefs; i++)
|
||||||
|
- if (nodeDeviceUpdateMediatedDevice(defs[i]) < 0)
|
||||||
|
+ if (nodeDeviceUpdateMediatedDevice(defs[i], true) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* Update active/transient mdev devices */
|
||||||
|
@@ -1753,7 +1754,7 @@ nodeDeviceUpdateMediatedDevices(void)
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < act_ndefs; i++)
|
||||||
|
- if (nodeDeviceUpdateMediatedDevice(act_defs[i]) < 0)
|
||||||
|
+ if (nodeDeviceUpdateMediatedDevice(act_defs[i], false) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
--
|
||||||
|
2.41.0
|
@ -0,0 +1,50 @@
|
|||||||
|
From d993cec578f2bbb121dcacea6728cf34da14e62e Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <d993cec578f2bbb121dcacea6728cf34da14e62e.1689602377.git.jdenemar@redhat.com>
|
||||||
|
From: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
Date: Fri, 30 Jun 2023 13:34:00 +0200
|
||||||
|
Subject: [PATCH] nodedev: transient mdev update on nodeDeviceCreateXML
|
||||||
|
|
||||||
|
Update the optional mdev attributes by running an mdevctl update on a
|
||||||
|
new created nodedev object representing an mdev.
|
||||||
|
|
||||||
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2143158
|
||||||
|
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
|
||||||
|
|
||||||
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2143158
|
||||||
|
|
||||||
|
(cherry picked from commit 37481aa1f15ece6b187b8fa219966f77648c813d)
|
||||||
|
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
|
||||||
|
---
|
||||||
|
src/node_device/node_device_udev.c | 12 ++++++++++--
|
||||||
|
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
|
||||||
|
index 4c37ec3189..fce4212728 100644
|
||||||
|
--- a/src/node_device/node_device_udev.c
|
||||||
|
+++ b/src/node_device/node_device_udev.c
|
||||||
|
@@ -1757,12 +1757,20 @@ nodeStateCleanup(void)
|
||||||
|
static int
|
||||||
|
udevHandleOneDevice(struct udev_device *device)
|
||||||
|
{
|
||||||
|
+ virNodeDevCapType dev_cap_type;
|
||||||
|
const char *action = udev_device_get_action(device);
|
||||||
|
|
||||||
|
VIR_DEBUG("udev action: '%s': %s", action, udev_device_get_syspath(device));
|
||||||
|
|
||||||
|
- if (STREQ(action, "add") || STREQ(action, "change"))
|
||||||
|
- return udevAddOneDevice(device);
|
||||||
|
+ if (STREQ(action, "add") || STREQ(action, "change")) {
|
||||||
|
+ int ret = udevAddOneDevice(device);
|
||||||
|
+ if (ret == 0 &&
|
||||||
|
+ udevGetDeviceType(device, &dev_cap_type) == 0 &&
|
||||||
|
+ dev_cap_type == VIR_NODE_DEV_CAP_MDEV)
|
||||||
|
+ if (nodeDeviceUpdateMediatedDevices() < 0)
|
||||||
|
+ VIR_WARN("mdevctl failed to update mediated devices");
|
||||||
|
+ return ret;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (STREQ(action, "remove"))
|
||||||
|
return udevRemoveOneDevice(device);
|
||||||
|
--
|
||||||
|
2.41.0
|
@ -0,0 +1,70 @@
|
|||||||
|
From 48813113774c7ff0ab1b43c1861b6495bb3ce830 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <48813113774c7ff0ab1b43c1861b6495bb3ce830.1689602377.git.jdenemar@redhat.com>
|
||||||
|
From: Jonathon Jongsma <jjongsma@redhat.com>
|
||||||
|
Date: Thu, 6 Jul 2023 09:16:35 -0500
|
||||||
|
Subject: [PATCH] nodedev: update mdevs from the mdevctl thread
|
||||||
|
|
||||||
|
Rather than directly executing mdevctl from the udev event thread when
|
||||||
|
we determine that we need to re-query, schedule the mdevctl thread to
|
||||||
|
run. This also helps to coalesce multiple back-to-back updates into a
|
||||||
|
single one when there are multiple updates in a row or at startup when a
|
||||||
|
host has a very large number of mdevs.
|
||||||
|
|
||||||
|
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
|
||||||
|
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
(cherry picked from commit 14026db9b0e25739ea30685bd643ff23aca30588)
|
||||||
|
|
||||||
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2143158
|
||||||
|
|
||||||
|
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
|
||||||
|
---
|
||||||
|
src/node_device/node_device_udev.c | 13 +++++++------
|
||||||
|
1 file changed, 7 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
|
||||||
|
index 86ef4af728..6451574c1d 100644
|
||||||
|
--- a/src/node_device/node_device_udev.c
|
||||||
|
+++ b/src/node_device/node_device_udev.c
|
||||||
|
@@ -1443,6 +1443,9 @@ udevGetDeviceDetails(struct udev_device *device,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+static void scheduleMdevctlUpdate(udevEventData *data, bool force);
|
||||||
|
+
|
||||||
|
+
|
||||||
|
static int
|
||||||
|
udevRemoveOneDeviceSysPath(const char *path)
|
||||||
|
{
|
||||||
|
@@ -1475,8 +1478,7 @@ udevRemoveOneDeviceSysPath(const char *path)
|
||||||
|
virNodeDeviceObjEndAPI(&obj);
|
||||||
|
|
||||||
|
/* cannot check for mdev_types since they have already been removed */
|
||||||
|
- if (nodeDeviceUpdateMediatedDevices() < 0)
|
||||||
|
- VIR_WARN("mdevctl failed to update mediated devices");
|
||||||
|
+ scheduleMdevctlUpdate(driver->privateData, false);
|
||||||
|
|
||||||
|
virObjectEventStateQueue(driver->nodeDeviceEventState, event);
|
||||||
|
return 0;
|
||||||
|
@@ -1604,8 +1606,8 @@ udevAddOneDevice(struct udev_device *device)
|
||||||
|
has_mdev_types = virNodeDeviceObjHasCap(obj, VIR_NODE_DEV_CAP_MDEV_TYPES);
|
||||||
|
virNodeDeviceObjEndAPI(&obj);
|
||||||
|
|
||||||
|
- if (has_mdev_types && nodeDeviceUpdateMediatedDevices() < 0)
|
||||||
|
- VIR_WARN("mdevctl failed to update mediated devices");
|
||||||
|
+ if (has_mdev_types)
|
||||||
|
+ scheduleMdevctlUpdate(driver->privateData, false);
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
@@ -1767,8 +1769,7 @@ udevHandleOneDevice(struct udev_device *device)
|
||||||
|
if (ret == 0 &&
|
||||||
|
udevGetDeviceType(device, &dev_cap_type) == 0 &&
|
||||||
|
dev_cap_type == VIR_NODE_DEV_CAP_MDEV)
|
||||||
|
- if (nodeDeviceUpdateMediatedDevices() < 0)
|
||||||
|
- VIR_WARN("mdevctl failed to update mediated devices");
|
||||||
|
+ scheduleMdevctlUpdate(driver->privateData, false);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.41.0
|
@ -0,0 +1,77 @@
|
|||||||
|
From a106b0bcb4fd652b9843257f799d9601151449b4 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <a106b0bcb4fd652b9843257f799d9601151449b4.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Fri, 26 May 2023 19:59:06 +0200
|
||||||
|
Subject: [PATCH] qemu: Don't overwrite NVRAM template for legacy firmware
|
||||||
|
|
||||||
|
Just because we have found a matching entry, it doesn't mean
|
||||||
|
that we should discard the information explicitly provided in
|
||||||
|
the domain XML.
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
https://gitlab.com/libvirt/libvirt/-/issues/500
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 4a49114ff47d4a9432d211200f734886f9ce200b)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_firmware.c | 26 +++++++++++++++++--
|
||||||
|
...efi-secboot-legacy-paths.x86_64-latest.xml | 2 +-
|
||||||
|
2 files changed, 25 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
|
||||||
|
index b1d342563b..a9437b5b95 100644
|
||||||
|
--- a/src/qemu/qemu_firmware.c
|
||||||
|
+++ b/src/qemu/qemu_firmware.c
|
||||||
|
@@ -1609,8 +1609,30 @@ qemuFirmwareFillDomainLegacy(virQEMUDriver *driver,
|
||||||
|
loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH;
|
||||||
|
loader->readonly = VIR_TRISTATE_BOOL_YES;
|
||||||
|
|
||||||
|
- VIR_FREE(loader->nvramTemplate);
|
||||||
|
- loader->nvramTemplate = g_strdup(cfg->firmwares[i]->nvram);
|
||||||
|
+ /* Only use the default template path if one hasn't been
|
||||||
|
+ * provided by the user.
|
||||||
|
+ *
|
||||||
|
+ * In addition to fully-custom templates, which are a valid
|
||||||
|
+ * use case, we could simply be in a situation where
|
||||||
|
+ * qemu.conf contains
|
||||||
|
+ *
|
||||||
|
+ * nvram = [
|
||||||
|
+ * "/path/to/OVMF_CODE.secboot.fd:/path/to/OVMF_VARS.fd",
|
||||||
|
+ * "/path/to/OVMF_CODE.secboot.fd:/path/to/OVMF_VARS.secboot.fd"
|
||||||
|
+ * ]
|
||||||
|
+ *
|
||||||
|
+ * and the domain has been configured as
|
||||||
|
+ *
|
||||||
|
+ * <os>
|
||||||
|
+ * <loader readonly='yes' type='pflash'>/path/to/OVMF_CODE.secboot.fd</loader>
|
||||||
|
+ * <nvram template='/path/to/OVMF/OVMF_VARS.secboot.fd'>
|
||||||
|
+ * </os>
|
||||||
|
+ *
|
||||||
|
+ * In this case, the global default is to have Secure Boot
|
||||||
|
+ * disabled, but the domain configuration explicitly enables
|
||||||
|
+ * it, and we shouldn't overrule this choice */
|
||||||
|
+ if (!loader->nvramTemplate)
|
||||||
|
+ loader->nvramTemplate = g_strdup(cfg->firmwares[i]->nvram);
|
||||||
|
|
||||||
|
qemuFirmwareEnsureNVRAM(def, cfg, VIR_STORAGE_FILE_RAW);
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-secboot-legacy-paths.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-secboot-legacy-paths.x86_64-latest.xml
|
||||||
|
index b8c2dfef66..9027123558 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/firmware-manual-efi-secboot-legacy-paths.x86_64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-secboot-legacy-paths.x86_64-latest.xml
|
||||||
|
@@ -7,7 +7,7 @@
|
||||||
|
<os>
|
||||||
|
<type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
|
||||||
|
<loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader>
|
||||||
|
- <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
|
||||||
|
+ <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -0,0 +1,340 @@
|
|||||||
|
From 9b3f3afb21c64dc403fea734b1cb75a8bd2e4fc0 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <9b3f3afb21c64dc403fea734b1cb75a8bd2e4fc0.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Tue, 30 May 2023 18:01:58 +0200
|
||||||
|
Subject: [PATCH] qemu: Filter firmware based on loader.readonly
|
||||||
|
|
||||||
|
If the user included loader.readonly=no in the domain XML, we
|
||||||
|
should not pick a firmware build that expects to work with
|
||||||
|
loader.readonly=yes.
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit e96e322725f27d59ebcbd194c8da949b64bab9d6)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_firmware.c | 12 ++++++
|
||||||
|
...-auto-efi-rw-abi-update.x86_64-latest.args | 38 -----------------
|
||||||
|
...e-auto-efi-rw-abi-update.x86_64-latest.err | 1 +
|
||||||
|
.../firmware-auto-efi-rw.x86_64-latest.args | 38 -----------------
|
||||||
|
.../firmware-auto-efi-rw.x86_64-latest.err | 1 +
|
||||||
|
...ual-efi-rw-legacy-paths.x86_64-latest.args | 6 +--
|
||||||
|
...ual-efi-rw-modern-paths.x86_64-latest.args | 6 +--
|
||||||
|
tests/qemuxml2argvtest.c | 4 +-
|
||||||
|
...e-auto-efi-rw-abi-update.x86_64-latest.xml | 41 -------------------
|
||||||
|
.../firmware-auto-efi-rw.x86_64-latest.xml | 8 +---
|
||||||
|
...nual-efi-rw-legacy-paths.x86_64-latest.xml | 3 +-
|
||||||
|
...nual-efi-rw-modern-paths.x86_64-latest.xml | 9 +---
|
||||||
|
tests/qemuxml2xmltest.c | 1 -
|
||||||
|
13 files changed, 24 insertions(+), 144 deletions(-)
|
||||||
|
delete mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-rw-abi-update.x86_64-latest.args
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-rw-abi-update.x86_64-latest.err
|
||||||
|
delete mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-rw.x86_64-latest.args
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-rw.x86_64-latest.err
|
||||||
|
delete mode 100644 tests/qemuxml2xmloutdata/firmware-auto-efi-rw-abi-update.x86_64-latest.xml
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
|
||||||
|
index 2c9a03e6cf..3538654913 100644
|
||||||
|
--- a/src/qemu/qemu_firmware.c
|
||||||
|
+++ b/src/qemu/qemu_firmware.c
|
||||||
|
@@ -1295,6 +1295,13 @@ qemuFirmwareMatchDomain(const virDomainDef *def,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (loader &&
|
||||||
|
+ loader->readonly == VIR_TRISTATE_BOOL_NO &&
|
||||||
|
+ flash->mode != QEMU_FIRMWARE_FLASH_MODE_COMBINED) {
|
||||||
|
+ VIR_DEBUG("Discarding readonly loader");
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (STRNEQ(flash->executable.format, "raw") &&
|
||||||
|
STRNEQ(flash->executable.format, "qcow2")) {
|
||||||
|
VIR_DEBUG("Discarding loader with unsupported flash format '%s'",
|
||||||
|
@@ -1593,6 +1600,11 @@ qemuFirmwareFillDomainLegacy(virQEMUDriver *driver,
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (loader->readonly == VIR_TRISTATE_BOOL_NO) {
|
||||||
|
+ VIR_DEBUG("Ignoring legacy entries for read-write loader");
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (loader->stateless == VIR_TRISTATE_BOOL_YES) {
|
||||||
|
VIR_DEBUG("Ignoring legacy entries for stateless loader");
|
||||||
|
return 1;
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-rw-abi-update.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-rw-abi-update.x86_64-latest.args
|
||||||
|
deleted file mode 100644
|
||||||
|
index 48f357cbf9..0000000000
|
||||||
|
--- a/tests/qemuxml2argvdata/firmware-auto-efi-rw-abi-update.x86_64-latest.args
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,38 +0,0 @@
|
||||||
|
-LC_ALL=C \
|
||||||
|
-PATH=/bin \
|
||||||
|
-HOME=/var/lib/libvirt/qemu/domain--1-guest \
|
||||||
|
-USER=test \
|
||||||
|
-LOGNAME=test \
|
||||||
|
-XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \
|
||||||
|
-XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \
|
||||||
|
-XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
-/usr/bin/qemu-system-x86_64 \
|
||||||
|
--name guest=guest,debug-threads=on \
|
||||||
|
--S \
|
||||||
|
--object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
--blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
--blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
--machine pc-q35-4.0,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format,acpi=on \
|
||||||
|
--accel kvm \
|
||||||
|
--cpu qemu64 \
|
||||||
|
--global driver=cfi.pflash01,property=secure,value=on \
|
||||||
|
--m size=1048576k \
|
||||||
|
--object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \
|
||||||
|
--overcommit mem-lock=off \
|
||||||
|
--smp 1,sockets=1,cores=1,threads=1 \
|
||||||
|
--uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \
|
||||||
|
--display none \
|
||||||
|
--no-user-config \
|
||||||
|
--nodefaults \
|
||||||
|
--chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
|
||||||
|
--mon chardev=charmonitor,id=monitor,mode=control \
|
||||||
|
--rtc base=utc \
|
||||||
|
--no-shutdown \
|
||||||
|
--boot strict=on \
|
||||||
|
--audiodev '{"id":"audio1","driver":"none"}' \
|
||||||
|
--global ICH9-LPC.noreboot=off \
|
||||||
|
--watchdog-action reset \
|
||||||
|
--sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
|
||||||
|
--msg timestamp=on
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-rw-abi-update.x86_64-latest.err b/tests/qemuxml2argvdata/firmware-auto-efi-rw-abi-update.x86_64-latest.err
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..4cfde1bd2e
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-auto-efi-rw-abi-update.x86_64-latest.err
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+operation failed: Unable to find any firmware to satisfy 'efi'
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-rw.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-rw.x86_64-latest.args
|
||||||
|
deleted file mode 100644
|
||||||
|
index 48f357cbf9..0000000000
|
||||||
|
--- a/tests/qemuxml2argvdata/firmware-auto-efi-rw.x86_64-latest.args
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,38 +0,0 @@
|
||||||
|
-LC_ALL=C \
|
||||||
|
-PATH=/bin \
|
||||||
|
-HOME=/var/lib/libvirt/qemu/domain--1-guest \
|
||||||
|
-USER=test \
|
||||||
|
-LOGNAME=test \
|
||||||
|
-XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \
|
||||||
|
-XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \
|
||||||
|
-XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
-/usr/bin/qemu-system-x86_64 \
|
||||||
|
--name guest=guest,debug-threads=on \
|
||||||
|
--S \
|
||||||
|
--object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
--blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
--blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
--machine pc-q35-4.0,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format,acpi=on \
|
||||||
|
--accel kvm \
|
||||||
|
--cpu qemu64 \
|
||||||
|
--global driver=cfi.pflash01,property=secure,value=on \
|
||||||
|
--m size=1048576k \
|
||||||
|
--object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \
|
||||||
|
--overcommit mem-lock=off \
|
||||||
|
--smp 1,sockets=1,cores=1,threads=1 \
|
||||||
|
--uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \
|
||||||
|
--display none \
|
||||||
|
--no-user-config \
|
||||||
|
--nodefaults \
|
||||||
|
--chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
|
||||||
|
--mon chardev=charmonitor,id=monitor,mode=control \
|
||||||
|
--rtc base=utc \
|
||||||
|
--no-shutdown \
|
||||||
|
--boot strict=on \
|
||||||
|
--audiodev '{"id":"audio1","driver":"none"}' \
|
||||||
|
--global ICH9-LPC.noreboot=off \
|
||||||
|
--watchdog-action reset \
|
||||||
|
--sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
|
||||||
|
--msg timestamp=on
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-rw.x86_64-latest.err b/tests/qemuxml2argvdata/firmware-auto-efi-rw.x86_64-latest.err
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..4cfde1bd2e
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-auto-efi-rw.x86_64-latest.err
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+operation failed: Unable to find any firmware to satisfy 'efi'
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-rw-legacy-paths.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-rw-legacy-paths.x86_64-latest.args
|
||||||
|
index ccc279e4e3..85495da6f5 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/firmware-manual-efi-rw-legacy-paths.x86_64-latest.args
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-manual-efi-rw-legacy-paths.x86_64-latest.args
|
||||||
|
@@ -11,10 +11,8 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
-S \
|
||||||
|
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
|
||||||
|
-blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
--blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
--blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
--machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format,acpi=on \
|
||||||
|
+-blockdev '{"node-name":"libvirt-pflash0-format","read-only":false,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
+-machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,acpi=on \
|
||||||
|
-accel tcg \
|
||||||
|
-cpu qemu64 \
|
||||||
|
-m size=1048576k \
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-rw-modern-paths.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-rw-modern-paths.x86_64-latest.args
|
||||||
|
index 2d45fa4792..c26daad29f 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/firmware-manual-efi-rw-modern-paths.x86_64-latest.args
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-manual-efi-rw-modern-paths.x86_64-latest.args
|
||||||
|
@@ -11,10 +11,8 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
-S \
|
||||||
|
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
|
||||||
|
-blockdev '{"driver":"file","filename":"/usr/share/edk2/ovmf/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
--blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
--blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
--machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format,acpi=on \
|
||||||
|
+-blockdev '{"node-name":"libvirt-pflash0-format","read-only":false,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
+-machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,acpi=on \
|
||||||
|
-accel tcg \
|
||||||
|
-cpu qemu64 \
|
||||||
|
-m size=1048576k \
|
||||||
|
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
|
||||||
|
index b2d9e00350..370b26a023 100644
|
||||||
|
--- a/tests/qemuxml2argvtest.c
|
||||||
|
+++ b/tests/qemuxml2argvtest.c
|
||||||
|
@@ -1089,8 +1089,8 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi");
|
||||||
|
DO_TEST_CAPS_LATEST_ABI_UPDATE("firmware-auto-efi-abi-update");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-stateless");
|
||||||
|
- DO_TEST_CAPS_LATEST("firmware-auto-efi-rw");
|
||||||
|
- DO_TEST_CAPS_LATEST_ABI_UPDATE("firmware-auto-efi-rw-abi-update");
|
||||||
|
+ DO_TEST_CAPS_LATEST_FAILURE("firmware-auto-efi-rw");
|
||||||
|
+ DO_TEST_CAPS_LATEST_ABI_UPDATE_PARSE_ERROR("firmware-auto-efi-rw-abi-update");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-loader-secure");
|
||||||
|
DO_TEST_CAPS_LATEST_ABI_UPDATE("firmware-auto-efi-loader-secure-abi-update");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-loader-insecure");
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-rw-abi-update.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-rw-abi-update.x86_64-latest.xml
|
||||||
|
deleted file mode 100644
|
||||||
|
index 332d931ba1..0000000000
|
||||||
|
--- a/tests/qemuxml2xmloutdata/firmware-auto-efi-rw-abi-update.x86_64-latest.xml
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,41 +0,0 @@
|
||||||
|
-<domain type='kvm'>
|
||||||
|
- <name>guest</name>
|
||||||
|
- <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid>
|
||||||
|
- <memory unit='KiB'>1048576</memory>
|
||||||
|
- <currentMemory unit='KiB'>1048576</currentMemory>
|
||||||
|
- <vcpu placement='static'>1</vcpu>
|
||||||
|
- <os firmware='efi'>
|
||||||
|
- <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
|
||||||
|
- <firmware>
|
||||||
|
- <feature enabled='yes' name='enrolled-keys'/>
|
||||||
|
- <feature enabled='yes' name='secure-boot'/>
|
||||||
|
- </firmware>
|
||||||
|
- <loader readonly='yes' secure='yes' type='pflash'>/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd</loader>
|
||||||
|
- <nvram template='/usr/share/edk2/ovmf/OVMF_VARS.secboot.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
|
||||||
|
- <boot dev='hd'/>
|
||||||
|
- </os>
|
||||||
|
- <features>
|
||||||
|
- <acpi/>
|
||||||
|
- <smm state='on'/>
|
||||||
|
- </features>
|
||||||
|
- <cpu mode='custom' match='exact' check='none'>
|
||||||
|
- <model fallback='forbid'>qemu64</model>
|
||||||
|
- </cpu>
|
||||||
|
- <clock offset='utc'/>
|
||||||
|
- <on_poweroff>destroy</on_poweroff>
|
||||||
|
- <on_reboot>restart</on_reboot>
|
||||||
|
- <on_crash>destroy</on_crash>
|
||||||
|
- <devices>
|
||||||
|
- <emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||||
|
- <controller type='usb' index='0' model='none'/>
|
||||||
|
- <controller type='sata' index='0'>
|
||||||
|
- <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
|
||||||
|
- </controller>
|
||||||
|
- <controller type='pci' index='0' model='pcie-root'/>
|
||||||
|
- <input type='mouse' bus='ps2'/>
|
||||||
|
- <input type='keyboard' bus='ps2'/>
|
||||||
|
- <audio id='1' type='none'/>
|
||||||
|
- <watchdog model='itco' action='reset'/>
|
||||||
|
- <memballoon model='none'/>
|
||||||
|
- </devices>
|
||||||
|
-</domain>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-rw.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-rw.x86_64-latest.xml
|
||||||
|
index 332d931ba1..c2d0c33a0b 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/firmware-auto-efi-rw.x86_64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-rw.x86_64-latest.xml
|
||||||
|
@@ -6,17 +6,11 @@
|
||||||
|
<vcpu placement='static'>1</vcpu>
|
||||||
|
<os firmware='efi'>
|
||||||
|
<type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
|
||||||
|
- <firmware>
|
||||||
|
- <feature enabled='yes' name='enrolled-keys'/>
|
||||||
|
- <feature enabled='yes' name='secure-boot'/>
|
||||||
|
- </firmware>
|
||||||
|
- <loader readonly='yes' secure='yes' type='pflash'>/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd</loader>
|
||||||
|
- <nvram template='/usr/share/edk2/ovmf/OVMF_VARS.secboot.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
|
||||||
|
+ <loader readonly='no'/>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
<acpi/>
|
||||||
|
- <smm state='on'/>
|
||||||
|
</features>
|
||||||
|
<cpu mode='custom' match='exact' check='none'>
|
||||||
|
<model fallback='forbid'>qemu64</model>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-rw-legacy-paths.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-rw-legacy-paths.x86_64-latest.xml
|
||||||
|
index cfd7a6824f..c5baedc42c 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/firmware-manual-efi-rw-legacy-paths.x86_64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-rw-legacy-paths.x86_64-latest.xml
|
||||||
|
@@ -6,8 +6,7 @@
|
||||||
|
<vcpu placement='static'>1</vcpu>
|
||||||
|
<os>
|
||||||
|
<type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
|
||||||
|
- <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
|
||||||
|
- <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
|
||||||
|
+ <loader readonly='no' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-rw-modern-paths.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-rw-modern-paths.x86_64-latest.xml
|
||||||
|
index 468ca022ef..0d755a4306 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/firmware-manual-efi-rw-modern-paths.x86_64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-rw-modern-paths.x86_64-latest.xml
|
||||||
|
@@ -4,14 +4,9 @@
|
||||||
|
<memory unit='KiB'>1048576</memory>
|
||||||
|
<currentMemory unit='KiB'>1048576</currentMemory>
|
||||||
|
<vcpu placement='static'>1</vcpu>
|
||||||
|
- <os firmware='efi'>
|
||||||
|
+ <os>
|
||||||
|
<type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
|
||||||
|
- <firmware>
|
||||||
|
- <feature enabled='no' name='enrolled-keys'/>
|
||||||
|
- <feature enabled='no' name='secure-boot'/>
|
||||||
|
- </firmware>
|
||||||
|
- <loader readonly='yes' type='pflash'>/usr/share/edk2/ovmf/OVMF_CODE.fd</loader>
|
||||||
|
- <nvram template='/usr/share/edk2/ovmf/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
|
||||||
|
+ <loader readonly='no' type='pflash'>/usr/share/edk2/ovmf/OVMF_CODE.fd</loader>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
|
||||||
|
index d3d4e4e585..3f2ef10df7 100644
|
||||||
|
--- a/tests/qemuxml2xmltest.c
|
||||||
|
+++ b/tests/qemuxml2xmltest.c
|
||||||
|
@@ -901,7 +901,6 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_LATEST_ABI_UPDATE("firmware-auto-efi-abi-update");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-stateless");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-rw");
|
||||||
|
- DO_TEST_CAPS_LATEST_ABI_UPDATE("firmware-auto-efi-rw-abi-update");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-loader-secure");
|
||||||
|
DO_TEST_CAPS_LATEST_ABI_UPDATE("firmware-auto-efi-loader-secure-abi-update");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-loader-insecure");
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -0,0 +1,46 @@
|
|||||||
|
From f57a07068f7cc7ccdbf9814f9c69cbef1d2c9d6c Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <f57a07068f7cc7ccdbf9814f9c69cbef1d2c9d6c.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Fri, 26 May 2023 17:47:42 +0200
|
||||||
|
Subject: [PATCH] qemu: Fix lookup against stateless/combined pflash
|
||||||
|
|
||||||
|
Just like the more common split builds, these are of type
|
||||||
|
QEMU_FIRMWARE_DEVICE_FLASH; however, they have no associated
|
||||||
|
NVRAM template, so we can't access the corresponding structure
|
||||||
|
member unconditionally or we'll trigger a crash.
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit ac76386edad3be2bbd6202a30063b9205011f5c5)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_firmware.c | 9 ++++++---
|
||||||
|
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
|
||||||
|
index 5f030ebce4..b1d342563b 100644
|
||||||
|
--- a/src/qemu/qemu_firmware.c
|
||||||
|
+++ b/src/qemu/qemu_firmware.c
|
||||||
|
@@ -971,9 +971,12 @@ qemuFirmwareMatchesPaths(const qemuFirmware *fw,
|
||||||
|
if (loader && loader->path &&
|
||||||
|
STRNEQ(loader->path, flash->executable.filename))
|
||||||
|
return false;
|
||||||
|
- if (loader && loader->nvramTemplate &&
|
||||||
|
- STRNEQ(loader->nvramTemplate, flash->nvram_template.filename))
|
||||||
|
- return false;
|
||||||
|
+ if (loader && loader->nvramTemplate) {
|
||||||
|
+ if (flash->mode != QEMU_FIRMWARE_FLASH_MODE_SPLIT)
|
||||||
|
+ return false;
|
||||||
|
+ if (STRNEQ(loader->nvramTemplate, flash->nvram_template.filename))
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
break;
|
||||||
|
case QEMU_FIRMWARE_DEVICE_MEMORY:
|
||||||
|
if (loader && loader->path &&
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -0,0 +1,48 @@
|
|||||||
|
From 1fefaa42f98530ed449ea9aa4863c4c1bc5327b5 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <1fefaa42f98530ed449ea9aa4863c4c1bc5327b5.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Wed, 2 Aug 2023 17:18:32 +0200
|
||||||
|
Subject: [PATCH] qemu: Fix return value for qemuFirmwareFillDomainLegacy()
|
||||||
|
|
||||||
|
The documentation states that, just like the Modern() variant,
|
||||||
|
this function should return 1 if a match wasn't found. It
|
||||||
|
currently doesn't do that, and returns 0 instead.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit d917883b30f1d33f1df78394152e67b402b9c72e)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_firmware.c | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
|
||||||
|
index cf9a45dc39..5f030ebce4 100644
|
||||||
|
--- a/src/qemu/qemu_firmware.c
|
||||||
|
+++ b/src/qemu/qemu_firmware.c
|
||||||
|
@@ -1575,17 +1575,17 @@ qemuFirmwareFillDomainLegacy(virQEMUDriver *driver,
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
if (!loader)
|
||||||
|
- return 0;
|
||||||
|
+ return 1;
|
||||||
|
|
||||||
|
if (loader->type != VIR_DOMAIN_LOADER_TYPE_PFLASH) {
|
||||||
|
VIR_DEBUG("Ignoring legacy entries for '%s' loader",
|
||||||
|
virDomainLoaderTypeToString(loader->type));
|
||||||
|
- return 0;
|
||||||
|
+ return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (loader->stateless == VIR_TRISTATE_BOOL_YES) {
|
||||||
|
VIR_DEBUG("Ignoring legacy entries for stateless loader");
|
||||||
|
- return 0;
|
||||||
|
+ return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (loader->format != VIR_STORAGE_FILE_RAW) {
|
||||||
|
--
|
||||||
|
2.42.0
|
321
SOURCES/libvirt-qemu-Generate-NVRAM-path-in-more-cases.patch
Normal file
321
SOURCES/libvirt-qemu-Generate-NVRAM-path-in-more-cases.patch
Normal file
@ -0,0 +1,321 @@
|
|||||||
|
From e71463f711cef030989717f401d0399ec6870705 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <e71463f711cef030989717f401d0399ec6870705.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Fri, 26 May 2023 14:40:02 +0200
|
||||||
|
Subject: [PATCH] qemu: Generate NVRAM path in more cases
|
||||||
|
|
||||||
|
Right now, we only generate it after finding a matching entry
|
||||||
|
either among firmware descriptors or in the legacy firmware
|
||||||
|
list.
|
||||||
|
|
||||||
|
Even if the domain is configured to use a custom firmware build
|
||||||
|
that we know nothing about, however, we should still automatically
|
||||||
|
generate the NVRAM path instead of requiring the user to provide
|
||||||
|
it manually.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit ccbb987707e282af8d7f8c0db47e70fdebab959f)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_firmware.c | 52 +++++++++++--------
|
||||||
|
...loader-path-nonstandard.x86_64-latest.args | 37 +++++++++++++
|
||||||
|
...-loader-path-nonstandard.x86_64-latest.err | 1 -
|
||||||
|
...am-template-nonstandard.x86_64-latest.args | 37 +++++++++++++
|
||||||
|
...ram-template-nonstandard.x86_64-latest.err | 1 -
|
||||||
|
tests/qemuxml2argvtest.c | 4 +-
|
||||||
|
...-loader-path-nonstandard.x86_64-latest.xml | 2 +-
|
||||||
|
...ram-template-nonstandard.x86_64-latest.xml | 2 +-
|
||||||
|
8 files changed, 109 insertions(+), 27 deletions(-)
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/firmware-manual-efi-loader-path-nonstandard.x86_64-latest.args
|
||||||
|
delete mode 100644 tests/qemuxml2argvdata/firmware-manual-efi-loader-path-nonstandard.x86_64-latest.err
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.args
|
||||||
|
delete mode 100644 tests/qemuxml2argvdata/firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.err
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
|
||||||
|
index a9437b5b95..2c9a03e6cf 100644
|
||||||
|
--- a/src/qemu/qemu_firmware.c
|
||||||
|
+++ b/src/qemu/qemu_firmware.c
|
||||||
|
@@ -1053,7 +1053,7 @@ qemuFirmwareOSInterfaceTypeFromOsDefLoaderType(virDomainLoader type)
|
||||||
|
/**
|
||||||
|
* qemuFirmwareEnsureNVRAM:
|
||||||
|
* @def: domain definition
|
||||||
|
- * @cfg: QEMU driver configuration
|
||||||
|
+ * @driver: QEMU driver
|
||||||
|
*
|
||||||
|
* Make sure that a source for the NVRAM file exists, possibly by
|
||||||
|
* creating it. This might involve automatically generating the
|
||||||
|
@@ -1061,15 +1061,24 @@ qemuFirmwareOSInterfaceTypeFromOsDefLoaderType(virDomainLoader type)
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
qemuFirmwareEnsureNVRAM(virDomainDef *def,
|
||||||
|
- const virQEMUDriverConfig *cfg,
|
||||||
|
- virStorageFileFormat format)
|
||||||
|
+ virQEMUDriver *driver)
|
||||||
|
{
|
||||||
|
+ g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
|
||||||
|
virDomainLoaderDef *loader = def->os.loader;
|
||||||
|
const char *ext = NULL;
|
||||||
|
|
||||||
|
if (!loader)
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ if (loader->type != VIR_DOMAIN_LOADER_TYPE_PFLASH)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ if (loader->readonly != VIR_TRISTATE_BOOL_YES)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ if (loader->stateless == VIR_TRISTATE_BOOL_YES)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
/* If the source already exists and is fully specified, including
|
||||||
|
* the path, leave it alone */
|
||||||
|
if (loader->nvram && loader->nvram->path)
|
||||||
|
@@ -1080,11 +1089,11 @@ qemuFirmwareEnsureNVRAM(virDomainDef *def,
|
||||||
|
|
||||||
|
loader->nvram = virStorageSourceNew();
|
||||||
|
loader->nvram->type = VIR_STORAGE_TYPE_FILE;
|
||||||
|
- loader->nvram->format = format;
|
||||||
|
+ loader->nvram->format = loader->format;
|
||||||
|
|
||||||
|
- if (format == VIR_STORAGE_FILE_RAW)
|
||||||
|
+ if (loader->nvram->format == VIR_STORAGE_FILE_RAW)
|
||||||
|
ext = ".fd";
|
||||||
|
- if (format == VIR_STORAGE_FILE_QCOW2)
|
||||||
|
+ if (loader->nvram->format == VIR_STORAGE_FILE_QCOW2)
|
||||||
|
ext = ".qcow2";
|
||||||
|
|
||||||
|
loader->nvram->path = g_strdup_printf("%s/%s_VARS%s",
|
||||||
|
@@ -1347,8 +1356,7 @@ qemuFirmwareMatchDomain(const virDomainDef *def,
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
-qemuFirmwareEnableFeaturesModern(virQEMUDriverConfig *cfg,
|
||||||
|
- virDomainDef *def,
|
||||||
|
+qemuFirmwareEnableFeaturesModern(virDomainDef *def,
|
||||||
|
const qemuFirmware *fw)
|
||||||
|
{
|
||||||
|
const qemuFirmwareMappingFlash *flash = &fw->mapping.data.flash;
|
||||||
|
@@ -1377,16 +1385,15 @@ qemuFirmwareEnableFeaturesModern(virQEMUDriverConfig *cfg,
|
||||||
|
loader->path = g_strdup(flash->executable.filename);
|
||||||
|
|
||||||
|
if (flash->mode == QEMU_FIRMWARE_FLASH_MODE_SPLIT) {
|
||||||
|
- if ((format = virStorageFileFormatTypeFromString(flash->nvram_template.format)) < 0)
|
||||||
|
- return -1;
|
||||||
|
-
|
||||||
|
- qemuFirmwareEnsureNVRAM(def, cfg, format);
|
||||||
|
-
|
||||||
|
- /* If the NVRAM is not a local path then we can't create or
|
||||||
|
- * reset it, so in that case filling in the nvramTemplate
|
||||||
|
- * field would be misleading */
|
||||||
|
+ /* Only fill in nvramTemplate if the NVRAM location is already
|
||||||
|
+ * known to be a local path or hasn't been provided, in which
|
||||||
|
+ * case a local path will be generated by libvirt later.
|
||||||
|
+ *
|
||||||
|
+ * We can't create or reset non-local NVRAM files, so filling
|
||||||
|
+ * in nvramTemplate for those would be misleading */
|
||||||
|
VIR_FREE(loader->nvramTemplate);
|
||||||
|
- if (loader->nvram && virStorageSourceIsLocalStorage(loader->nvram)) {
|
||||||
|
+ if (!loader->nvram ||
|
||||||
|
+ (loader->nvram && virStorageSourceIsLocalStorage(loader->nvram))) {
|
||||||
|
loader->nvramTemplate = g_strdup(flash->nvram_template.filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1608,6 +1615,7 @@ qemuFirmwareFillDomainLegacy(virQEMUDriver *driver,
|
||||||
|
|
||||||
|
loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH;
|
||||||
|
loader->readonly = VIR_TRISTATE_BOOL_YES;
|
||||||
|
+ loader->format = VIR_STORAGE_FILE_RAW;
|
||||||
|
|
||||||
|
/* Only use the default template path if one hasn't been
|
||||||
|
* provided by the user.
|
||||||
|
@@ -1634,8 +1642,6 @@ qemuFirmwareFillDomainLegacy(virQEMUDriver *driver,
|
||||||
|
if (!loader->nvramTemplate)
|
||||||
|
loader->nvramTemplate = g_strdup(cfg->firmwares[i]->nvram);
|
||||||
|
|
||||||
|
- qemuFirmwareEnsureNVRAM(def, cfg, VIR_STORAGE_FILE_RAW);
|
||||||
|
-
|
||||||
|
VIR_DEBUG("decided on firmware '%s' template '%s'",
|
||||||
|
loader->path, NULLSTR(loader->nvramTemplate));
|
||||||
|
|
||||||
|
@@ -1664,7 +1670,6 @@ static int
|
||||||
|
qemuFirmwareFillDomainModern(virQEMUDriver *driver,
|
||||||
|
virDomainDef *def)
|
||||||
|
{
|
||||||
|
- g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
|
||||||
|
g_auto(GStrv) paths = NULL;
|
||||||
|
qemuFirmware **firmwares = NULL;
|
||||||
|
ssize_t nfirmwares = 0;
|
||||||
|
@@ -1695,7 +1700,7 @@ qemuFirmwareFillDomainModern(virQEMUDriver *driver,
|
||||||
|
* likely that admin/FW manufacturer messed up. */
|
||||||
|
qemuFirmwareSanityCheck(theone, paths[i]);
|
||||||
|
|
||||||
|
- if (qemuFirmwareEnableFeaturesModern(cfg, def, theone) < 0)
|
||||||
|
+ if (qemuFirmwareEnableFeaturesModern(def, theone) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
@@ -1802,6 +1807,11 @@ qemuFirmwareFillDomain(virQEMUDriver *driver,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Always ensure that the NVRAM path is present, even if we
|
||||||
|
+ * haven't found a match: the configuration might simply be
|
||||||
|
+ * referring to a custom firmware build */
|
||||||
|
+ qemuFirmwareEnsureNVRAM(def, driver);
|
||||||
|
+
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-loader-path-nonstandard.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-loader-path-nonstandard.x86_64-latest.args
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..4e989344b3
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-manual-efi-loader-path-nonstandard.x86_64-latest.args
|
||||||
|
@@ -0,0 +1,37 @@
|
||||||
|
+LC_ALL=C \
|
||||||
|
+PATH=/bin \
|
||||||
|
+HOME=/var/lib/libvirt/qemu/domain--1-guest \
|
||||||
|
+USER=test \
|
||||||
|
+LOGNAME=test \
|
||||||
|
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \
|
||||||
|
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \
|
||||||
|
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
+/usr/bin/qemu-system-x86_64 \
|
||||||
|
+-name guest=guest,debug-threads=on \
|
||||||
|
+-S \
|
||||||
|
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/path/to/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
+-machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format,acpi=on \
|
||||||
|
+-accel tcg \
|
||||||
|
+-cpu qemu64 \
|
||||||
|
+-m size=1048576k \
|
||||||
|
+-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \
|
||||||
|
+-overcommit mem-lock=off \
|
||||||
|
+-smp 1,sockets=1,cores=1,threads=1 \
|
||||||
|
+-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \
|
||||||
|
+-display none \
|
||||||
|
+-no-user-config \
|
||||||
|
+-nodefaults \
|
||||||
|
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
|
||||||
|
+-mon chardev=charmonitor,id=monitor,mode=control \
|
||||||
|
+-rtc base=utc \
|
||||||
|
+-no-shutdown \
|
||||||
|
+-boot strict=on \
|
||||||
|
+-audiodev '{"id":"audio1","driver":"none"}' \
|
||||||
|
+-global ICH9-LPC.noreboot=off \
|
||||||
|
+-watchdog-action reset \
|
||||||
|
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
|
||||||
|
+-msg timestamp=on
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-loader-path-nonstandard.x86_64-latest.err b/tests/qemuxml2argvdata/firmware-manual-efi-loader-path-nonstandard.x86_64-latest.err
|
||||||
|
deleted file mode 100644
|
||||||
|
index 6a1618a1aa..0000000000
|
||||||
|
--- a/tests/qemuxml2argvdata/firmware-manual-efi-loader-path-nonstandard.x86_64-latest.err
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1 +0,0 @@
|
||||||
|
-internal error: argument key 'filename' must not have null value
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.args
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..1dc1993285
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.args
|
||||||
|
@@ -0,0 +1,37 @@
|
||||||
|
+LC_ALL=C \
|
||||||
|
+PATH=/bin \
|
||||||
|
+HOME=/var/lib/libvirt/qemu/domain--1-guest \
|
||||||
|
+USER=test \
|
||||||
|
+LOGNAME=test \
|
||||||
|
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \
|
||||||
|
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \
|
||||||
|
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
+/usr/bin/qemu-system-x86_64 \
|
||||||
|
+-name guest=guest,debug-threads=on \
|
||||||
|
+-S \
|
||||||
|
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/usr/share/edk2/ovmf/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
+-machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format,acpi=on \
|
||||||
|
+-accel kvm \
|
||||||
|
+-cpu qemu64 \
|
||||||
|
+-m size=1048576k \
|
||||||
|
+-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \
|
||||||
|
+-overcommit mem-lock=off \
|
||||||
|
+-smp 1,sockets=1,cores=1,threads=1 \
|
||||||
|
+-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \
|
||||||
|
+-display none \
|
||||||
|
+-no-user-config \
|
||||||
|
+-nodefaults \
|
||||||
|
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
|
||||||
|
+-mon chardev=charmonitor,id=monitor,mode=control \
|
||||||
|
+-rtc base=utc \
|
||||||
|
+-no-shutdown \
|
||||||
|
+-boot strict=on \
|
||||||
|
+-audiodev '{"id":"audio1","driver":"none"}' \
|
||||||
|
+-global ICH9-LPC.noreboot=off \
|
||||||
|
+-watchdog-action reset \
|
||||||
|
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
|
||||||
|
+-msg timestamp=on
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.err b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.err
|
||||||
|
deleted file mode 100644
|
||||||
|
index 6a1618a1aa..0000000000
|
||||||
|
--- a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.err
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1 +0,0 @@
|
||||||
|
-internal error: argument key 'filename' must not have null value
|
||||||
|
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
|
||||||
|
index 95842140f3..b2d9e00350 100644
|
||||||
|
--- a/tests/qemuxml2argvtest.c
|
||||||
|
+++ b/tests/qemuxml2argvtest.c
|
||||||
|
@@ -1053,13 +1053,13 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-manual-efi-rw-implicit");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-manual-efi-loader-secure");
|
||||||
|
DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-manual-efi-loader-no-path");
|
||||||
|
- DO_TEST_CAPS_LATEST_FAILURE("firmware-manual-efi-loader-path-nonstandard");
|
||||||
|
+ DO_TEST_CAPS_LATEST("firmware-manual-efi-loader-path-nonstandard");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-manual-efi-secboot");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-manual-efi-no-enrolled-keys");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-manual-efi-no-secboot");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-manual-efi-stateless");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-manual-efi-nvram-template");
|
||||||
|
- DO_TEST_CAPS_LATEST_FAILURE("firmware-manual-efi-nvram-template-nonstandard");
|
||||||
|
+ DO_TEST_CAPS_LATEST("firmware-manual-efi-nvram-template-nonstandard");
|
||||||
|
DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-manual-efi-nvram-template-stateless");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-manual-efi-nvram-network-iscsi");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-manual-efi-nvram-network-nbd");
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-loader-path-nonstandard.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-loader-path-nonstandard.x86_64-latest.xml
|
||||||
|
index 5940bfd0ea..039c485706 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/firmware-manual-efi-loader-path-nonstandard.x86_64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-loader-path-nonstandard.x86_64-latest.xml
|
||||||
|
@@ -7,7 +7,7 @@
|
||||||
|
<os>
|
||||||
|
<type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
|
||||||
|
<loader readonly='yes' type='pflash'>/path/to/OVMF_CODE.fd</loader>
|
||||||
|
- <nvram template='/path/to/OVMF_VARS.fd'/>
|
||||||
|
+ <nvram template='/path/to/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.xml
|
||||||
|
index 816e285621..5433650516 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.xml
|
||||||
|
@@ -7,7 +7,7 @@
|
||||||
|
<os>
|
||||||
|
<type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
|
||||||
|
<loader readonly='yes' type='pflash'>/usr/share/edk2/ovmf/OVMF_CODE.fd</loader>
|
||||||
|
- <nvram template='/path/to/OVMF_VARS.fd'/>
|
||||||
|
+ <nvram template='/path/to/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -0,0 +1,178 @@
|
|||||||
|
From 6dbe828752378e2215d4fd4fca65c94372ad0cf2 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <6dbe828752378e2215d4fd4fca65c94372ad0cf2.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Tue, 30 May 2023 18:24:40 +0200
|
||||||
|
Subject: [PATCH] qemu: Match NVRAM template extension for new domains
|
||||||
|
|
||||||
|
Keep things consistent by using the same file extension for the
|
||||||
|
generated NVRAM path as the NVRAM template.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit b845e376a45a8e93f933a4a41068a9ce27adf755)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_domain.c | 2 +-
|
||||||
|
src/qemu/qemu_firmware.c | 32 ++++++++++++++++---
|
||||||
|
src/qemu/qemu_firmware.h | 3 +-
|
||||||
|
src/qemu/qemu_process.c | 2 +-
|
||||||
|
...-loader-raw-abi-update.aarch64-latest.args | 2 +-
|
||||||
|
...t-loader-raw-abi-update.aarch64-latest.xml | 2 +-
|
||||||
|
6 files changed, 33 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
|
||||||
|
index 94587638c3..3bb3e5fdfa 100644
|
||||||
|
--- a/src/qemu/qemu_domain.c
|
||||||
|
+++ b/src/qemu/qemu_domain.c
|
||||||
|
@@ -4505,7 +4505,7 @@ qemuDomainDefBootPostParse(virDomainDef *def,
|
||||||
|
* to start the domain, qemuFirmwareFillDomain() will be run
|
||||||
|
* again, fail in the same way, and at that point we'll have a
|
||||||
|
* chance to inform the user of any issues */
|
||||||
|
- if (qemuFirmwareFillDomain(driver, def) < 0) {
|
||||||
|
+ if (qemuFirmwareFillDomain(driver, def, abiUpdate) < 0) {
|
||||||
|
if (abiUpdate) {
|
||||||
|
return -1;
|
||||||
|
} else {
|
||||||
|
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
|
||||||
|
index 3538654913..ebaf32cf71 100644
|
||||||
|
--- a/src/qemu/qemu_firmware.c
|
||||||
|
+++ b/src/qemu/qemu_firmware.c
|
||||||
|
@@ -32,6 +32,7 @@
|
||||||
|
#include "virlog.h"
|
||||||
|
#include "viralloc.h"
|
||||||
|
#include "virenum.h"
|
||||||
|
+#include "virstring.h"
|
||||||
|
|
||||||
|
#define VIR_FROM_THIS VIR_FROM_QEMU
|
||||||
|
|
||||||
|
@@ -1054,6 +1055,7 @@ qemuFirmwareOSInterfaceTypeFromOsDefLoaderType(virDomainLoader type)
|
||||||
|
* qemuFirmwareEnsureNVRAM:
|
||||||
|
* @def: domain definition
|
||||||
|
* @driver: QEMU driver
|
||||||
|
+ * @abiUpdate: whether a new domain is being defined
|
||||||
|
*
|
||||||
|
* Make sure that a source for the NVRAM file exists, possibly by
|
||||||
|
* creating it. This might involve automatically generating the
|
||||||
|
@@ -1061,7 +1063,8 @@ qemuFirmwareOSInterfaceTypeFromOsDefLoaderType(virDomainLoader type)
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
qemuFirmwareEnsureNVRAM(virDomainDef *def,
|
||||||
|
- virQEMUDriver *driver)
|
||||||
|
+ virQEMUDriver *driver,
|
||||||
|
+ bool abiUpdate)
|
||||||
|
{
|
||||||
|
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
|
||||||
|
virDomainLoaderDef *loader = def->os.loader;
|
||||||
|
@@ -1091,8 +1094,25 @@ qemuFirmwareEnsureNVRAM(virDomainDef *def,
|
||||||
|
loader->nvram->type = VIR_STORAGE_TYPE_FILE;
|
||||||
|
loader->nvram->format = loader->format;
|
||||||
|
|
||||||
|
- if (loader->nvram->format == VIR_STORAGE_FILE_RAW)
|
||||||
|
- ext = ".fd";
|
||||||
|
+ if (loader->nvram->format == VIR_STORAGE_FILE_RAW) {
|
||||||
|
+ /* The extension used by raw edk2 builds has historically
|
||||||
|
+ * been .fd, but more recent aarch64 builds have started
|
||||||
|
+ * using the .raw extension instead.
|
||||||
|
+ *
|
||||||
|
+ * If we're defining a new domain, we should try to match the
|
||||||
|
+ * extension for the file backing its NVRAM store with the
|
||||||
|
+ * one used by the template to keep things nice and
|
||||||
|
+ * consistent.
|
||||||
|
+ *
|
||||||
|
+ * If we're loading an existing domain, however, we need to
|
||||||
|
+ * stick with the .fd extension to ensure compatibility */
|
||||||
|
+ if (abiUpdate &&
|
||||||
|
+ loader->nvramTemplate &&
|
||||||
|
+ virStringHasSuffix(loader->nvramTemplate, ".raw"))
|
||||||
|
+ ext = ".raw";
|
||||||
|
+ else
|
||||||
|
+ ext = ".fd";
|
||||||
|
+ }
|
||||||
|
if (loader->nvram->format == VIR_STORAGE_FILE_QCOW2)
|
||||||
|
ext = ".qcow2";
|
||||||
|
|
||||||
|
@@ -1729,6 +1749,7 @@ qemuFirmwareFillDomainModern(virQEMUDriver *driver,
|
||||||
|
* qemuFirmwareFillDomain:
|
||||||
|
* @driver: QEMU driver
|
||||||
|
* @def: domain definition
|
||||||
|
+ * @abiUpdate: whether a new domain is being defined
|
||||||
|
*
|
||||||
|
* Perform firmware selection.
|
||||||
|
*
|
||||||
|
@@ -1752,7 +1773,8 @@ qemuFirmwareFillDomainModern(virQEMUDriver *driver,
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
qemuFirmwareFillDomain(virQEMUDriver *driver,
|
||||||
|
- virDomainDef *def)
|
||||||
|
+ virDomainDef *def,
|
||||||
|
+ bool abiUpdate)
|
||||||
|
{
|
||||||
|
virDomainLoaderDef *loader = def->os.loader;
|
||||||
|
virStorageSource *nvram = loader ? loader->nvram : NULL;
|
||||||
|
@@ -1822,7 +1844,7 @@ qemuFirmwareFillDomain(virQEMUDriver *driver,
|
||||||
|
/* Always ensure that the NVRAM path is present, even if we
|
||||||
|
* haven't found a match: the configuration might simply be
|
||||||
|
* referring to a custom firmware build */
|
||||||
|
- qemuFirmwareEnsureNVRAM(def, driver);
|
||||||
|
+ qemuFirmwareEnsureNVRAM(def, driver, abiUpdate);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/src/qemu/qemu_firmware.h b/src/qemu/qemu_firmware.h
|
||||||
|
index 1ce0920713..39572d979d 100644
|
||||||
|
--- a/src/qemu/qemu_firmware.h
|
||||||
|
+++ b/src/qemu/qemu_firmware.h
|
||||||
|
@@ -44,7 +44,8 @@ qemuFirmwareFetchConfigs(char ***firmwares,
|
||||||
|
|
||||||
|
int
|
||||||
|
qemuFirmwareFillDomain(virQEMUDriver *driver,
|
||||||
|
- virDomainDef *def);
|
||||||
|
+ virDomainDef *def,
|
||||||
|
+ bool abiUpdate);
|
||||||
|
|
||||||
|
int
|
||||||
|
qemuFirmwareGetSupported(const char *machine,
|
||||||
|
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
|
||||||
|
index db06991450..32fe46dae8 100644
|
||||||
|
--- a/src/qemu/qemu_process.c
|
||||||
|
+++ b/src/qemu/qemu_process.c
|
||||||
|
@@ -6706,7 +6706,7 @@ qemuProcessPrepareDomain(virQEMUDriver *driver,
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
VIR_DEBUG("Prepare bios/uefi paths");
|
||||||
|
- if (qemuFirmwareFillDomain(driver, vm->def) < 0)
|
||||||
|
+ if (qemuFirmwareFillDomain(driver, vm->def, false) < 0)
|
||||||
|
return -1;
|
||||||
|
if (qemuDomainInitializePflashStorageSource(vm, cfg) < 0)
|
||||||
|
return -1;
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw-abi-update.aarch64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw-abi-update.aarch64-latest.args
|
||||||
|
index eb5cd8d5fc..3e319a29bf 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw-abi-update.aarch64-latest.args
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw-abi-update.aarch64-latest.args
|
||||||
|
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
|
||||||
|
-blockdev '{"driver":"file","filename":"/usr/share/edk2/aarch64/QEMU_EFI-silent-pflash.raw","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.raw","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
-machine virt-4.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \
|
||||||
|
-accel tcg \
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-raw-abi-update.aarch64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-raw-abi-update.aarch64-latest.xml
|
||||||
|
index 38c680fabd..ee22b16831 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-raw-abi-update.aarch64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-raw-abi-update.aarch64-latest.xml
|
||||||
|
@@ -11,7 +11,7 @@
|
||||||
|
<feature enabled='no' name='secure-boot'/>
|
||||||
|
</firmware>
|
||||||
|
<loader readonly='yes' type='pflash'>/usr/share/edk2/aarch64/QEMU_EFI-silent-pflash.raw</loader>
|
||||||
|
- <nvram template='/usr/share/edk2/aarch64/vars-template-pflash.raw'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
|
||||||
|
+ <nvram template='/usr/share/edk2/aarch64/vars-template-pflash.raw'>/var/lib/libvirt/qemu/nvram/guest_VARS.raw</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -1,105 +0,0 @@
|
|||||||
From ec03aa23ac417797f9b53d51b6f999f5e966f9d7 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <ec03aa23ac417797f9b53d51b6f999f5e966f9d7@dist-git>
|
|
||||||
From: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Date: Mon, 16 Jan 2023 12:46:09 +0100
|
|
||||||
Subject: [PATCH] qemu: Provide virDomainGetCPUStats() implementation for
|
|
||||||
session connection
|
|
||||||
|
|
||||||
We have virDomainGetCPUStats() API which offers querying
|
|
||||||
statistics on host CPU usage by given guest. And it works in two
|
|
||||||
modes: getting overall stats (@start_cpu == -1, @ncpus == 1) or
|
|
||||||
getting per host CPU usage.
|
|
||||||
|
|
||||||
For the QEMU driver it is implemented by looking into values
|
|
||||||
stored in corresponding cpuacct CGroup controller. Well, this
|
|
||||||
works for system instances, where libvirt has permissions to
|
|
||||||
create CGroups and place QEMU process into them. But it does not
|
|
||||||
fly for session connection, where no CGroups are set up.
|
|
||||||
|
|
||||||
Fortunately, we can do something similar to v8.8.0-rc1~95 and use
|
|
||||||
virProcessGetStatInfo() to fill the overall stats. Unfortunately,
|
|
||||||
I haven't found any source of per host CPU usage, so we just
|
|
||||||
continue throwing an error in that case.
|
|
||||||
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 8865c42771600a40eddf40663f73b458423059a4)
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2148266
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/qemu/qemu_driver.c | 52 ++++++++++++++++++++++++++++++++++++++++--
|
|
||||||
1 file changed, 50 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
|
|
||||||
index c576c601ad..0603af6a35 100644
|
|
||||||
--- a/src/qemu/qemu_driver.c
|
|
||||||
+++ b/src/qemu/qemu_driver.c
|
|
||||||
@@ -16009,6 +16009,50 @@ qemuDomainGetMetadata(virDomainPtr dom,
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#define QEMU_CPU_STATS_PROC_TOTAL 3
|
|
||||||
+
|
|
||||||
+static int
|
|
||||||
+qemuDomainGetCPUStatsProc(virDomainObj *vm,
|
|
||||||
+ virTypedParameterPtr params,
|
|
||||||
+ unsigned int nparams)
|
|
||||||
+{
|
|
||||||
+ unsigned long long cpuTime = 0;
|
|
||||||
+ unsigned long long userTime = 0;
|
|
||||||
+ unsigned long long sysTime = 0;
|
|
||||||
+
|
|
||||||
+ if (nparams == 0) {
|
|
||||||
+ /* return supported number of params */
|
|
||||||
+ return QEMU_CPU_STATS_PROC_TOTAL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (virProcessGetStatInfo(&cpuTime, &userTime, &sysTime,
|
|
||||||
+ NULL, NULL, vm->pid, 0) < 0) {
|
|
||||||
+ virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
|
||||||
+ _("cannot read cputime for domain"));
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (virTypedParameterAssign(¶ms[0], VIR_DOMAIN_CPU_STATS_CPUTIME,
|
|
||||||
+ VIR_TYPED_PARAM_ULLONG, cpuTime) < 0)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ if (nparams > 1 &&
|
|
||||||
+ virTypedParameterAssign(¶ms[1], VIR_DOMAIN_CPU_STATS_USERTIME,
|
|
||||||
+ VIR_TYPED_PARAM_ULLONG, userTime) < 0)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ if (nparams > 2 &&
|
|
||||||
+ virTypedParameterAssign(¶ms[2], VIR_DOMAIN_CPU_STATS_SYSTEMTIME,
|
|
||||||
+ VIR_TYPED_PARAM_ULLONG, sysTime) < 0)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ if (nparams > 3)
|
|
||||||
+ nparams = 3;
|
|
||||||
+
|
|
||||||
+ return nparams;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#undef QEMU_CPU_STATS_PROC_TOTAL
|
|
||||||
|
|
||||||
static int
|
|
||||||
qemuDomainGetCPUStats(virDomainPtr domain,
|
|
||||||
@@ -16037,8 +16081,12 @@ qemuDomainGetCPUStats(virDomainPtr domain,
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPUACCT)) {
|
|
||||||
- virReportError(VIR_ERR_OPERATION_INVALID,
|
|
||||||
- "%s", _("cgroup CPUACCT controller is not mounted"));
|
|
||||||
+ if (start_cpu == -1) {
|
|
||||||
+ ret = qemuDomainGetCPUStatsProc(vm, params, nparams);
|
|
||||||
+ } else {
|
|
||||||
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
|
||||||
+ _("cgroup CPUACCT controller is not mounted"));
|
|
||||||
+ }
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,77 +0,0 @@
|
|||||||
From e0e6c7375855e09c45591d0b5ab23cddaa230ad8 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <e0e6c7375855e09c45591d0b5ab23cddaa230ad8@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Thu, 19 Jan 2023 15:18:45 +0100
|
|
||||||
Subject: [PATCH] qemu: Remove 'memAliasOrderMismatch' field from VM private
|
|
||||||
data
|
|
||||||
|
|
||||||
The field is no longer used so we can remove it and the code filling it.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 5764930463eb8f450e45fa982651ef6b7a7afd7c)
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2158701
|
|
||||||
---
|
|
||||||
src/qemu/qemu_domain.h | 3 ---
|
|
||||||
src/qemu/qemu_process.c | 24 ------------------------
|
|
||||||
2 files changed, 27 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
|
|
||||||
index 08430b67b9..eca5404cdc 100644
|
|
||||||
--- a/src/qemu/qemu_domain.h
|
|
||||||
+++ b/src/qemu/qemu_domain.h
|
|
||||||
@@ -177,9 +177,6 @@ struct _qemuDomainObjPrivate {
|
|
||||||
uint8_t *masterKey;
|
|
||||||
size_t masterKeyLen;
|
|
||||||
|
|
||||||
- /* note whether memory device alias does not correspond to slot number */
|
|
||||||
- bool memAliasOrderMismatch;
|
|
||||||
-
|
|
||||||
/* for migrations using TLS with a secret (not to be saved in our */
|
|
||||||
/* private XML). */
|
|
||||||
qemuDomainSecretInfo *migSecinfo;
|
|
||||||
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
|
|
||||||
index ee9f0784d3..29716ecb19 100644
|
|
||||||
--- a/src/qemu/qemu_process.c
|
|
||||||
+++ b/src/qemu/qemu_process.c
|
|
||||||
@@ -3896,28 +3896,6 @@ qemuDomainPerfRestart(virDomainObj *vm)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
-static void
|
|
||||||
-qemuProcessReconnectCheckMemAliasOrderMismatch(virDomainObj *vm)
|
|
||||||
-{
|
|
||||||
- size_t i;
|
|
||||||
- int aliasidx;
|
|
||||||
- virDomainDef *def = vm->def;
|
|
||||||
- qemuDomainObjPrivate *priv = vm->privateData;
|
|
||||||
-
|
|
||||||
- if (!virDomainDefHasMemoryHotplug(def) || def->nmems == 0)
|
|
||||||
- return;
|
|
||||||
-
|
|
||||||
- for (i = 0; i < def->nmems; i++) {
|
|
||||||
- aliasidx = qemuDomainDeviceAliasIndex(&def->mems[i]->info, "dimm");
|
|
||||||
-
|
|
||||||
- if (def->mems[i]->info.addr.dimm.slot != aliasidx) {
|
|
||||||
- priv->memAliasOrderMismatch = true;
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-
|
|
||||||
static bool
|
|
||||||
qemuProcessDomainMemoryDefNeedHugepagesPath(const virDomainMemoryDef *mem,
|
|
||||||
const long system_pagesize)
|
|
||||||
@@ -9091,8 +9069,6 @@ qemuProcessReconnect(void *opaque)
|
|
||||||
if (qemuProcessRefreshFdsetIndex(obj) < 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
- qemuProcessReconnectCheckMemAliasOrderMismatch(obj);
|
|
||||||
-
|
|
||||||
if (qemuConnectAgent(driver, obj) < 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -0,0 +1,175 @@
|
|||||||
|
From 5af7ae809ed21678c265a9559c9f70b90dcd31d9 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <5af7ae809ed21678c265a9559c9f70b90dcd31d9.1689974710.git.jdenemar@redhat.com>
|
||||||
|
From: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
Date: Fri, 14 Jul 2023 16:38:14 +0200
|
||||||
|
Subject: [PATCH] qemu: S390 does not provide physical address size
|
||||||
|
|
||||||
|
Commit be1b7d5b18 introduced parsing /proc/cpuinfo for "address size"
|
||||||
|
which is not including on S390 and therefore reports an internal error.
|
||||||
|
Lets remove the parsing on S390.
|
||||||
|
|
||||||
|
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
|
||||||
|
Reviewed-by: Collin Walling <walling@linux.ibm.com>
|
||||||
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 8417c1394cd4deccee07235d4f7b2c54b774b08d)
|
||||||
|
|
||||||
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2224016
|
||||||
|
|
||||||
|
Signed-off-by: Boris Fiuczynski <bfiuczyn@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu/cpu_x86.c | 2 +-
|
||||||
|
src/qemu/qemu_capabilities.c | 2 +-
|
||||||
|
src/util/virhostcpu.c | 12 ++++++++++--
|
||||||
|
src/util/virhostcpu.h | 3 ++-
|
||||||
|
tests/domaincapsdata/qemu_4.2.0.s390x.xml | 1 -
|
||||||
|
tests/domaincapsdata/qemu_5.2.0.s390x.xml | 1 -
|
||||||
|
tests/domaincapsdata/qemu_6.0.0.s390x.xml | 1 -
|
||||||
|
tests/domaincapsdata/qemu_8.1.0.s390x.xml | 1 -
|
||||||
|
tests/domaincapsmock.c | 8 ++++++--
|
||||||
|
9 files changed, 20 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
|
||||||
|
index 8d371d5501..3c0163c4d1 100644
|
||||||
|
--- a/src/cpu/cpu_x86.c
|
||||||
|
+++ b/src/cpu/cpu_x86.c
|
||||||
|
@@ -2795,7 +2795,7 @@ virCPUx86GetHost(virCPUDef *cpu,
|
||||||
|
VIR_DEBUG("Host CPU does not support invariant TSC");
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (virHostCPUGetPhysAddrSize(&addrsz) == 0) {
|
||||||
|
+ if (virHostCPUGetPhysAddrSize(cpuData->arch, &addrsz) == 0) {
|
||||||
|
virCPUMaxPhysAddrDef *addr = g_new0(virCPUMaxPhysAddrDef, 1);
|
||||||
|
|
||||||
|
addr->bits = addrsz;
|
||||||
|
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
|
||||||
|
index 338608f0a2..85ea879f0b 100644
|
||||||
|
--- a/src/qemu/qemu_capabilities.c
|
||||||
|
+++ b/src/qemu/qemu_capabilities.c
|
||||||
|
@@ -3911,7 +3911,7 @@ virQEMUCapsInitHostCPUModel(virQEMUCaps *qemuCaps,
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virQEMUCapsTypeIsAccelerated(type))
|
||||||
|
- virHostCPUGetPhysAddrSize(&physAddrSize);
|
||||||
|
+ virHostCPUGetPhysAddrSize(hostArch, &physAddrSize);
|
||||||
|
|
||||||
|
virQEMUCapsSetHostModel(qemuCaps, type, physAddrSize, cpu, migCPU, fullCPU);
|
||||||
|
|
||||||
|
diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
|
||||||
|
index 19195a1470..a15731e9ea 100644
|
||||||
|
--- a/src/util/virhostcpu.c
|
||||||
|
+++ b/src/util/virhostcpu.c
|
||||||
|
@@ -1646,10 +1646,17 @@ virHostCPUGetSignature(char **signature)
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
-virHostCPUGetPhysAddrSize(unsigned int *size)
|
||||||
|
+virHostCPUGetPhysAddrSize(const virArch hostArch,
|
||||||
|
+ unsigned int *size)
|
||||||
|
{
|
||||||
|
g_autoptr(FILE) cpuinfo = NULL;
|
||||||
|
|
||||||
|
+ if (ARCH_IS_S390(hostArch)) {
|
||||||
|
+ /* Ensure size is set to 0 as physical address size is unknown */
|
||||||
|
+ *size = 0;
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (!(cpuinfo = fopen(CPUINFO_PATH, "r"))) {
|
||||||
|
virReportSystemError(errno, _("Failed to open cpuinfo file '%1$s'"),
|
||||||
|
CPUINFO_PATH);
|
||||||
|
@@ -1669,7 +1676,8 @@ virHostCPUGetSignature(char **signature)
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
-virHostCPUGetPhysAddrSize(unsigned int *size G_GNUC_UNUSED)
|
||||||
|
+virHostCPUGetPhysAddrSize(const virArch hostArch G_GNUC_UNUSED,
|
||||||
|
+ unsigned int *size G_GNUC_UNUSED)
|
||||||
|
{
|
||||||
|
errno = ENOSYS;
|
||||||
|
return -1;
|
||||||
|
diff --git a/src/util/virhostcpu.h b/src/util/virhostcpu.h
|
||||||
|
index 5232fee36d..5f0d43e069 100644
|
||||||
|
--- a/src/util/virhostcpu.h
|
||||||
|
+++ b/src/util/virhostcpu.h
|
||||||
|
@@ -87,7 +87,8 @@ virHostCPUTscInfo *virHostCPUGetTscInfo(void);
|
||||||
|
|
||||||
|
int virHostCPUGetSignature(char **signature);
|
||||||
|
|
||||||
|
-int virHostCPUGetPhysAddrSize(unsigned int *size);
|
||||||
|
+int virHostCPUGetPhysAddrSize(const virArch hostArch,
|
||||||
|
+ unsigned int *size);
|
||||||
|
|
||||||
|
int virHostCPUGetHaltPollTime(pid_t pid,
|
||||||
|
unsigned long long *haltPollSuccess,
|
||||||
|
diff --git a/tests/domaincapsdata/qemu_4.2.0.s390x.xml b/tests/domaincapsdata/qemu_4.2.0.s390x.xml
|
||||||
|
index da271825f9..2566f42997 100644
|
||||||
|
--- a/tests/domaincapsdata/qemu_4.2.0.s390x.xml
|
||||||
|
+++ b/tests/domaincapsdata/qemu_4.2.0.s390x.xml
|
||||||
|
@@ -38,7 +38,6 @@
|
||||||
|
</mode>
|
||||||
|
<mode name='host-model' supported='yes'>
|
||||||
|
<model fallback='forbid'>gen15a-base</model>
|
||||||
|
- <maxphysaddr mode='passthrough' limit='64'/>
|
||||||
|
<feature policy='require' name='aen'/>
|
||||||
|
<feature policy='require' name='cmmnt'/>
|
||||||
|
<feature policy='require' name='vxpdeh'/>
|
||||||
|
diff --git a/tests/domaincapsdata/qemu_5.2.0.s390x.xml b/tests/domaincapsdata/qemu_5.2.0.s390x.xml
|
||||||
|
index 99faaad866..12f38d3638 100644
|
||||||
|
--- a/tests/domaincapsdata/qemu_5.2.0.s390x.xml
|
||||||
|
+++ b/tests/domaincapsdata/qemu_5.2.0.s390x.xml
|
||||||
|
@@ -38,7 +38,6 @@
|
||||||
|
</mode>
|
||||||
|
<mode name='host-model' supported='yes'>
|
||||||
|
<model fallback='forbid'>gen15a-base</model>
|
||||||
|
- <maxphysaddr mode='passthrough' limit='64'/>
|
||||||
|
<feature policy='require' name='aen'/>
|
||||||
|
<feature policy='require' name='cmmnt'/>
|
||||||
|
<feature policy='require' name='vxpdeh'/>
|
||||||
|
diff --git a/tests/domaincapsdata/qemu_6.0.0.s390x.xml b/tests/domaincapsdata/qemu_6.0.0.s390x.xml
|
||||||
|
index df3708f801..703f729ae2 100644
|
||||||
|
--- a/tests/domaincapsdata/qemu_6.0.0.s390x.xml
|
||||||
|
+++ b/tests/domaincapsdata/qemu_6.0.0.s390x.xml
|
||||||
|
@@ -38,7 +38,6 @@
|
||||||
|
</mode>
|
||||||
|
<mode name='host-model' supported='yes'>
|
||||||
|
<model fallback='forbid'>gen15a-base</model>
|
||||||
|
- <maxphysaddr mode='passthrough' limit='64'/>
|
||||||
|
<feature policy='require' name='aen'/>
|
||||||
|
<feature policy='require' name='cmmnt'/>
|
||||||
|
<feature policy='require' name='vxpdeh'/>
|
||||||
|
diff --git a/tests/domaincapsdata/qemu_8.1.0.s390x.xml b/tests/domaincapsdata/qemu_8.1.0.s390x.xml
|
||||||
|
index d70b639503..3562e96965 100644
|
||||||
|
--- a/tests/domaincapsdata/qemu_8.1.0.s390x.xml
|
||||||
|
+++ b/tests/domaincapsdata/qemu_8.1.0.s390x.xml
|
||||||
|
@@ -38,7 +38,6 @@
|
||||||
|
</mode>
|
||||||
|
<mode name='host-model' supported='yes'>
|
||||||
|
<model fallback='forbid'>gen16a-base</model>
|
||||||
|
- <maxphysaddr mode='passthrough' limit='64'/>
|
||||||
|
<feature policy='require' name='nnpa'/>
|
||||||
|
<feature policy='require' name='aen'/>
|
||||||
|
<feature policy='require' name='cmmnt'/>
|
||||||
|
diff --git a/tests/domaincapsmock.c b/tests/domaincapsmock.c
|
||||||
|
index cecb333602..6ae0c4ad45 100644
|
||||||
|
--- a/tests/domaincapsmock.c
|
||||||
|
+++ b/tests/domaincapsmock.c
|
||||||
|
@@ -37,9 +37,13 @@ virHostCPUGetMicrocodeVersion(virArch hostArch G_GNUC_UNUSED)
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
-virHostCPUGetPhysAddrSize(unsigned int *size)
|
||||||
|
+virHostCPUGetPhysAddrSize(const virArch hostArch,
|
||||||
|
+ unsigned int *size)
|
||||||
|
{
|
||||||
|
- *size = 64;
|
||||||
|
+ if (ARCH_IS_S390(hostArch))
|
||||||
|
+ *size = 0;
|
||||||
|
+ else
|
||||||
|
+ *size = 64;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.41.0
|
@ -0,0 +1,97 @@
|
|||||||
|
From 1c1274ab6be81184ca2193a86735e2edb27aee8d Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <1c1274ab6be81184ca2193a86735e2edb27aee8d.1689974709.git.jdenemar@redhat.com>
|
||||||
|
From: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
Date: Wed, 5 Jul 2023 08:20:25 +0200
|
||||||
|
Subject: [PATCH] qemu: add run-with async-teardown capability
|
||||||
|
|
||||||
|
QEMU capability is looking in query-command-line-options response for
|
||||||
|
...
|
||||||
|
{
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "async-teardown",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"option": "run-with"
|
||||||
|
}
|
||||||
|
...
|
||||||
|
allow to use the QEMU option -run-with async-teardown=on|off
|
||||||
|
|
||||||
|
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
Reviewed-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 65c6513811d1cdc7e97319164d7528411520dd0c)
|
||||||
|
|
||||||
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2168499
|
||||||
|
|
||||||
|
Signed-off-by: Boris Fiuczynski <bfiuczyn@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_capabilities.c | 4 ++++
|
||||||
|
src/qemu/qemu_capabilities.h | 3 +++
|
||||||
|
tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml | 1 +
|
||||||
|
tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml | 1 +
|
||||||
|
4 files changed, 9 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
|
||||||
|
index 7dad7231ee..c9f4b17208 100644
|
||||||
|
--- a/src/qemu/qemu_capabilities.c
|
||||||
|
+++ b/src/qemu/qemu_capabilities.c
|
||||||
|
@@ -694,6 +694,9 @@ VIR_ENUM_IMPL(virQEMUCaps,
|
||||||
|
"rbd-encryption-layering", /* QEMU_CAPS_RBD_ENCRYPTION_LAYERING */
|
||||||
|
"rbd-encryption-luks-any", /* QEMU_CAPS_RBD_ENCRYPTION_LUKS_ANY */
|
||||||
|
"qcow2-discard-no-unref", /* QEMU_CAPS_QCOW2_DISCARD_NO_UNREF */
|
||||||
|
+
|
||||||
|
+ /* 450 */
|
||||||
|
+ "run-with.async-teardown", /* QEMU_CAPS_RUN_WITH_ASYNC_TEARDOWN */
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@@ -3369,6 +3372,7 @@ static struct virQEMUCapsCommandLineProps virQEMUCapsCommandLine[] = {
|
||||||
|
{ "spice", "gl", QEMU_CAPS_SPICE_GL },
|
||||||
|
{ "spice", "rendernode", QEMU_CAPS_SPICE_RENDERNODE },
|
||||||
|
{ "vnc", "power-control", QEMU_CAPS_VNC_POWER_CONTROL },
|
||||||
|
+ { "run-with", "async-teardown", QEMU_CAPS_RUN_WITH_ASYNC_TEARDOWN },
|
||||||
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
|
||||||
|
index ce545cb2cc..2460fa7fa0 100644
|
||||||
|
--- a/src/qemu/qemu_capabilities.h
|
||||||
|
+++ b/src/qemu/qemu_capabilities.h
|
||||||
|
@@ -674,6 +674,9 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
|
||||||
|
QEMU_CAPS_RBD_ENCRYPTION_LUKS_ANY, /* luks-any (LUKS and LUKS2) encryption format for Ceph RBD */
|
||||||
|
QEMU_CAPS_QCOW2_DISCARD_NO_UNREF, /* qcow2 block driver allows discards without unrefing the sector */
|
||||||
|
|
||||||
|
+ /* 450 */
|
||||||
|
+ QEMU_CAPS_RUN_WITH_ASYNC_TEARDOWN, /* asynchronous teardown -run-with async-teardown=on|off */
|
||||||
|
+
|
||||||
|
QEMU_CAPS_LAST /* this must always be the last item */
|
||||||
|
} virQEMUCapsFlags;
|
||||||
|
|
||||||
|
diff --git a/tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml b/tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml
|
||||||
|
index 23b5aece15..88c7ac89db 100644
|
||||||
|
--- a/tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml
|
||||||
|
+++ b/tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml
|
||||||
|
@@ -114,6 +114,7 @@
|
||||||
|
<flag name='virtio-gpu.blob'/>
|
||||||
|
<flag name='rbd-encryption-layering'/>
|
||||||
|
<flag name='rbd-encryption-luks-any'/>
|
||||||
|
+ <flag name='run-with.async-teardown'/>
|
||||||
|
<version>8000050</version>
|
||||||
|
<microcodeVersion>39100245</microcodeVersion>
|
||||||
|
<package>v8.0.0-1270-g1c12355b</package>
|
||||||
|
diff --git a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml
|
||||||
|
index f717c83fec..475496a8c8 100644
|
||||||
|
--- a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml
|
||||||
|
+++ b/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml
|
||||||
|
@@ -206,6 +206,7 @@
|
||||||
|
<flag name='rbd-encryption-layering'/>
|
||||||
|
<flag name='rbd-encryption-luks-any'/>
|
||||||
|
<flag name='qcow2-discard-no-unref'/>
|
||||||
|
+ <flag name='run-with.async-teardown'/>
|
||||||
|
<version>8000050</version>
|
||||||
|
<microcodeVersion>43100245</microcodeVersion>
|
||||||
|
<package>v8.0.0-1739-g5f9dd6a8ce</package>
|
||||||
|
--
|
||||||
|
2.41.0
|
@ -1,108 +0,0 @@
|
|||||||
From 9271efe525e9cfaf1aad931ffccf61d6d17e5273 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <9271efe525e9cfaf1aad931ffccf61d6d17e5273@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Thu, 19 Jan 2023 15:16:58 +0100
|
|
||||||
Subject: [PATCH] qemu: alias: Remove 'oldAlias' argument of
|
|
||||||
qemuAssignDeviceMemoryAlias
|
|
||||||
|
|
||||||
All callers pass 'false' so we no longer need it.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 6d3f0b11b2b056313b123510c96f2924689341f9)
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2158701
|
|
||||||
---
|
|
||||||
src/qemu/qemu_alias.c | 13 ++++---------
|
|
||||||
src/qemu/qemu_alias.h | 3 +--
|
|
||||||
src/qemu/qemu_hotplug.c | 2 +-
|
|
||||||
3 files changed, 6 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c
|
|
||||||
index ef8e87ab58..0f1310a0e5 100644
|
|
||||||
--- a/src/qemu/qemu_alias.c
|
|
||||||
+++ b/src/qemu/qemu_alias.c
|
|
||||||
@@ -454,7 +454,6 @@ qemuAssignDeviceRNGAlias(virDomainDef *def,
|
|
||||||
static int
|
|
||||||
qemuDeviceMemoryGetAliasID(virDomainDef *def,
|
|
||||||
virDomainMemoryDef *mem,
|
|
||||||
- bool oldAlias,
|
|
||||||
const char *prefix)
|
|
||||||
{
|
|
||||||
size_t i;
|
|
||||||
@@ -462,8 +461,7 @@ qemuDeviceMemoryGetAliasID(virDomainDef *def,
|
|
||||||
|
|
||||||
/* virtio-pmem and virtio-mem go onto PCI bus and thus DIMM address is not
|
|
||||||
* valid */
|
|
||||||
- if (!oldAlias &&
|
|
||||||
- mem->model != VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM &&
|
|
||||||
+ if (mem->model != VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM &&
|
|
||||||
mem->model != VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM &&
|
|
||||||
mem->model != VIR_DOMAIN_MEMORY_MODEL_SGX_EPC)
|
|
||||||
return mem->info.addr.dimm.slot;
|
|
||||||
@@ -482,8 +480,6 @@ qemuDeviceMemoryGetAliasID(virDomainDef *def,
|
|
||||||
* qemuAssignDeviceMemoryAlias:
|
|
||||||
* @def: domain definition. Necessary only if @oldAlias is true.
|
|
||||||
* @mem: memory device definition
|
|
||||||
- * @oldAlias: Generate the alias according to the order of the device in @def
|
|
||||||
- * rather than according to the slot number for legacy reasons.
|
|
||||||
*
|
|
||||||
* Generates alias for a memory device according to slot number if @oldAlias is
|
|
||||||
* false or according to order in @def->mems otherwise.
|
|
||||||
@@ -492,8 +488,7 @@ qemuDeviceMemoryGetAliasID(virDomainDef *def,
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
qemuAssignDeviceMemoryAlias(virDomainDef *def,
|
|
||||||
- virDomainMemoryDef *mem,
|
|
||||||
- bool oldAlias)
|
|
||||||
+ virDomainMemoryDef *mem)
|
|
||||||
{
|
|
||||||
const char *prefix = NULL;
|
|
||||||
int idx = 0;
|
|
||||||
@@ -525,7 +520,7 @@ qemuAssignDeviceMemoryAlias(virDomainDef *def,
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
- idx = qemuDeviceMemoryGetAliasID(def, mem, oldAlias, prefix);
|
|
||||||
+ idx = qemuDeviceMemoryGetAliasID(def, mem, prefix);
|
|
||||||
mem->info.alias = g_strdup_printf("%s%d", prefix, idx);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
@@ -685,7 +680,7 @@ qemuAssignDeviceAliases(virDomainDef *def)
|
|
||||||
qemuAssignDeviceTPMAlias(def->tpms[i], i);
|
|
||||||
}
|
|
||||||
for (i = 0; i < def->nmems; i++) {
|
|
||||||
- if (qemuAssignDeviceMemoryAlias(def, def->mems[i], false) < 0)
|
|
||||||
+ if (qemuAssignDeviceMemoryAlias(def, def->mems[i]) < 0)
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (def->vsock) {
|
|
||||||
diff --git a/src/qemu/qemu_alias.h b/src/qemu/qemu_alias.h
|
|
||||||
index 6433ae4cec..af9c3f62d3 100644
|
|
||||||
--- a/src/qemu/qemu_alias.h
|
|
||||||
+++ b/src/qemu/qemu_alias.h
|
|
||||||
@@ -55,8 +55,7 @@ void qemuAssignDeviceRNGAlias(virDomainDef *def,
|
|
||||||
virDomainRNGDef *rng);
|
|
||||||
|
|
||||||
int qemuAssignDeviceMemoryAlias(virDomainDef *def,
|
|
||||||
- virDomainMemoryDef *mems,
|
|
||||||
- bool oldAlias);
|
|
||||||
+ virDomainMemoryDef *mems);
|
|
||||||
|
|
||||||
void qemuAssignDeviceShmemAlias(virDomainDef *def,
|
|
||||||
virDomainShmemDef *shmem,
|
|
||||||
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
|
|
||||||
index 5840504d13..2df59873db 100644
|
|
||||||
--- a/src/qemu/qemu_hotplug.c
|
|
||||||
+++ b/src/qemu/qemu_hotplug.c
|
|
||||||
@@ -2275,7 +2275,7 @@ qemuDomainAttachMemory(virQEMUDriver *driver,
|
|
||||||
goto cleanup;
|
|
||||||
releaseaddr = true;
|
|
||||||
|
|
||||||
- if (qemuAssignDeviceMemoryAlias(vm->def, mem, false) < 0)
|
|
||||||
+ if (qemuAssignDeviceMemoryAlias(vm->def, mem) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
objalias = g_strdup_printf("mem%s", mem->info.alias);
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
836
SOURCES/libvirt-qemu-allow-use-of-async-teardown-in-domain.patch
Normal file
836
SOURCES/libvirt-qemu-allow-use-of-async-teardown-in-domain.patch
Normal file
@ -0,0 +1,836 @@
|
|||||||
|
From d216c360f9d0acda0726194aed81e145018a3951 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <d216c360f9d0acda0726194aed81e145018a3951.1689974709.git.jdenemar@redhat.com>
|
||||||
|
From: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
Date: Wed, 5 Jul 2023 08:20:26 +0200
|
||||||
|
Subject: [PATCH] qemu: allow use of async teardown in domain
|
||||||
|
|
||||||
|
Asynchronous teardown can be specified if the QEMU binary supports it by
|
||||||
|
adding in the domain XML
|
||||||
|
|
||||||
|
<features>
|
||||||
|
...
|
||||||
|
<async-teardown enabled='yes|no'/>
|
||||||
|
...
|
||||||
|
</features>
|
||||||
|
|
||||||
|
By default this new feature is disabled.
|
||||||
|
|
||||||
|
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
Reviewed-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 3bf02acdc5446b2c4a3078f99d8f5232acff9043)
|
||||||
|
|
||||||
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2168499
|
||||||
|
|
||||||
|
Signed-off-by: Boris Fiuczynski <bfiuczyn@redhat.com>
|
||||||
|
---
|
||||||
|
docs/formatdomain.rst | 6 +++
|
||||||
|
src/conf/domain_conf.c | 22 ++++++++++
|
||||||
|
src/conf/domain_conf.h | 1 +
|
||||||
|
src/conf/schemas/domaincommon.rng | 9 ++++
|
||||||
|
src/qemu/qemu_command.c | 22 ++++++++++
|
||||||
|
src/qemu/qemu_validate.c | 9 ++++
|
||||||
|
.../async-teardown.x86_64-latest.args | 37 ++++++++++++++++
|
||||||
|
tests/qemuxml2argvdata/async-teardown.xml | 31 +++++++++++++
|
||||||
|
...0-async-teardown-disabled.s390x-6.0.0.args | 35 +++++++++++++++
|
||||||
|
...-async-teardown-disabled.s390x-latest.args | 36 +++++++++++++++
|
||||||
|
.../s390-async-teardown-disabled.xml | 24 ++++++++++
|
||||||
|
...async-teardown-no-attrib.s390x-latest.args | 36 +++++++++++++++
|
||||||
|
.../s390-async-teardown-no-attrib.xml | 24 ++++++++++
|
||||||
|
.../s390-async-teardown.s390x-6.0.0.err | 1 +
|
||||||
|
.../s390-async-teardown.s390x-latest.args | 36 +++++++++++++++
|
||||||
|
.../qemuxml2argvdata/s390-async-teardown.xml | 24 ++++++++++
|
||||||
|
tests/qemuxml2argvtest.c | 7 +++
|
||||||
|
.../async-teardown.x86_64-latest.xml | 44 +++++++++++++++++++
|
||||||
|
...90-async-teardown-disabled.s390x-6.0.0.xml | 36 +++++++++++++++
|
||||||
|
...0-async-teardown-disabled.s390x-latest.xml | 36 +++++++++++++++
|
||||||
|
...-async-teardown-no-attrib.s390x-latest.xml | 36 +++++++++++++++
|
||||||
|
.../s390-async-teardown.s390x-latest.xml | 36 +++++++++++++++
|
||||||
|
tests/qemuxml2xmltest.c | 6 +++
|
||||||
|
23 files changed, 554 insertions(+)
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/async-teardown.x86_64-latest.args
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/async-teardown.xml
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-6.0.0.args
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-latest.args
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/s390-async-teardown-disabled.xml
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/s390-async-teardown-no-attrib.s390x-latest.args
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/s390-async-teardown-no-attrib.xml
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/s390-async-teardown.s390x-6.0.0.err
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/s390-async-teardown.s390x-latest.args
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/s390-async-teardown.xml
|
||||||
|
create mode 100644 tests/qemuxml2xmloutdata/async-teardown.x86_64-latest.xml
|
||||||
|
create mode 100644 tests/qemuxml2xmloutdata/s390-async-teardown-disabled.s390x-6.0.0.xml
|
||||||
|
create mode 100644 tests/qemuxml2xmloutdata/s390-async-teardown-disabled.s390x-latest.xml
|
||||||
|
create mode 100644 tests/qemuxml2xmloutdata/s390-async-teardown-no-attrib.s390x-latest.xml
|
||||||
|
create mode 100644 tests/qemuxml2xmloutdata/s390-async-teardown.s390x-latest.xml
|
||||||
|
|
||||||
|
diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
|
||||||
|
index f29449f749..c61c8a3fec 100644
|
||||||
|
--- a/docs/formatdomain.rst
|
||||||
|
+++ b/docs/formatdomain.rst
|
||||||
|
@@ -2000,6 +2000,7 @@ Hypervisors may allow certain CPU / machine features to be toggled on/off.
|
||||||
|
<tcg>
|
||||||
|
<tb-cache unit='MiB'>128</tb-cache>
|
||||||
|
</tcg>
|
||||||
|
+ <async-teardown enabled='yes'/>
|
||||||
|
</features>
|
||||||
|
...
|
||||||
|
|
||||||
|
@@ -2230,6 +2231,11 @@ are:
|
||||||
|
tb-cache The size of translation block cache size an integer (a multiple of MiB) :since:`8.0.0`
|
||||||
|
=========== ============================================== =================================================== ==============
|
||||||
|
|
||||||
|
+``async-teardown``
|
||||||
|
+ Depending on the ``enabled`` attribute (values ``yes``, ``no``) enable or
|
||||||
|
+ disable QEMU asynchronous teardown to improve memory reclaiming on a guest.
|
||||||
|
+ :since:`Since 9.6.0` (QEMU only)
|
||||||
|
+
|
||||||
|
Time keeping
|
||||||
|
------------
|
||||||
|
|
||||||
|
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
|
||||||
|
index 4121b6a054..5ac5c0b771 100644
|
||||||
|
--- a/src/conf/domain_conf.c
|
||||||
|
+++ b/src/conf/domain_conf.c
|
||||||
|
@@ -181,6 +181,7 @@ VIR_ENUM_IMPL(virDomainFeature,
|
||||||
|
"sbbc",
|
||||||
|
"ibs",
|
||||||
|
"tcg",
|
||||||
|
+ "async-teardown",
|
||||||
|
);
|
||||||
|
|
||||||
|
VIR_ENUM_IMPL(virDomainCapabilitiesPolicy,
|
||||||
|
@@ -16689,6 +16690,20 @@ virDomainFeaturesDefParse(virDomainDef *def,
|
||||||
|
return -1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
+ case VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN: {
|
||||||
|
+ virTristateBool enabled;
|
||||||
|
+
|
||||||
|
+ if (virXMLPropTristateBool(nodes[i], "enabled",
|
||||||
|
+ VIR_XML_PROP_NONE, &enabled) < 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ if (enabled == VIR_TRISTATE_BOOL_ABSENT)
|
||||||
|
+ enabled = VIR_TRISTATE_BOOL_YES;
|
||||||
|
+
|
||||||
|
+ def->features[val] = enabled;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
case VIR_DOMAIN_FEATURE_LAST:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -20628,6 +20643,7 @@ virDomainDefFeaturesCheckABIStability(virDomainDef *src,
|
||||||
|
|
||||||
|
case VIR_DOMAIN_FEATURE_MSRS:
|
||||||
|
case VIR_DOMAIN_FEATURE_TCG:
|
||||||
|
+ case VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN:
|
||||||
|
case VIR_DOMAIN_FEATURE_LAST:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -27340,6 +27356,12 @@ virDomainDefFormatFeatures(virBuffer *buf,
|
||||||
|
virDomainFeatureTCGFormat(&childBuf, def);
|
||||||
|
break;
|
||||||
|
|
||||||
|
+ case VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN:
|
||||||
|
+ if (def->features[i] != VIR_TRISTATE_SWITCH_ABSENT)
|
||||||
|
+ virBufferAsprintf(&childBuf, "<async-teardown enabled='%s'/>\n",
|
||||||
|
+ virTristateBoolTypeToString(def->features[i]));
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
case VIR_DOMAIN_FEATURE_LAST:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
|
||||||
|
index cddaa3824d..c857ba556f 100644
|
||||||
|
--- a/src/conf/domain_conf.h
|
||||||
|
+++ b/src/conf/domain_conf.h
|
||||||
|
@@ -2170,6 +2170,7 @@ typedef enum {
|
||||||
|
VIR_DOMAIN_FEATURE_SBBC,
|
||||||
|
VIR_DOMAIN_FEATURE_IBS,
|
||||||
|
VIR_DOMAIN_FEATURE_TCG,
|
||||||
|
+ VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN,
|
||||||
|
|
||||||
|
VIR_DOMAIN_FEATURE_LAST
|
||||||
|
} virDomainFeature;
|
||||||
|
diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng
|
||||||
|
index fcf9e00600..c2f56b0490 100644
|
||||||
|
--- a/src/conf/schemas/domaincommon.rng
|
||||||
|
+++ b/src/conf/schemas/domaincommon.rng
|
||||||
|
@@ -6660,6 +6660,15 @@
|
||||||
|
<optional>
|
||||||
|
<ref name="tcgfeatures"/>
|
||||||
|
</optional>
|
||||||
|
+ <optional>
|
||||||
|
+ <element name="async-teardown">
|
||||||
|
+ <optional>
|
||||||
|
+ <attribute name="enabled">
|
||||||
|
+ <ref name="virYesNo"/>
|
||||||
|
+ </attribute>
|
||||||
|
+ </optional>
|
||||||
|
+ </element>
|
||||||
|
+ </optional>
|
||||||
|
</interleave>
|
||||||
|
</element>
|
||||||
|
</optional>
|
||||||
|
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
|
||||||
|
index cde6ab4dde..ec5d8b52d4 100644
|
||||||
|
--- a/src/qemu/qemu_command.c
|
||||||
|
+++ b/src/qemu/qemu_command.c
|
||||||
|
@@ -10175,6 +10175,25 @@ qemuBuildCryptoCommandLine(virCommand *cmd,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+static int
|
||||||
|
+qemuBuildAsyncTeardownCommandLine(virCommand *cmd,
|
||||||
|
+ const virDomainDef *def,
|
||||||
|
+ virQEMUCaps *qemuCaps)
|
||||||
|
+{
|
||||||
|
+ g_autofree char *async = NULL;
|
||||||
|
+ virTristateBool enabled = def->features[VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN];
|
||||||
|
+
|
||||||
|
+ if (enabled != VIR_TRISTATE_BOOL_ABSENT &&
|
||||||
|
+ virQEMUCapsGet(qemuCaps, QEMU_CAPS_RUN_WITH_ASYNC_TEARDOWN)) {
|
||||||
|
+ async = g_strdup_printf("async-teardown=%s",
|
||||||
|
+ virTristateSwitchTypeToString(enabled));
|
||||||
|
+ virCommandAddArgList(cmd, "-run-with", async, NULL);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
typedef enum {
|
||||||
|
QEMU_COMMAND_DEPRECATION_BEHAVIOR_NONE = 0,
|
||||||
|
QEMU_COMMAND_DEPRECATION_BEHAVIOR_OMIT,
|
||||||
|
@@ -10530,6 +10549,9 @@ qemuBuildCommandLine(virDomainObj *vm,
|
||||||
|
if (qemuBuildCryptoCommandLine(cmd, def, qemuCaps) < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
+ if (qemuBuildAsyncTeardownCommandLine(cmd, def, qemuCaps) < 0)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
if (cfg->logTimestamp)
|
||||||
|
virCommandAddArgList(cmd, "-msg", "timestamp=on", NULL);
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
|
||||||
|
index a53729d349..7e09e2c52f 100644
|
||||||
|
--- a/src/qemu/qemu_validate.c
|
||||||
|
+++ b/src/qemu/qemu_validate.c
|
||||||
|
@@ -219,6 +219,15 @@ qemuValidateDomainDefFeatures(const virDomainDef *def,
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
+ case VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN:
|
||||||
|
+ if (def->features[i] == VIR_TRISTATE_BOOL_YES &&
|
||||||
|
+ !virQEMUCapsGet(qemuCaps, QEMU_CAPS_RUN_WITH_ASYNC_TEARDOWN)) {
|
||||||
|
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
+ _("asynchronous teardown is not available with this QEMU binary"));
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
case VIR_DOMAIN_FEATURE_SMM:
|
||||||
|
case VIR_DOMAIN_FEATURE_KVM:
|
||||||
|
case VIR_DOMAIN_FEATURE_XEN:
|
||||||
|
diff --git a/tests/qemuxml2argvdata/async-teardown.x86_64-latest.args b/tests/qemuxml2argvdata/async-teardown.x86_64-latest.args
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..455382f1f0
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/async-teardown.x86_64-latest.args
|
||||||
|
@@ -0,0 +1,37 @@
|
||||||
|
+LC_ALL=C \
|
||||||
|
+PATH=/bin \
|
||||||
|
+HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \
|
||||||
|
+USER=test \
|
||||||
|
+LOGNAME=test \
|
||||||
|
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \
|
||||||
|
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \
|
||||||
|
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
|
||||||
|
+/usr/bin/qemu-system-x86_64 \
|
||||||
|
+-name guest=QEMUGuest1,debug-threads=on \
|
||||||
|
+-S \
|
||||||
|
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
|
||||||
|
+-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
|
||||||
|
+-accel tcg \
|
||||||
|
+-cpu qemu64 \
|
||||||
|
+-m size=219136k \
|
||||||
|
+-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
|
||||||
|
+-overcommit mem-lock=off \
|
||||||
|
+-smp 1,sockets=1,cores=1,threads=1 \
|
||||||
|
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
|
||||||
|
+-display none \
|
||||||
|
+-no-user-config \
|
||||||
|
+-nodefaults \
|
||||||
|
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
|
||||||
|
+-mon chardev=charmonitor,id=monitor,mode=control \
|
||||||
|
+-rtc base=utc \
|
||||||
|
+-no-shutdown \
|
||||||
|
+-boot strict=on \
|
||||||
|
+-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
|
||||||
|
+-blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","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":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-format","id":"ide0-0-0","bootindex":1}' \
|
||||||
|
+-audiodev '{"id":"audio1","driver":"none"}' \
|
||||||
|
+-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x2"}' \
|
||||||
|
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
|
||||||
|
+-run-with async-teardown=on \
|
||||||
|
+-msg timestamp=on
|
||||||
|
diff --git a/tests/qemuxml2argvdata/async-teardown.xml b/tests/qemuxml2argvdata/async-teardown.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..70c1eccc55
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/async-teardown.xml
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+<domain type='qemu'>
|
||||||
|
+ <name>QEMUGuest1</name>
|
||||||
|
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
+ <memory unit='KiB'>219136</memory>
|
||||||
|
+ <currentMemory unit='KiB'>219136</currentMemory>
|
||||||
|
+ <vcpu placement='static'>1</vcpu>
|
||||||
|
+ <os>
|
||||||
|
+ <type arch='x86_64' machine='pc'>hvm</type>
|
||||||
|
+ <boot dev='hd'/>
|
||||||
|
+ </os>
|
||||||
|
+ <clock offset='utc'/>
|
||||||
|
+ <on_poweroff>destroy</on_poweroff>
|
||||||
|
+ <on_reboot>restart</on_reboot>
|
||||||
|
+ <on_crash>destroy</on_crash>
|
||||||
|
+ <features>
|
||||||
|
+ <async-teardown enabled='yes'/>
|
||||||
|
+ </features>
|
||||||
|
+ <devices>
|
||||||
|
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||||
|
+ <disk type='block' device='disk'>
|
||||||
|
+ <source dev='/dev/HostVG/QEMUGuest1'/>
|
||||||
|
+ <target dev='hda' bus='ide'/>
|
||||||
|
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
||||||
|
+ </disk>
|
||||||
|
+ <controller type='usb' index='0'/>
|
||||||
|
+ <controller type='fdc' index='0'/>
|
||||||
|
+ <controller type='ide' index='0'/>
|
||||||
|
+ <controller type='pci' index='0' model='pci-root'/>
|
||||||
|
+ <memballoon model='virtio'/>
|
||||||
|
+ </devices>
|
||||||
|
+</domain>
|
||||||
|
diff --git a/tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-6.0.0.args b/tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-6.0.0.args
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..57690530a2
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-6.0.0.args
|
||||||
|
@@ -0,0 +1,35 @@
|
||||||
|
+LC_ALL=C \
|
||||||
|
+PATH=/bin \
|
||||||
|
+HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \
|
||||||
|
+USER=test \
|
||||||
|
+LOGNAME=test \
|
||||||
|
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \
|
||||||
|
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \
|
||||||
|
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
|
||||||
|
+/usr/bin/qemu-system-s390x \
|
||||||
|
+-name guest=QEMUGuest1,debug-threads=on \
|
||||||
|
+-S \
|
||||||
|
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
|
||||||
|
+-machine s390-ccw-virtio-6.0,usb=off,dump-guest-core=off,memory-backend=s390.ram \
|
||||||
|
+-accel tcg \
|
||||||
|
+-cpu qemu \
|
||||||
|
+-m size=262144k \
|
||||||
|
+-object '{"qom-type":"memory-backend-ram","id":"s390.ram","size":268435456}' \
|
||||||
|
+-overcommit mem-lock=off \
|
||||||
|
+-smp 1,sockets=1,cores=1,threads=1 \
|
||||||
|
+-uuid 9aa4b45c-b9dd-45ef-91fe-862b27b4231f \
|
||||||
|
+-display none \
|
||||||
|
+-no-user-config \
|
||||||
|
+-nodefaults \
|
||||||
|
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
|
||||||
|
+-mon chardev=charmonitor,id=monitor,mode=control \
|
||||||
|
+-rtc base=utc \
|
||||||
|
+-no-shutdown \
|
||||||
|
+-boot strict=on \
|
||||||
|
+-device virtio-serial-ccw,id=virtio-serial0,devno=fe.0.0000 \
|
||||||
|
+-chardev pty,id=charconsole0 \
|
||||||
|
+-device virtconsole,chardev=charconsole0,id=console0 \
|
||||||
|
+-audiodev '{"id":"audio1","driver":"none"}' \
|
||||||
|
+-device virtio-balloon-ccw,id=balloon0,devno=fe.0.0001 \
|
||||||
|
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
|
||||||
|
+-msg timestamp=on
|
||||||
|
diff --git a/tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-latest.args b/tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-latest.args
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..96b18b83ce
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-latest.args
|
||||||
|
@@ -0,0 +1,36 @@
|
||||||
|
+LC_ALL=C \
|
||||||
|
+PATH=/bin \
|
||||||
|
+HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \
|
||||||
|
+USER=test \
|
||||||
|
+LOGNAME=test \
|
||||||
|
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \
|
||||||
|
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \
|
||||||
|
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
|
||||||
|
+/usr/bin/qemu-system-s390x \
|
||||||
|
+-name guest=QEMUGuest1,debug-threads=on \
|
||||||
|
+-S \
|
||||||
|
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
|
||||||
|
+-machine s390-ccw-virtio,usb=off,dump-guest-core=off,memory-backend=s390.ram \
|
||||||
|
+-accel tcg \
|
||||||
|
+-cpu qemu \
|
||||||
|
+-m size=262144k \
|
||||||
|
+-object '{"qom-type":"memory-backend-ram","id":"s390.ram","size":268435456}' \
|
||||||
|
+-overcommit mem-lock=off \
|
||||||
|
+-smp 1,sockets=1,cores=1,threads=1 \
|
||||||
|
+-uuid 9aa4b45c-b9dd-45ef-91fe-862b27b4231f \
|
||||||
|
+-display none \
|
||||||
|
+-no-user-config \
|
||||||
|
+-nodefaults \
|
||||||
|
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
|
||||||
|
+-mon chardev=charmonitor,id=monitor,mode=control \
|
||||||
|
+-rtc base=utc \
|
||||||
|
+-no-shutdown \
|
||||||
|
+-boot strict=on \
|
||||||
|
+-device '{"driver":"virtio-serial-ccw","id":"virtio-serial0","devno":"fe.0.0000"}' \
|
||||||
|
+-chardev pty,id=charconsole0 \
|
||||||
|
+-device '{"driver":"virtconsole","chardev":"charconsole0","id":"console0"}' \
|
||||||
|
+-audiodev '{"id":"audio1","driver":"none"}' \
|
||||||
|
+-device '{"driver":"virtio-balloon-ccw","id":"balloon0","devno":"fe.0.0001"}' \
|
||||||
|
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
|
||||||
|
+-run-with async-teardown=off \
|
||||||
|
+-msg timestamp=on
|
||||||
|
diff --git a/tests/qemuxml2argvdata/s390-async-teardown-disabled.xml b/tests/qemuxml2argvdata/s390-async-teardown-disabled.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..3939be0006
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/s390-async-teardown-disabled.xml
|
||||||
|
@@ -0,0 +1,24 @@
|
||||||
|
+<domain type='qemu'>
|
||||||
|
+ <name>QEMUGuest1</name>
|
||||||
|
+ <uuid>9aa4b45c-b9dd-45ef-91fe-862b27b4231f</uuid>
|
||||||
|
+ <memory>262144</memory>
|
||||||
|
+ <currentMemory>262144</currentMemory>
|
||||||
|
+ <os>
|
||||||
|
+ <type arch='s390x' machine='s390-ccw-virtio'>hvm</type>
|
||||||
|
+ </os>
|
||||||
|
+ <clock offset='utc'/>
|
||||||
|
+ <on_poweroff>destroy</on_poweroff>
|
||||||
|
+ <on_reboot>restart</on_reboot>
|
||||||
|
+ <on_crash>destroy</on_crash>
|
||||||
|
+ <features>
|
||||||
|
+ <async-teardown enabled='no'/>
|
||||||
|
+ </features>
|
||||||
|
+ <devices>
|
||||||
|
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
|
||||||
|
+ <controller type='virtio-serial' index='0'>
|
||||||
|
+ </controller>
|
||||||
|
+ <console type='pty'>
|
||||||
|
+ <target type='virtio'/>
|
||||||
|
+ </console>
|
||||||
|
+ </devices>
|
||||||
|
+</domain>
|
||||||
|
diff --git a/tests/qemuxml2argvdata/s390-async-teardown-no-attrib.s390x-latest.args b/tests/qemuxml2argvdata/s390-async-teardown-no-attrib.s390x-latest.args
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..cc7866499f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/s390-async-teardown-no-attrib.s390x-latest.args
|
||||||
|
@@ -0,0 +1,36 @@
|
||||||
|
+LC_ALL=C \
|
||||||
|
+PATH=/bin \
|
||||||
|
+HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \
|
||||||
|
+USER=test \
|
||||||
|
+LOGNAME=test \
|
||||||
|
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \
|
||||||
|
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \
|
||||||
|
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
|
||||||
|
+/usr/bin/qemu-system-s390x \
|
||||||
|
+-name guest=QEMUGuest1,debug-threads=on \
|
||||||
|
+-S \
|
||||||
|
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
|
||||||
|
+-machine s390-ccw-virtio,usb=off,dump-guest-core=off,memory-backend=s390.ram \
|
||||||
|
+-accel tcg \
|
||||||
|
+-cpu qemu \
|
||||||
|
+-m size=262144k \
|
||||||
|
+-object '{"qom-type":"memory-backend-ram","id":"s390.ram","size":268435456}' \
|
||||||
|
+-overcommit mem-lock=off \
|
||||||
|
+-smp 1,sockets=1,cores=1,threads=1 \
|
||||||
|
+-uuid 9aa4b45c-b9dd-45ef-91fe-862b27b4231f \
|
||||||
|
+-display none \
|
||||||
|
+-no-user-config \
|
||||||
|
+-nodefaults \
|
||||||
|
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
|
||||||
|
+-mon chardev=charmonitor,id=monitor,mode=control \
|
||||||
|
+-rtc base=utc \
|
||||||
|
+-no-shutdown \
|
||||||
|
+-boot strict=on \
|
||||||
|
+-device '{"driver":"virtio-serial-ccw","id":"virtio-serial0","devno":"fe.0.0000"}' \
|
||||||
|
+-chardev pty,id=charconsole0 \
|
||||||
|
+-device '{"driver":"virtconsole","chardev":"charconsole0","id":"console0"}' \
|
||||||
|
+-audiodev '{"id":"audio1","driver":"none"}' \
|
||||||
|
+-device '{"driver":"virtio-balloon-ccw","id":"balloon0","devno":"fe.0.0001"}' \
|
||||||
|
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
|
||||||
|
+-run-with async-teardown=on \
|
||||||
|
+-msg timestamp=on
|
||||||
|
diff --git a/tests/qemuxml2argvdata/s390-async-teardown-no-attrib.xml b/tests/qemuxml2argvdata/s390-async-teardown-no-attrib.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..e069cd41ed
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/s390-async-teardown-no-attrib.xml
|
||||||
|
@@ -0,0 +1,24 @@
|
||||||
|
+<domain type='qemu'>
|
||||||
|
+ <name>QEMUGuest1</name>
|
||||||
|
+ <uuid>9aa4b45c-b9dd-45ef-91fe-862b27b4231f</uuid>
|
||||||
|
+ <memory>262144</memory>
|
||||||
|
+ <currentMemory>262144</currentMemory>
|
||||||
|
+ <os>
|
||||||
|
+ <type arch='s390x' machine='s390-ccw-virtio'>hvm</type>
|
||||||
|
+ </os>
|
||||||
|
+ <clock offset='utc'/>
|
||||||
|
+ <on_poweroff>destroy</on_poweroff>
|
||||||
|
+ <on_reboot>restart</on_reboot>
|
||||||
|
+ <on_crash>destroy</on_crash>
|
||||||
|
+ <features>
|
||||||
|
+ <async-teardown/>
|
||||||
|
+ </features>
|
||||||
|
+ <devices>
|
||||||
|
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
|
||||||
|
+ <controller type='virtio-serial' index='0'>
|
||||||
|
+ </controller>
|
||||||
|
+ <console type='pty'>
|
||||||
|
+ <target type='virtio'/>
|
||||||
|
+ </console>
|
||||||
|
+ </devices>
|
||||||
|
+</domain>
|
||||||
|
diff --git a/tests/qemuxml2argvdata/s390-async-teardown.s390x-6.0.0.err b/tests/qemuxml2argvdata/s390-async-teardown.s390x-6.0.0.err
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..aa9a4739cb
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/s390-async-teardown.s390x-6.0.0.err
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+unsupported configuration: asynchronous teardown is not available with this QEMU binary
|
||||||
|
diff --git a/tests/qemuxml2argvdata/s390-async-teardown.s390x-latest.args b/tests/qemuxml2argvdata/s390-async-teardown.s390x-latest.args
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..cc7866499f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/s390-async-teardown.s390x-latest.args
|
||||||
|
@@ -0,0 +1,36 @@
|
||||||
|
+LC_ALL=C \
|
||||||
|
+PATH=/bin \
|
||||||
|
+HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \
|
||||||
|
+USER=test \
|
||||||
|
+LOGNAME=test \
|
||||||
|
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \
|
||||||
|
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \
|
||||||
|
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
|
||||||
|
+/usr/bin/qemu-system-s390x \
|
||||||
|
+-name guest=QEMUGuest1,debug-threads=on \
|
||||||
|
+-S \
|
||||||
|
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
|
||||||
|
+-machine s390-ccw-virtio,usb=off,dump-guest-core=off,memory-backend=s390.ram \
|
||||||
|
+-accel tcg \
|
||||||
|
+-cpu qemu \
|
||||||
|
+-m size=262144k \
|
||||||
|
+-object '{"qom-type":"memory-backend-ram","id":"s390.ram","size":268435456}' \
|
||||||
|
+-overcommit mem-lock=off \
|
||||||
|
+-smp 1,sockets=1,cores=1,threads=1 \
|
||||||
|
+-uuid 9aa4b45c-b9dd-45ef-91fe-862b27b4231f \
|
||||||
|
+-display none \
|
||||||
|
+-no-user-config \
|
||||||
|
+-nodefaults \
|
||||||
|
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
|
||||||
|
+-mon chardev=charmonitor,id=monitor,mode=control \
|
||||||
|
+-rtc base=utc \
|
||||||
|
+-no-shutdown \
|
||||||
|
+-boot strict=on \
|
||||||
|
+-device '{"driver":"virtio-serial-ccw","id":"virtio-serial0","devno":"fe.0.0000"}' \
|
||||||
|
+-chardev pty,id=charconsole0 \
|
||||||
|
+-device '{"driver":"virtconsole","chardev":"charconsole0","id":"console0"}' \
|
||||||
|
+-audiodev '{"id":"audio1","driver":"none"}' \
|
||||||
|
+-device '{"driver":"virtio-balloon-ccw","id":"balloon0","devno":"fe.0.0001"}' \
|
||||||
|
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
|
||||||
|
+-run-with async-teardown=on \
|
||||||
|
+-msg timestamp=on
|
||||||
|
diff --git a/tests/qemuxml2argvdata/s390-async-teardown.xml b/tests/qemuxml2argvdata/s390-async-teardown.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..3291b1ada3
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/s390-async-teardown.xml
|
||||||
|
@@ -0,0 +1,24 @@
|
||||||
|
+<domain type='qemu'>
|
||||||
|
+ <name>QEMUGuest1</name>
|
||||||
|
+ <uuid>9aa4b45c-b9dd-45ef-91fe-862b27b4231f</uuid>
|
||||||
|
+ <memory>262144</memory>
|
||||||
|
+ <currentMemory>262144</currentMemory>
|
||||||
|
+ <os>
|
||||||
|
+ <type arch='s390x' machine='s390-ccw-virtio'>hvm</type>
|
||||||
|
+ </os>
|
||||||
|
+ <clock offset='utc'/>
|
||||||
|
+ <on_poweroff>destroy</on_poweroff>
|
||||||
|
+ <on_reboot>restart</on_reboot>
|
||||||
|
+ <on_crash>destroy</on_crash>
|
||||||
|
+ <features>
|
||||||
|
+ <async-teardown enabled='yes'/>
|
||||||
|
+ </features>
|
||||||
|
+ <devices>
|
||||||
|
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
|
||||||
|
+ <controller type='virtio-serial' index='0'>
|
||||||
|
+ </controller>
|
||||||
|
+ <console type='pty'>
|
||||||
|
+ <target type='virtio'/>
|
||||||
|
+ </console>
|
||||||
|
+ </devices>
|
||||||
|
+</domain>
|
||||||
|
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
|
||||||
|
index c1bba779b3..9abaa72674 100644
|
||||||
|
--- a/tests/qemuxml2argvtest.c
|
||||||
|
+++ b/tests/qemuxml2argvtest.c
|
||||||
|
@@ -2701,6 +2701,13 @@ mymain(void)
|
||||||
|
|
||||||
|
DO_TEST_CAPS_LATEST("crypto-builtin");
|
||||||
|
|
||||||
|
+ DO_TEST_CAPS_LATEST("async-teardown");
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST("s390-async-teardown", "s390x");
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST("s390-async-teardown-no-attrib", "s390x");
|
||||||
|
+ DO_TEST_CAPS_ARCH_VER_PARSE_ERROR("s390-async-teardown", "s390x", "6.0.0");
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST("s390-async-teardown-disabled", "s390x");
|
||||||
|
+ DO_TEST_CAPS_ARCH_VER("s390-async-teardown-disabled", "s390x", "6.0.0");
|
||||||
|
+
|
||||||
|
qemuTestDriverFree(&driver);
|
||||||
|
virFileWrapperClearPrefixes();
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/async-teardown.x86_64-latest.xml b/tests/qemuxml2xmloutdata/async-teardown.x86_64-latest.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..e98308a9b1
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/async-teardown.x86_64-latest.xml
|
||||||
|
@@ -0,0 +1,44 @@
|
||||||
|
+<domain type='qemu'>
|
||||||
|
+ <name>QEMUGuest1</name>
|
||||||
|
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
+ <memory unit='KiB'>219136</memory>
|
||||||
|
+ <currentMemory unit='KiB'>219136</currentMemory>
|
||||||
|
+ <vcpu placement='static'>1</vcpu>
|
||||||
|
+ <os>
|
||||||
|
+ <type arch='x86_64' machine='pc'>hvm</type>
|
||||||
|
+ <boot dev='hd'/>
|
||||||
|
+ </os>
|
||||||
|
+ <features>
|
||||||
|
+ <async-teardown enabled='yes'/>
|
||||||
|
+ </features>
|
||||||
|
+ <cpu mode='custom' match='exact' check='none'>
|
||||||
|
+ <model fallback='forbid'>qemu64</model>
|
||||||
|
+ </cpu>
|
||||||
|
+ <clock offset='utc'/>
|
||||||
|
+ <on_poweroff>destroy</on_poweroff>
|
||||||
|
+ <on_reboot>restart</on_reboot>
|
||||||
|
+ <on_crash>destroy</on_crash>
|
||||||
|
+ <devices>
|
||||||
|
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||||
|
+ <disk type='block' device='disk'>
|
||||||
|
+ <driver name='qemu' type='raw'/>
|
||||||
|
+ <source dev='/dev/HostVG/QEMUGuest1'/>
|
||||||
|
+ <target dev='hda' bus='ide'/>
|
||||||
|
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
||||||
|
+ </disk>
|
||||||
|
+ <controller type='usb' index='0' model='piix3-uhci'>
|
||||||
|
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
|
||||||
|
+ </controller>
|
||||||
|
+ <controller type='fdc' index='0'/>
|
||||||
|
+ <controller type='ide' index='0'>
|
||||||
|
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
|
||||||
|
+ </controller>
|
||||||
|
+ <controller type='pci' index='0' model='pci-root'/>
|
||||||
|
+ <input type='mouse' bus='ps2'/>
|
||||||
|
+ <input type='keyboard' bus='ps2'/>
|
||||||
|
+ <audio id='1' type='none'/>
|
||||||
|
+ <memballoon model='virtio'>
|
||||||
|
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||||
|
+ </memballoon>
|
||||||
|
+ </devices>
|
||||||
|
+</domain>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/s390-async-teardown-disabled.s390x-6.0.0.xml b/tests/qemuxml2xmloutdata/s390-async-teardown-disabled.s390x-6.0.0.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..a53d4995f0
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/s390-async-teardown-disabled.s390x-6.0.0.xml
|
||||||
|
@@ -0,0 +1,36 @@
|
||||||
|
+<domain type='qemu'>
|
||||||
|
+ <name>QEMUGuest1</name>
|
||||||
|
+ <uuid>9aa4b45c-b9dd-45ef-91fe-862b27b4231f</uuid>
|
||||||
|
+ <memory unit='KiB'>262144</memory>
|
||||||
|
+ <currentMemory unit='KiB'>262144</currentMemory>
|
||||||
|
+ <vcpu placement='static'>1</vcpu>
|
||||||
|
+ <os>
|
||||||
|
+ <type arch='s390x' machine='s390-ccw-virtio-6.0'>hvm</type>
|
||||||
|
+ <boot dev='hd'/>
|
||||||
|
+ </os>
|
||||||
|
+ <features>
|
||||||
|
+ <async-teardown enabled='no'/>
|
||||||
|
+ </features>
|
||||||
|
+ <cpu mode='custom' match='exact' check='none'>
|
||||||
|
+ <model fallback='forbid'>qemu</model>
|
||||||
|
+ </cpu>
|
||||||
|
+ <clock offset='utc'/>
|
||||||
|
+ <on_poweroff>destroy</on_poweroff>
|
||||||
|
+ <on_reboot>restart</on_reboot>
|
||||||
|
+ <on_crash>destroy</on_crash>
|
||||||
|
+ <devices>
|
||||||
|
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
|
||||||
|
+ <controller type='virtio-serial' index='0'>
|
||||||
|
+ <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/>
|
||||||
|
+ </controller>
|
||||||
|
+ <controller type='pci' index='0' model='pci-root'/>
|
||||||
|
+ <console type='pty'>
|
||||||
|
+ <target type='virtio' port='0'/>
|
||||||
|
+ </console>
|
||||||
|
+ <audio id='1' type='none'/>
|
||||||
|
+ <memballoon model='virtio'>
|
||||||
|
+ <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/>
|
||||||
|
+ </memballoon>
|
||||||
|
+ <panic model='s390'/>
|
||||||
|
+ </devices>
|
||||||
|
+</domain>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/s390-async-teardown-disabled.s390x-latest.xml b/tests/qemuxml2xmloutdata/s390-async-teardown-disabled.s390x-latest.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..06c890cbff
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/s390-async-teardown-disabled.s390x-latest.xml
|
||||||
|
@@ -0,0 +1,36 @@
|
||||||
|
+<domain type='qemu'>
|
||||||
|
+ <name>QEMUGuest1</name>
|
||||||
|
+ <uuid>9aa4b45c-b9dd-45ef-91fe-862b27b4231f</uuid>
|
||||||
|
+ <memory unit='KiB'>262144</memory>
|
||||||
|
+ <currentMemory unit='KiB'>262144</currentMemory>
|
||||||
|
+ <vcpu placement='static'>1</vcpu>
|
||||||
|
+ <os>
|
||||||
|
+ <type arch='s390x' machine='s390-ccw-virtio'>hvm</type>
|
||||||
|
+ <boot dev='hd'/>
|
||||||
|
+ </os>
|
||||||
|
+ <features>
|
||||||
|
+ <async-teardown enabled='no'/>
|
||||||
|
+ </features>
|
||||||
|
+ <cpu mode='custom' match='exact' check='none'>
|
||||||
|
+ <model fallback='forbid'>qemu</model>
|
||||||
|
+ </cpu>
|
||||||
|
+ <clock offset='utc'/>
|
||||||
|
+ <on_poweroff>destroy</on_poweroff>
|
||||||
|
+ <on_reboot>restart</on_reboot>
|
||||||
|
+ <on_crash>destroy</on_crash>
|
||||||
|
+ <devices>
|
||||||
|
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
|
||||||
|
+ <controller type='virtio-serial' index='0'>
|
||||||
|
+ <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/>
|
||||||
|
+ </controller>
|
||||||
|
+ <controller type='pci' index='0' model='pci-root'/>
|
||||||
|
+ <console type='pty'>
|
||||||
|
+ <target type='virtio' port='0'/>
|
||||||
|
+ </console>
|
||||||
|
+ <audio id='1' type='none'/>
|
||||||
|
+ <memballoon model='virtio'>
|
||||||
|
+ <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/>
|
||||||
|
+ </memballoon>
|
||||||
|
+ <panic model='s390'/>
|
||||||
|
+ </devices>
|
||||||
|
+</domain>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/s390-async-teardown-no-attrib.s390x-latest.xml b/tests/qemuxml2xmloutdata/s390-async-teardown-no-attrib.s390x-latest.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..510396a9a8
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/s390-async-teardown-no-attrib.s390x-latest.xml
|
||||||
|
@@ -0,0 +1,36 @@
|
||||||
|
+<domain type='qemu'>
|
||||||
|
+ <name>QEMUGuest1</name>
|
||||||
|
+ <uuid>9aa4b45c-b9dd-45ef-91fe-862b27b4231f</uuid>
|
||||||
|
+ <memory unit='KiB'>262144</memory>
|
||||||
|
+ <currentMemory unit='KiB'>262144</currentMemory>
|
||||||
|
+ <vcpu placement='static'>1</vcpu>
|
||||||
|
+ <os>
|
||||||
|
+ <type arch='s390x' machine='s390-ccw-virtio'>hvm</type>
|
||||||
|
+ <boot dev='hd'/>
|
||||||
|
+ </os>
|
||||||
|
+ <features>
|
||||||
|
+ <async-teardown enabled='yes'/>
|
||||||
|
+ </features>
|
||||||
|
+ <cpu mode='custom' match='exact' check='none'>
|
||||||
|
+ <model fallback='forbid'>qemu</model>
|
||||||
|
+ </cpu>
|
||||||
|
+ <clock offset='utc'/>
|
||||||
|
+ <on_poweroff>destroy</on_poweroff>
|
||||||
|
+ <on_reboot>restart</on_reboot>
|
||||||
|
+ <on_crash>destroy</on_crash>
|
||||||
|
+ <devices>
|
||||||
|
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
|
||||||
|
+ <controller type='virtio-serial' index='0'>
|
||||||
|
+ <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/>
|
||||||
|
+ </controller>
|
||||||
|
+ <controller type='pci' index='0' model='pci-root'/>
|
||||||
|
+ <console type='pty'>
|
||||||
|
+ <target type='virtio' port='0'/>
|
||||||
|
+ </console>
|
||||||
|
+ <audio id='1' type='none'/>
|
||||||
|
+ <memballoon model='virtio'>
|
||||||
|
+ <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/>
|
||||||
|
+ </memballoon>
|
||||||
|
+ <panic model='s390'/>
|
||||||
|
+ </devices>
|
||||||
|
+</domain>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/s390-async-teardown.s390x-latest.xml b/tests/qemuxml2xmloutdata/s390-async-teardown.s390x-latest.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..510396a9a8
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/s390-async-teardown.s390x-latest.xml
|
||||||
|
@@ -0,0 +1,36 @@
|
||||||
|
+<domain type='qemu'>
|
||||||
|
+ <name>QEMUGuest1</name>
|
||||||
|
+ <uuid>9aa4b45c-b9dd-45ef-91fe-862b27b4231f</uuid>
|
||||||
|
+ <memory unit='KiB'>262144</memory>
|
||||||
|
+ <currentMemory unit='KiB'>262144</currentMemory>
|
||||||
|
+ <vcpu placement='static'>1</vcpu>
|
||||||
|
+ <os>
|
||||||
|
+ <type arch='s390x' machine='s390-ccw-virtio'>hvm</type>
|
||||||
|
+ <boot dev='hd'/>
|
||||||
|
+ </os>
|
||||||
|
+ <features>
|
||||||
|
+ <async-teardown enabled='yes'/>
|
||||||
|
+ </features>
|
||||||
|
+ <cpu mode='custom' match='exact' check='none'>
|
||||||
|
+ <model fallback='forbid'>qemu</model>
|
||||||
|
+ </cpu>
|
||||||
|
+ <clock offset='utc'/>
|
||||||
|
+ <on_poweroff>destroy</on_poweroff>
|
||||||
|
+ <on_reboot>restart</on_reboot>
|
||||||
|
+ <on_crash>destroy</on_crash>
|
||||||
|
+ <devices>
|
||||||
|
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
|
||||||
|
+ <controller type='virtio-serial' index='0'>
|
||||||
|
+ <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/>
|
||||||
|
+ </controller>
|
||||||
|
+ <controller type='pci' index='0' model='pci-root'/>
|
||||||
|
+ <console type='pty'>
|
||||||
|
+ <target type='virtio' port='0'/>
|
||||||
|
+ </console>
|
||||||
|
+ <audio id='1' type='none'/>
|
||||||
|
+ <memballoon model='virtio'>
|
||||||
|
+ <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/>
|
||||||
|
+ </memballoon>
|
||||||
|
+ <panic model='s390'/>
|
||||||
|
+ </devices>
|
||||||
|
+</domain>
|
||||||
|
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
|
||||||
|
index 565cb3e1e1..b66274beb8 100644
|
||||||
|
--- a/tests/qemuxml2xmltest.c
|
||||||
|
+++ b/tests/qemuxml2xmltest.c
|
||||||
|
@@ -1241,6 +1241,12 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_LATEST("cpu-phys-bits-limit");
|
||||||
|
DO_TEST_CAPS_LATEST("cpu-phys-bits-emulate-bare");
|
||||||
|
|
||||||
|
+ DO_TEST_CAPS_LATEST("async-teardown");
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST("s390-async-teardown", "s390x");
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST("s390-async-teardown-no-attrib", "s390x");
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST("s390-async-teardown-disabled", "s390x");
|
||||||
|
+ DO_TEST_CAPS_ARCH_VER("s390-async-teardown-disabled", "s390x", "6.0.0");
|
||||||
|
+
|
||||||
|
cleanup:
|
||||||
|
qemuTestDriverFree(&driver);
|
||||||
|
virFileWrapperClearPrefixes();
|
||||||
|
--
|
||||||
|
2.41.0
|
@ -1,53 +0,0 @@
|
|||||||
From bf15c630b7c54637220af65ac84cfd007c1c798a Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <bf15c630b7c54637220af65ac84cfd007c1c798a@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Tue, 31 Jan 2023 15:35:05 +0100
|
|
||||||
Subject: [PATCH] qemu: block: Properly handle FD-passed disk hot-(un-)plug
|
|
||||||
|
|
||||||
The hotplug code paths need to be able to pass the FDs to the monitor to
|
|
||||||
ensure that hotplug works.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 3b8d669d557bd2ce8874f61e83b6d6074d365ec2)
|
|
||||||
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=2040272
|
|
||||||
---
|
|
||||||
src/qemu/qemu_block.c | 7 +++++++
|
|
||||||
1 file changed, 7 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
|
|
||||||
index e865aa17f9..c218262691 100644
|
|
||||||
--- a/src/qemu/qemu_block.c
|
|
||||||
+++ b/src/qemu/qemu_block.c
|
|
||||||
@@ -1410,6 +1410,9 @@ qemuBlockStorageSourceAttachApplyStorageDeps(qemuMonitor *mon,
|
|
||||||
qemuMonitorAddObject(mon, &data->tlsProps, &data->tlsAlias) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
+ if (qemuFDPassTransferMonitor(data->fdpass, mon) < 0)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1559,6 +1562,8 @@ qemuBlockStorageSourceAttachRollback(qemuMonitor *mon,
|
|
||||||
if (data->tlsKeySecretAlias)
|
|
||||||
ignore_value(qemuMonitorDelObject(mon, data->tlsKeySecretAlias, false));
|
|
||||||
|
|
||||||
+ qemuFDPassTransferMonitorRollback(data->fdpass, mon);
|
|
||||||
+
|
|
||||||
virErrorRestore(&orig_err);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1609,6 +1614,8 @@ qemuBlockStorageSourceDetachPrepare(virStorageSource *src)
|
|
||||||
|
|
||||||
if (srcpriv->tlsKeySecret)
|
|
||||||
data->tlsKeySecretAlias = g_strdup(srcpriv->tlsKeySecret->alias);
|
|
||||||
+
|
|
||||||
+ data->fdpass = srcpriv->fdpass;
|
|
||||||
}
|
|
||||||
|
|
||||||
return g_steal_pointer(&data);
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
|||||||
From 11dd7c99fa96364962f81d4efae0ed220c7a7190 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <11dd7c99fa96364962f81d4efae0ed220c7a7190@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Fri, 10 Feb 2023 17:16:43 +0100
|
|
||||||
Subject: [PATCH] qemu: blockjob: Handle 'pending' blockjob state only when we
|
|
||||||
need it
|
|
||||||
|
|
||||||
The 'pending' state needs to be handled by the blockjob code only when
|
|
||||||
the snapshot code requests a block-commit without auto-finalization.
|
|
||||||
|
|
||||||
If we always handle it we fail to properly remove the blockjob data for
|
|
||||||
the 'blockdev-create' job as that also transitions trhough 'pending' but
|
|
||||||
we'd never update it once it reaches 'concluded' as the code already
|
|
||||||
thinks that the job has finished and is no longer watching it.
|
|
||||||
|
|
||||||
Introduce a 'processPending' property into block job data and set it
|
|
||||||
only when we know that we need to process 'pending'.
|
|
||||||
|
|
||||||
Fixes: 90d9bc9d74a5157167548b26c00b1a016655e295
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2168769
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
(cherry picked from commit c433c2434c0459df98ed3355ef615e341acd9009)
|
|
||||||
---
|
|
||||||
src/qemu/qemu_block.c | 1 +
|
|
||||||
src/qemu/qemu_blockjob.c | 19 ++++++++++---------
|
|
||||||
src/qemu/qemu_blockjob.h | 4 ++++
|
|
||||||
3 files changed, 15 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
|
|
||||||
index c218262691..d8ca50d618 100644
|
|
||||||
--- a/src/qemu/qemu_block.c
|
|
||||||
+++ b/src/qemu/qemu_block.c
|
|
||||||
@@ -3374,6 +3374,7 @@ qemuBlockCommit(virDomainObj *vm,
|
|
||||||
if (!(job = qemuBlockJobDiskNewCommit(vm, disk, top_parent, topSource,
|
|
||||||
baseSource,
|
|
||||||
flags & VIR_DOMAIN_BLOCK_COMMIT_DELETE,
|
|
||||||
+ autofinalize,
|
|
||||||
flags)))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c
|
|
||||||
index cb2d05d71d..a20cf1db62 100644
|
|
||||||
--- a/src/qemu/qemu_blockjob.c
|
|
||||||
+++ b/src/qemu/qemu_blockjob.c
|
|
||||||
@@ -274,6 +274,7 @@ qemuBlockJobDiskNewCommit(virDomainObj *vm,
|
|
||||||
virStorageSource *top,
|
|
||||||
virStorageSource *base,
|
|
||||||
bool delete_imgs,
|
|
||||||
+ virTristateBool autofinalize,
|
|
||||||
unsigned int jobflags)
|
|
||||||
{
|
|
||||||
g_autoptr(qemuBlockJobData) job = NULL;
|
|
||||||
@@ -290,6 +291,7 @@ qemuBlockJobDiskNewCommit(virDomainObj *vm,
|
|
||||||
job->data.commit.top = top;
|
|
||||||
job->data.commit.base = base;
|
|
||||||
job->data.commit.deleteCommittedImages = delete_imgs;
|
|
||||||
+ job->processPending = autofinalize == VIR_TRISTATE_BOOL_NO;
|
|
||||||
job->jobflags = jobflags;
|
|
||||||
|
|
||||||
if (qemuBlockJobRegister(job, vm, disk, true) < 0)
|
|
||||||
@@ -532,8 +534,6 @@ qemuBlockJobRefreshJobs(virDomainObj *vm)
|
|
||||||
if (job->state == QEMU_BLOCKJOB_STATE_NEW ||
|
|
||||||
job->state == QEMU_BLOCKJOB_STATE_RUNNING)
|
|
||||||
job->newstate = newstate;
|
|
||||||
- } else if (newstate == QEMU_BLOCKJOB_STATE_PENDING) {
|
|
||||||
- job->newstate = newstate;
|
|
||||||
}
|
|
||||||
/* don't update the job otherwise */
|
|
||||||
}
|
|
||||||
@@ -1568,13 +1568,14 @@ qemuBlockJobEventProcess(virQEMUDriver *driver,
|
|
||||||
|
|
||||||
case QEMU_BLOCKJOB_STATE_PENDING:
|
|
||||||
/* Similarly as for 'ready' state we should handle it only when
|
|
||||||
- * previous state was 'new' or 'running' as there are other cases
|
|
||||||
- * when it can be emitted by QEMU. Currently we need this only when
|
|
||||||
- * deleting non-active external snapshots. */
|
|
||||||
- if (job->state == QEMU_BLOCKJOB_STATE_NEW ||
|
|
||||||
- job->state == QEMU_BLOCKJOB_STATE_RUNNING) {
|
|
||||||
- job->state = job->newstate;
|
|
||||||
- qemuDomainSaveStatus(vm);
|
|
||||||
+ * previous state was 'new' or 'running' and only if the blockjob code
|
|
||||||
+ * is handling finalization of the job explicitly. */
|
|
||||||
+ if (job->processPending) {
|
|
||||||
+ if (job->state == QEMU_BLOCKJOB_STATE_NEW ||
|
|
||||||
+ job->state == QEMU_BLOCKJOB_STATE_RUNNING) {
|
|
||||||
+ job->state = job->newstate;
|
|
||||||
+ qemuDomainSaveStatus(vm);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
job->newstate = -1;
|
|
||||||
break;
|
|
||||||
diff --git a/src/qemu/qemu_blockjob.h b/src/qemu/qemu_blockjob.h
|
|
||||||
index e9b283da20..f1ac43b4c7 100644
|
|
||||||
--- a/src/qemu/qemu_blockjob.h
|
|
||||||
+++ b/src/qemu/qemu_blockjob.h
|
|
||||||
@@ -138,6 +138,9 @@ struct _qemuBlockJobData {
|
|
||||||
|
|
||||||
int brokentype; /* the previous type of a broken blockjob qemuBlockJobType */
|
|
||||||
|
|
||||||
+ bool processPending; /* process the 'pending' state of the job, if the job
|
|
||||||
+ should not be auto-finalized */
|
|
||||||
+
|
|
||||||
bool invalidData; /* the job data (except name) is not valid */
|
|
||||||
bool reconnected; /* internal field for tracking whether job is live after reconnect to qemu */
|
|
||||||
};
|
|
||||||
@@ -175,6 +178,7 @@ qemuBlockJobDiskNewCommit(virDomainObj *vm,
|
|
||||||
virStorageSource *top,
|
|
||||||
virStorageSource *base,
|
|
||||||
bool delete_imgs,
|
|
||||||
+ virTristateBool autofinalize,
|
|
||||||
unsigned int jobflags);
|
|
||||||
|
|
||||||
qemuBlockJobData *
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
|||||||
From 659a0e3cda2f5561abe45ccc10afc41014d1a331 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <659a0e3cda2f5561abe45ccc10afc41014d1a331@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Tue, 31 Jan 2023 14:37:40 +0100
|
|
||||||
Subject: [PATCH] qemu: command: Handle FD passing commandline via
|
|
||||||
qemuBuildBlockStorageSourceAttachDataCommandline
|
|
||||||
|
|
||||||
Copy the pointer to qemuFDPass into struct qemuBlockStorageSourceAttachData
|
|
||||||
so that it can be used from qemuBuildBlockStorageSourceAttachDataCommandline
|
|
||||||
rather than looping again in qemuBuildDiskSourceCommandLineFDs.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 65f14232fb031b57fad085a2e8792da87c97173f)
|
|
||||||
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=2040272
|
|
||||||
---
|
|
||||||
src/qemu/qemu_block.h | 2 ++
|
|
||||||
src/qemu/qemu_command.c | 26 +++----------------
|
|
||||||
.../disk-source-fd.x86_64-latest.args | 6 ++---
|
|
||||||
3 files changed, 9 insertions(+), 25 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h
|
|
||||||
index eac986e0f0..5a61a19da2 100644
|
|
||||||
--- a/src/qemu/qemu_block.h
|
|
||||||
+++ b/src/qemu/qemu_block.h
|
|
||||||
@@ -99,6 +99,8 @@ struct qemuBlockStorageSourceAttachData {
|
|
||||||
char *tlsAlias;
|
|
||||||
virJSONValue *tlsKeySecretProps;
|
|
||||||
char *tlsKeySecretAlias;
|
|
||||||
+
|
|
||||||
+ qemuFDPass *fdpass;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
|
|
||||||
index b96f2d33c1..5edad046d5 100644
|
|
||||||
--- a/src/qemu/qemu_command.c
|
|
||||||
+++ b/src/qemu/qemu_command.c
|
|
||||||
@@ -2119,6 +2119,8 @@ qemuBuildBlockStorageSourceAttachDataCommandline(virCommand *cmd,
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ qemuFDPassTransferCommand(data->fdpass, cmd);
|
|
||||||
+
|
|
||||||
if (data->storageProps) {
|
|
||||||
if (!(tmp = virJSONValueToString(data->storageProps, false)))
|
|
||||||
return -1;
|
|
||||||
@@ -2147,25 +2149,6 @@ qemuBuildBlockStorageSourceAttachDataCommandline(virCommand *cmd,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
-static int
|
|
||||||
-qemuBuildDiskSourceCommandLineFDs(virCommand *cmd,
|
|
||||||
- virDomainDiskDef *disk)
|
|
||||||
-{
|
|
||||||
- virStorageSource *n;
|
|
||||||
-
|
|
||||||
- for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) {
|
|
||||||
- qemuDomainStorageSourcePrivate *srcpriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(n);
|
|
||||||
-
|
|
||||||
- if (!srcpriv || !srcpriv->fdpass)
|
|
||||||
- continue;
|
|
||||||
-
|
|
||||||
- qemuFDPassTransferCommand(srcpriv->fdpass, cmd);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- return 0;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-
|
|
||||||
static int
|
|
||||||
qemuBuildDiskSourceCommandLine(virCommand *cmd,
|
|
||||||
virDomainDiskDef *disk,
|
|
||||||
@@ -2183,9 +2166,6 @@ qemuBuildDiskSourceCommandLine(virCommand *cmd,
|
|
||||||
if (virStorageSourceIsEmpty(disk->src))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
- if (qemuBuildDiskSourceCommandLineFDs(cmd, disk) < 0)
|
|
||||||
- return -1;
|
|
||||||
-
|
|
||||||
if (!(data = qemuBuildStorageSourceChainAttachPrepareBlockdev(disk->src)))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
@@ -10537,6 +10517,8 @@ qemuBuildStorageSourceAttachPrepareCommon(virStorageSource *src,
|
|
||||||
|
|
||||||
tlsKeySecretAlias = srcpriv->tlsKeySecret->alias;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ data->fdpass = srcpriv->fdpass;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (src->haveTLS == VIR_TRISTATE_BOOL_YES &&
|
|
||||||
diff --git a/tests/qemuxml2argvdata/disk-source-fd.x86_64-latest.args b/tests/qemuxml2argvdata/disk-source-fd.x86_64-latest.args
|
|
||||||
index b4a81acfc7..a7ddd65000 100644
|
|
||||||
--- a/tests/qemuxml2argvdata/disk-source-fd.x86_64-latest.args
|
|
||||||
+++ b/tests/qemuxml2argvdata/disk-source-fd.x86_64-latest.args
|
|
||||||
@@ -33,13 +33,13 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
|
|
||||||
-blockdev '{"driver":"file","filename":"/dev/fdset/2","node-name":"libvirt-4-storage","auto-read-only":true,"discard":"unmap"}' \
|
|
||||||
-blockdev '{"node-name":"libvirt-4-format","read-only":false,"driver":"qcow2","file":"libvirt-4-storage"}' \
|
|
||||||
-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x2","drive":"libvirt-4-format","id":"virtio-disk4","bootindex":1}' \
|
|
||||||
--add-fd set=0,fd=704,opaque=libvirt-1-storage0 \
|
|
||||||
--add-fd set=1,fd=777,opaque=libvirt-2-storage0 \
|
|
||||||
--add-fd set=1,fd=778,opaque=libvirt-2-storage1 \
|
|
||||||
-blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/rhel7.1484071876","node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"}' \
|
|
||||||
-blockdev '{"node-name":"libvirt-3-format","read-only":true,"driver":"qcow2","file":"libvirt-3-storage","backing":null}' \
|
|
||||||
+-add-fd set=1,fd=777,opaque=libvirt-2-storage0 \
|
|
||||||
+-add-fd set=1,fd=778,opaque=libvirt-2-storage1 \
|
|
||||||
-blockdev '{"driver":"file","filename":"/dev/fdset/1","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \
|
|
||||||
-blockdev '{"node-name":"libvirt-2-format","read-only":true,"driver":"qcow2","file":"libvirt-2-storage","backing":"libvirt-3-format"}' \
|
|
||||||
+-add-fd set=0,fd=704,opaque=libvirt-1-storage0 \
|
|
||||||
-blockdev '{"driver":"file","filename":"/dev/fdset/0","node-name":"libvirt-1-storage","read-only":false,"discard":"unmap"}' \
|
|
||||||
-blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage","backing":"libvirt-2-format"}' \
|
|
||||||
-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x3","drive":"libvirt-1-format","id":"virtio-disk5"}' \
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
|||||||
From 0fe11b92a8278ffab202033a61340649b0296368 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <0fe11b92a8278ffab202033a61340649b0296368@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Tue, 31 Jan 2023 15:30:51 +0100
|
|
||||||
Subject: [PATCH] qemu: domain: Store fdset ID for disks passed to qemu via FD
|
|
||||||
|
|
||||||
To ensure that we can hot-unplug the disk including the associated fdset
|
|
||||||
we need to store the fdset ID in the status XML.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit f730b1e4f203cbabe363aab246d8a1679063f756)
|
|
||||||
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=2040272
|
|
||||||
---
|
|
||||||
src/qemu/qemu_domain.c | 17 ++++++++++++++++-
|
|
||||||
tests/qemustatusxml2xmldata/modern-in.xml | 3 +++
|
|
||||||
2 files changed, 19 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
|
|
||||||
index 226d4d6dc1..247134672b 100644
|
|
||||||
--- a/src/qemu/qemu_domain.c
|
|
||||||
+++ b/src/qemu/qemu_domain.c
|
|
||||||
@@ -1941,6 +1941,8 @@ qemuStorageSourcePrivateDataParse(xmlXPathContextPtr ctxt,
|
|
||||||
g_autofree char *httpcookiealias = NULL;
|
|
||||||
g_autofree char *tlskeyalias = NULL;
|
|
||||||
g_autofree char *thresholdEventWithIndex = NULL;
|
|
||||||
+ bool fdsetPresent = false;
|
|
||||||
+ unsigned int fdSetID;
|
|
||||||
|
|
||||||
src->nodestorage = virXPathString("string(./nodenames/nodename[@type='storage']/@name)", ctxt);
|
|
||||||
src->nodeformat = virXPathString("string(./nodenames/nodename[@type='format']/@name)", ctxt);
|
|
||||||
@@ -1957,7 +1959,9 @@ qemuStorageSourcePrivateDataParse(xmlXPathContextPtr ctxt,
|
|
||||||
httpcookiealias = virXPathString("string(./objects/secret[@type='httpcookie']/@alias)", ctxt);
|
|
||||||
tlskeyalias = virXPathString("string(./objects/secret[@type='tlskey']/@alias)", ctxt);
|
|
||||||
|
|
||||||
- if (authalias || encalias || httpcookiealias || tlskeyalias) {
|
|
||||||
+ fdsetPresent = virXPathUInt("string(./fdsets/fdset[@type='storage']/@id)", ctxt, &fdSetID) == 0;
|
|
||||||
+
|
|
||||||
+ if (authalias || encalias || httpcookiealias || tlskeyalias || fdsetPresent) {
|
|
||||||
if (!src->privateData &&
|
|
||||||
!(src->privateData = qemuDomainStorageSourcePrivateNew()))
|
|
||||||
return -1;
|
|
||||||
@@ -1975,6 +1979,9 @@ qemuStorageSourcePrivateDataParse(xmlXPathContextPtr ctxt,
|
|
||||||
|
|
||||||
if (qemuStorageSourcePrivateDataAssignSecinfo(&priv->tlsKeySecret, &tlskeyalias) < 0)
|
|
||||||
return -1;
|
|
||||||
+
|
|
||||||
+ if (fdsetPresent)
|
|
||||||
+ priv->fdpass = qemuFDPassNewPassed(fdSetID);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virStorageSourcePrivateDataParseRelPath(ctxt, src) < 0)
|
|
||||||
@@ -2008,6 +2015,7 @@ qemuStorageSourcePrivateDataFormat(virStorageSource *src,
|
|
||||||
qemuDomainStorageSourcePrivate *srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src);
|
|
||||||
g_auto(virBuffer) nodenamesChildBuf = VIR_BUFFER_INIT_CHILD(buf);
|
|
||||||
g_auto(virBuffer) objectsChildBuf = VIR_BUFFER_INIT_CHILD(buf);
|
|
||||||
+ g_auto(virBuffer) fdsetsChildBuf = VIR_BUFFER_INIT_CHILD(buf);
|
|
||||||
|
|
||||||
virBufferEscapeString(&nodenamesChildBuf, "<nodename type='storage' name='%s'/>\n", src->nodestorage);
|
|
||||||
virBufferEscapeString(&nodenamesChildBuf, "<nodename type='format' name='%s'/>\n", src->nodeformat);
|
|
||||||
@@ -2025,10 +2033,15 @@ qemuStorageSourcePrivateDataFormat(virStorageSource *src,
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (srcPriv) {
|
|
||||||
+ unsigned int fdSetID;
|
|
||||||
+
|
|
||||||
qemuStorageSourcePrivateDataFormatSecinfo(&objectsChildBuf, srcPriv->secinfo, "auth");
|
|
||||||
qemuStorageSourcePrivateDataFormatSecinfo(&objectsChildBuf, srcPriv->encinfo, "encryption");
|
|
||||||
qemuStorageSourcePrivateDataFormatSecinfo(&objectsChildBuf, srcPriv->httpcookie, "httpcookie");
|
|
||||||
qemuStorageSourcePrivateDataFormatSecinfo(&objectsChildBuf, srcPriv->tlsKeySecret, "tlskey");
|
|
||||||
+
|
|
||||||
+ if (qemuFDPassIsPassed(srcPriv->fdpass, &fdSetID))
|
|
||||||
+ virBufferAsprintf(&fdsetsChildBuf, "<fdset type='storage' id='%u'/>\n", fdSetID);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (src->tlsAlias)
|
|
||||||
@@ -2036,6 +2049,8 @@ qemuStorageSourcePrivateDataFormat(virStorageSource *src,
|
|
||||||
|
|
||||||
virXMLFormatElement(buf, "objects", NULL, &objectsChildBuf);
|
|
||||||
|
|
||||||
+ virXMLFormatElement(buf, "fdsets", NULL, &fdsetsChildBuf);
|
|
||||||
+
|
|
||||||
if (src->thresholdEventWithIndex)
|
|
||||||
virBufferAddLit(buf, "<thresholdEvent indexUsed='yes'/>\n");
|
|
||||||
|
|
||||||
diff --git a/tests/qemustatusxml2xmldata/modern-in.xml b/tests/qemustatusxml2xmldata/modern-in.xml
|
|
||||||
index 7759034f7a..f5beab722b 100644
|
|
||||||
--- a/tests/qemustatusxml2xmldata/modern-in.xml
|
|
||||||
+++ b/tests/qemustatusxml2xmldata/modern-in.xml
|
|
||||||
@@ -341,6 +341,9 @@
|
|
||||||
<secret type='tlskey' alias='tls-certificate-key-alias'/>
|
|
||||||
<TLSx509 alias='transport-alias'/>
|
|
||||||
</objects>
|
|
||||||
+ <fdsets>
|
|
||||||
+ <fdset type='storage' id='1337'/>
|
|
||||||
+ </fdsets>
|
|
||||||
<thresholdEvent indexUsed='yes'/>
|
|
||||||
</privateData>
|
|
||||||
</source>
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,97 +0,0 @@
|
|||||||
From f7d193539a8a7194ee3506642b68e0e52619cdf9 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <f7d193539a8a7194ee3506642b68e0e52619cdf9@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Tue, 31 Jan 2023 15:25:57 +0100
|
|
||||||
Subject: [PATCH] qemu: fd: Add helpers allowing storing FD set data in status
|
|
||||||
XML
|
|
||||||
|
|
||||||
Rollback of FD sets passed to qemu is also needed after possible restart
|
|
||||||
of libvirtd when we need to serialize the data into status XML. For this
|
|
||||||
purpose we need to access the fdset ID once it was passed to qemu and
|
|
||||||
potentially re-create a 'qemuFDPass' struct in passed state.
|
|
||||||
|
|
||||||
Introduce 'qemuFDPassNewPassed' and 'qemuFDPassIsPassed'.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 5598c10c6464887a99928de48fb2fc3e4f1696dc)
|
|
||||||
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=2040272
|
|
||||||
---
|
|
||||||
src/qemu/qemu_fd.c | 41 +++++++++++++++++++++++++++++++++++++++++
|
|
||||||
src/qemu/qemu_fd.h | 7 +++++++
|
|
||||||
2 files changed, 48 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_fd.c b/src/qemu/qemu_fd.c
|
|
||||||
index ebeeb65505..f5eedb88ec 100644
|
|
||||||
--- a/src/qemu/qemu_fd.c
|
|
||||||
+++ b/src/qemu/qemu_fd.c
|
|
||||||
@@ -96,6 +96,47 @@ qemuFDPassNew(const char *prefix,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
+/**
|
|
||||||
+ * qemuFDPassNewPassed:
|
|
||||||
+ * @fdSetID: ID of an FDset which was allready passed to qemu
|
|
||||||
+ *
|
|
||||||
+ * Create qemuFDPass pointing to an already passed FD. Useful to usw with
|
|
||||||
+ * qemuFDPassTransferMonitorRollback, when restoring after restart.
|
|
||||||
+ */
|
|
||||||
+qemuFDPass *
|
|
||||||
+qemuFDPassNewPassed(unsigned int fdSetID)
|
|
||||||
+{
|
|
||||||
+ qemuFDPass *fdpass = g_new0(qemuFDPass, 1);
|
|
||||||
+
|
|
||||||
+ fdpass->fdSetID = fdSetID;
|
|
||||||
+ fdpass->passed = true;
|
|
||||||
+
|
|
||||||
+ return fdpass;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * qemuFDPassIsPassed:
|
|
||||||
+ * @fdpass: The fd passing helper struct
|
|
||||||
+ * @id: when non-NULL filled with the fdset ID
|
|
||||||
+ *
|
|
||||||
+ * Returns true if @fdpass was passed to qemu. In such case @id is also filled
|
|
||||||
+ * with the ID of the fdset if non-NULL.
|
|
||||||
+ */
|
|
||||||
+bool
|
|
||||||
+qemuFDPassIsPassed(qemuFDPass *fdpass,
|
|
||||||
+ unsigned *id)
|
|
||||||
+{
|
|
||||||
+ if (!fdpass || !fdpass->passed)
|
|
||||||
+ return false;
|
|
||||||
+
|
|
||||||
+ if (id)
|
|
||||||
+ *id = fdpass->fdSetID;
|
|
||||||
+
|
|
||||||
+ return true;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* qemuFDPassAddFD:
|
|
||||||
* @fdpass: The fd passing helper struct
|
|
||||||
diff --git a/src/qemu/qemu_fd.h b/src/qemu/qemu_fd.h
|
|
||||||
index 032b9442ee..cd0ff2c690 100644
|
|
||||||
--- a/src/qemu/qemu_fd.h
|
|
||||||
+++ b/src/qemu/qemu_fd.h
|
|
||||||
@@ -31,6 +31,13 @@ qemuFDPass *
|
|
||||||
qemuFDPassNew(const char *prefix,
|
|
||||||
void *dompriv);
|
|
||||||
|
|
||||||
+qemuFDPass *
|
|
||||||
+qemuFDPassNewPassed(unsigned int fdSetID);
|
|
||||||
+
|
|
||||||
+bool
|
|
||||||
+qemuFDPassIsPassed(qemuFDPass *fdpass,
|
|
||||||
+ unsigned *id);
|
|
||||||
+
|
|
||||||
void
|
|
||||||
qemuFDPassAddFD(qemuFDPass *fdpass,
|
|
||||||
int *fd,
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
|||||||
From b6eb914119af7e724cbee27951cfba0a6afb3b97 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <b6eb914119af7e724cbee27951cfba0a6afb3b97@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Thu, 19 Jan 2023 15:06:11 +0100
|
|
||||||
Subject: [PATCH] qemu: hotplug: Remove legacy quirk for 'dimm' address
|
|
||||||
generation
|
|
||||||
|
|
||||||
Commit b7798a07f93 (in fall of 2016) changed the way we generate aliases
|
|
||||||
for 'dimm' memory devices as the alias itself is part of the migration
|
|
||||||
stream section naming and thus must be treated as ABI.
|
|
||||||
|
|
||||||
The code added compatibility layer for VMs with memory hotplug started
|
|
||||||
with the old scheme to prevent from generating wrong aliases. The
|
|
||||||
compatibility layer broke though later when 'nvdimm' and 'pmem' devices
|
|
||||||
were introduced as it wrongly detected them as old configuration.
|
|
||||||
|
|
||||||
Now rather than attempting to fix the legacy compat layer to treat other
|
|
||||||
devices properly we'll be better off simply removing it as it's
|
|
||||||
extremely unlikely that somebody has a VM started in 2016 running with
|
|
||||||
today's libvirt and attempts to hotplug more memory.
|
|
||||||
|
|
||||||
This fixes a corner case when a user hot-adds a 'dimm' into a VM with a
|
|
||||||
'dimm' and a 'nvdimm' after restart of libvirtd and then attempts to
|
|
||||||
migrate the VM.
|
|
||||||
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2158701
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 50ce3463d514950350143f03e8421c8c31889c5d)
|
|
||||||
---
|
|
||||||
src/qemu/qemu_hotplug.c | 4 +---
|
|
||||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
|
|
||||||
index 026e1ee5ad..5840504d13 100644
|
|
||||||
--- a/src/qemu/qemu_hotplug.c
|
|
||||||
+++ b/src/qemu/qemu_hotplug.c
|
|
||||||
@@ -2275,9 +2275,7 @@ qemuDomainAttachMemory(virQEMUDriver *driver,
|
|
||||||
goto cleanup;
|
|
||||||
releaseaddr = true;
|
|
||||||
|
|
||||||
- /* in cases where we are using a VM with aliases generated according to the
|
|
||||||
- * index of the memory device we need to keep continue using that scheme */
|
|
||||||
- if (qemuAssignDeviceMemoryAlias(vm->def, mem, priv->memAliasOrderMismatch) < 0)
|
|
||||||
+ if (qemuAssignDeviceMemoryAlias(vm->def, mem, false) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
objalias = g_strdup_printf("mem%s", mem->info.alias);
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
|||||||
From 01d7e15c8c4a33a379e8297182dc474bb2046d2a Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <01d7e15c8c4a33a379e8297182dc474bb2046d2a@dist-git>
|
|
||||||
From: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Date: Fri, 27 Jan 2023 10:46:55 +0100
|
|
||||||
Subject: [PATCH] qemuExtTPMStop: Restore TPM state label more often
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
When stopping swtpm we can restore the label either on just the
|
|
||||||
swtpm's domain specific logfile (/var/log/swtpm/libvirt/qemu/...),
|
|
||||||
or on the logfile and the state too (/var/lib/libvirt/swtpm/...).
|
|
||||||
|
|
||||||
The deciding factor is whether the guest is stopped because of
|
|
||||||
outgoing migration OR the state is on a shared filesystem.
|
|
||||||
|
|
||||||
But this is not correct condition, because for instance saving the
|
|
||||||
guest into a file (virsh save) is also an outgoing migration.
|
|
||||||
Alternatively, when the swtpm state is stored on a shared
|
|
||||||
filesystem, but the guest is destroyed (virsh destroy), i.e.
|
|
||||||
stopped because of different reason than migration, we want to
|
|
||||||
restore the seclabels.
|
|
||||||
|
|
||||||
The correct condition is: skip restoring the state on outgoing
|
|
||||||
migration AND shared filesystem.
|
|
||||||
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2161557
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
(cherry picked from commit 794fddf866676ef4119b3acf43b5547a9e868bb9)
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/qemu/qemu_tpm.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_tpm.c b/src/qemu/qemu_tpm.c
|
|
||||||
index b2748eb6a4..5831ffc32e 100644
|
|
||||||
--- a/src/qemu/qemu_tpm.c
|
|
||||||
+++ b/src/qemu/qemu_tpm.c
|
|
||||||
@@ -1142,7 +1142,7 @@ qemuExtTPMStop(virQEMUDriver *driver,
|
|
||||||
return;
|
|
||||||
|
|
||||||
qemuTPMEmulatorStop(cfg->swtpmStateDir, shortName);
|
|
||||||
- if (outgoingMigration || qemuTPMHasSharedStorage(vm->def))
|
|
||||||
+ if (outgoingMigration && qemuTPMHasSharedStorage(vm->def))
|
|
||||||
restoreTPMStateLabel = false;
|
|
||||||
|
|
||||||
if (qemuSecurityRestoreTPMLabels(driver, vm, restoreTPMStateLabel) < 0)
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
|||||||
From d96dc2b87c220298d4de031cff72fd9a458dad74 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <d96dc2b87c220298d4de031cff72fd9a458dad74@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Tue, 31 Jan 2023 17:26:43 +0100
|
|
||||||
Subject: [PATCH] qemuFDPassTransferCommand: Mark that FD was passed
|
|
||||||
|
|
||||||
Until now the code didn't expect that we'd want to rollback/detach a FD
|
|
||||||
passed on the commandline, but whith disk backend FD passing this can
|
|
||||||
happen.
|
|
||||||
|
|
||||||
Properly mark the 'qemuFDPass' object as passed to qemu even when it was
|
|
||||||
done on the commandline.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 3b7b201b95f2facc01bd9f8a42aed0fad96789fa)
|
|
||||||
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=2040272
|
|
||||||
---
|
|
||||||
src/qemu/qemu_fd.c | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_fd.c b/src/qemu/qemu_fd.c
|
|
||||||
index 51a8133fde..ebeeb65505 100644
|
|
||||||
--- a/src/qemu/qemu_fd.c
|
|
||||||
+++ b/src/qemu/qemu_fd.c
|
|
||||||
@@ -151,6 +151,8 @@ qemuFDPassTransferCommand(qemuFDPass *fdpass,
|
|
||||||
fdpass->fds[i].fd = -1;
|
|
||||||
virCommandAddArgList(cmd, "-add-fd", arg, NULL);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ fdpass->passed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,69 +0,0 @@
|
|||||||
From dd64ec40a29739464cfe886818588bb9946b8d8d Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <dd64ec40a29739464cfe886818588bb9946b8d8d@dist-git>
|
|
||||||
From: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Date: Fri, 27 Jan 2023 13:59:08 +0100
|
|
||||||
Subject: [PATCH] qemuProcessLaunch: Tighten rules for external devices wrt
|
|
||||||
incoming migration
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
When starting a guest, helper processes are started first. But
|
|
||||||
they need a bit of special handling. Just consider a regular cold
|
|
||||||
boot and an incoming migration. For instance, in case of swtpm
|
|
||||||
with its state on a shared volume, we want to set label on the
|
|
||||||
state for the cold boot case, but don't want to touch the label
|
|
||||||
in case of incoming migration (because the source very
|
|
||||||
specifically did not restore it either).
|
|
||||||
|
|
||||||
Until now, these two cases were differentiated by testing
|
|
||||||
@incoming against NULL. And while that makes sense for other
|
|
||||||
aspects of domain startup, for external devices we need a bit
|
|
||||||
more, because a restore from a save file is also 'incoming
|
|
||||||
migration'.
|
|
||||||
|
|
||||||
Now, there is a difference between regular migration and restore
|
|
||||||
from a save file. In the former case we do not want to set
|
|
||||||
seclabels in the save state. BUT, in the latter case we do need
|
|
||||||
to set them, because the code that saves the machine restored
|
|
||||||
seclabels.
|
|
||||||
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2161557
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
(cherry picked from commit 5c4007ddc6c29632b5cc96ab4ef81ebb7797d1bb)
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/qemu/qemu_process.c | 9 ++++++++-
|
|
||||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
|
|
||||||
index 2de87211fb..1217fb1856 100644
|
|
||||||
--- a/src/qemu/qemu_process.c
|
|
||||||
+++ b/src/qemu/qemu_process.c
|
|
||||||
@@ -7620,6 +7620,7 @@ qemuProcessLaunch(virConnectPtr conn,
|
|
||||||
size_t nnicindexes = 0;
|
|
||||||
g_autofree int *nicindexes = NULL;
|
|
||||||
unsigned long long maxMemLock = 0;
|
|
||||||
+ bool incomingMigrationExtDevices = false;
|
|
||||||
|
|
||||||
VIR_DEBUG("conn=%p driver=%p vm=%p name=%s id=%d asyncJob=%d "
|
|
||||||
"incoming.uri=%s "
|
|
||||||
@@ -7674,7 +7675,13 @@ qemuProcessLaunch(virConnectPtr conn,
|
|
||||||
if (qemuDomainSchedCoreStart(cfg, vm) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
- if (qemuExtDevicesStart(driver, vm, incoming != NULL) < 0)
|
|
||||||
+ /* For external devices the rules of incoming migration are a bit stricter,
|
|
||||||
+ * than plain @incoming != NULL. They need to differentiate between
|
|
||||||
+ * incoming migration and restore from a save file. */
|
|
||||||
+ incomingMigrationExtDevices = incoming &&
|
|
||||||
+ vmop == VIR_NETDEV_VPORT_PROFILE_OP_MIGRATE_IN_START;
|
|
||||||
+
|
|
||||||
+ if (qemuExtDevicesStart(driver, vm, incomingMigrationExtDevices) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (!(cmd = qemuBuildCommandLine(vm,
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
|||||||
From b53d7b7150f81ee6f014815fa7ee3f1106c491d5 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <b53d7b7150f81ee6f014815fa7ee3f1106c491d5@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Thu, 9 Feb 2023 09:40:32 +0100
|
|
||||||
Subject: [PATCH] qemuProcessRefreshDisks: Don't skip filling of disk
|
|
||||||
information if tray state didn't change
|
|
||||||
|
|
||||||
Commit 5ef2582646eb98 added emitting of even when refreshign disk state,
|
|
||||||
where it wanted to avoid sending the event if disk state didn't change.
|
|
||||||
This was achieved by using 'continue' in the loop filling the
|
|
||||||
information. Unfortunately this skips extraction of whether the device
|
|
||||||
has a tray which is propagated into internal structures, which in turn
|
|
||||||
broke cdrom media change as the code thought there's no tray for the
|
|
||||||
device.
|
|
||||||
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2166411
|
|
||||||
Fixes: 5ef2582646eb98af208ce37355f82bdef39931fa
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
|
|
||||||
(cherry picked from commit 86cfe93ef7fdc2d665a2fc88b79af89e7978ba78)
|
|
||||||
---
|
|
||||||
src/qemu/qemu_process.c | 11 +++++------
|
|
||||||
1 file changed, 5 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
|
|
||||||
index 32083de563..7ae859d68f 100644
|
|
||||||
--- a/src/qemu/qemu_process.c
|
|
||||||
+++ b/src/qemu/qemu_process.c
|
|
||||||
@@ -8713,16 +8713,13 @@ qemuProcessRefreshDisks(virDomainObj *vm,
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (info->removable) {
|
|
||||||
- virObjectEvent *event = NULL;
|
|
||||||
+ bool emitEvent = info->tray_open != disk->tray_status;
|
|
||||||
int reason;
|
|
||||||
|
|
||||||
if (info->empty)
|
|
||||||
virDomainDiskEmptySource(disk);
|
|
||||||
|
|
||||||
if (info->tray) {
|
|
||||||
- if (info->tray_open == disk->tray_status)
|
|
||||||
- continue;
|
|
||||||
-
|
|
||||||
if (info->tray_open) {
|
|
||||||
reason = VIR_DOMAIN_EVENT_TRAY_CHANGE_OPEN;
|
|
||||||
disk->tray_status = VIR_DOMAIN_DISK_TRAY_OPEN;
|
|
||||||
@@ -8731,8 +8728,10 @@ qemuProcessRefreshDisks(virDomainObj *vm,
|
|
||||||
disk->tray_status = VIR_DOMAIN_DISK_TRAY_CLOSED;
|
|
||||||
}
|
|
||||||
|
|
||||||
- event = virDomainEventTrayChangeNewFromObj(vm, disk->info.alias, reason);
|
|
||||||
- virObjectEventStateQueue(driver->domainEventState, event);
|
|
||||||
+ if (emitEvent) {
|
|
||||||
+ virObjectEvent *event = virDomainEventTrayChangeNewFromObj(vm, disk->info.alias, reason);
|
|
||||||
+ virObjectEventStateQueue(driver->domainEventState, event);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
From 102efebe3cd2bfebace026744a7835309cf124fa Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <102efebe3cd2bfebace026744a7835309cf124fa@dist-git>
|
|
||||||
From: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Date: Fri, 27 Jan 2023 10:45:50 +0100
|
|
||||||
Subject: [PATCH] qemuProcessStop: Fix detection of outgoing migration for
|
|
||||||
external devices
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
When cleaning up host in qemuProcessStop(), our external helper
|
|
||||||
processes (e.g. swtpm) want to know whether the domain is being
|
|
||||||
migrated out or not (so that they restore seclabels on a device
|
|
||||||
state that's on a shared storage).
|
|
||||||
|
|
||||||
This fact is reflected in the @outgoingMigration variable which
|
|
||||||
is set to true if asyncJob is anything but
|
|
||||||
VIR_ASYNC_JOB_MIGRATION_IN. Well, we have a specific job for
|
|
||||||
outgoing migration (VIR_ASYNC_JOB_MIGRATION_OUT) and thus we
|
|
||||||
should check for that.
|
|
||||||
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
(cherry picked from commit 88f0fbf63851c6ae80ad03b2a05a966d8a2f296c)
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2161557
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/qemu/qemu_process.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
|
|
||||||
index 29716ecb19..2de87211fb 100644
|
|
||||||
--- a/src/qemu/qemu_process.c
|
|
||||||
+++ b/src/qemu/qemu_process.c
|
|
||||||
@@ -8397,7 +8397,7 @@ void qemuProcessStop(virQEMUDriver *driver,
|
|
||||||
qemuDomainCleanupRun(driver, vm);
|
|
||||||
|
|
||||||
outgoingMigration = (flags & VIR_QEMU_PROCESS_STOP_MIGRATED) &&
|
|
||||||
- (asyncJob != VIR_ASYNC_JOB_MIGRATION_IN);
|
|
||||||
+ (asyncJob == VIR_ASYNC_JOB_MIGRATION_OUT);
|
|
||||||
qemuExtDevicesStop(driver, vm, outgoingMigration);
|
|
||||||
|
|
||||||
qemuDBusStop(driver, vm);
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
|||||||
From deb6aad4f6bcfd95235d3149e9d69b95fe011294 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <deb6aad4f6bcfd95235d3149e9d69b95fe011294@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Tue, 31 Jan 2023 15:19:58 +0100
|
|
||||||
Subject: [PATCH] qemuStorageSourcePrivateDataFormat: Rename 'tmp' to
|
|
||||||
'objectsChildBuf'
|
|
||||||
|
|
||||||
Be consistent with other children buffer variable naming scheme.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 531adf32743b6045f44964ec5e1f8bdb9c913797)
|
|
||||||
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=2040272
|
|
||||||
---
|
|
||||||
src/qemu/qemu_domain.c | 14 +++++++-------
|
|
||||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
|
|
||||||
index 2eb5653254..226d4d6dc1 100644
|
|
||||||
--- a/src/qemu/qemu_domain.c
|
|
||||||
+++ b/src/qemu/qemu_domain.c
|
|
||||||
@@ -2005,9 +2005,9 @@ static int
|
|
||||||
qemuStorageSourcePrivateDataFormat(virStorageSource *src,
|
|
||||||
virBuffer *buf)
|
|
||||||
{
|
|
||||||
- g_auto(virBuffer) tmp = VIR_BUFFER_INIT_CHILD(buf);
|
|
||||||
qemuDomainStorageSourcePrivate *srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src);
|
|
||||||
g_auto(virBuffer) nodenamesChildBuf = VIR_BUFFER_INIT_CHILD(buf);
|
|
||||||
+ g_auto(virBuffer) objectsChildBuf = VIR_BUFFER_INIT_CHILD(buf);
|
|
||||||
|
|
||||||
virBufferEscapeString(&nodenamesChildBuf, "<nodename type='storage' name='%s'/>\n", src->nodestorage);
|
|
||||||
virBufferEscapeString(&nodenamesChildBuf, "<nodename type='format' name='%s'/>\n", src->nodeformat);
|
|
||||||
@@ -2025,16 +2025,16 @@ qemuStorageSourcePrivateDataFormat(virStorageSource *src,
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (srcPriv) {
|
|
||||||
- qemuStorageSourcePrivateDataFormatSecinfo(&tmp, srcPriv->secinfo, "auth");
|
|
||||||
- qemuStorageSourcePrivateDataFormatSecinfo(&tmp, srcPriv->encinfo, "encryption");
|
|
||||||
- qemuStorageSourcePrivateDataFormatSecinfo(&tmp, srcPriv->httpcookie, "httpcookie");
|
|
||||||
- qemuStorageSourcePrivateDataFormatSecinfo(&tmp, srcPriv->tlsKeySecret, "tlskey");
|
|
||||||
+ qemuStorageSourcePrivateDataFormatSecinfo(&objectsChildBuf, srcPriv->secinfo, "auth");
|
|
||||||
+ qemuStorageSourcePrivateDataFormatSecinfo(&objectsChildBuf, srcPriv->encinfo, "encryption");
|
|
||||||
+ qemuStorageSourcePrivateDataFormatSecinfo(&objectsChildBuf, srcPriv->httpcookie, "httpcookie");
|
|
||||||
+ qemuStorageSourcePrivateDataFormatSecinfo(&objectsChildBuf, srcPriv->tlsKeySecret, "tlskey");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (src->tlsAlias)
|
|
||||||
- virBufferAsprintf(&tmp, "<TLSx509 alias='%s'/>\n", src->tlsAlias);
|
|
||||||
+ virBufferAsprintf(&objectsChildBuf, "<TLSx509 alias='%s'/>\n", src->tlsAlias);
|
|
||||||
|
|
||||||
- virXMLFormatElement(buf, "objects", NULL, &tmp);
|
|
||||||
+ virXMLFormatElement(buf, "objects", NULL, &objectsChildBuf);
|
|
||||||
|
|
||||||
if (src->thresholdEventWithIndex)
|
|
||||||
virBufferAddLit(buf, "<thresholdEvent indexUsed='yes'/>\n");
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
|||||||
From d78fc22fb96e0050a419623bf27639c63624c998 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <d78fc22fb96e0050a419623bf27639c63624c998@dist-git>
|
|
||||||
From: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Date: Fri, 10 Feb 2023 09:47:05 +0100
|
|
||||||
Subject: [PATCH] qemu_extdevice: Do cleanup host only for
|
|
||||||
VIR_DOMAIN_TPM_TYPE_EMULATOR
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
We only set up host for VIR_DOMAIN_TPM_TYPE_EMULATOR and thus
|
|
||||||
similarly, we should do cleanup for the same type. This also
|
|
||||||
fixes a crasher, in which qemuTPMEmulatorCleanupHost() accesses
|
|
||||||
tpm->data.emulator.storagepath which is NULL for
|
|
||||||
VIR_DOMAIN_TPM_TYPE_EXTERNAL.
|
|
||||||
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2168762
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
(cherry picked from commit 03f76e577d66f8eea6aa7cc513e75026527b4cda)
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/qemu/qemu_extdevice.c | 5 ++++-
|
|
||||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_extdevice.c b/src/qemu/qemu_extdevice.c
|
|
||||||
index f7b2e2e653..fdefe59215 100644
|
|
||||||
--- a/src/qemu/qemu_extdevice.c
|
|
||||||
+++ b/src/qemu/qemu_extdevice.c
|
|
||||||
@@ -162,7 +162,10 @@ qemuExtDevicesCleanupHost(virQEMUDriver *driver,
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (i = 0; i < def->ntpms; i++) {
|
|
||||||
- qemuExtTPMCleanupHost(def->tpms[i], flags, outgoingMigration);
|
|
||||||
+ virDomainTPMDef *tpm = def->tpms[i];
|
|
||||||
+
|
|
||||||
+ if (tpm->type == VIR_DOMAIN_TPM_TYPE_EMULATOR)
|
|
||||||
+ qemuExtTPMCleanupHost(tpm, flags, outgoingMigration);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
|||||||
From bf949f570a232423c7cf01831dfbe7034a4f49d8 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <bf949f570a232423c7cf01831dfbe7034a4f49d8@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Tue, 31 Jan 2023 15:23:54 +0100
|
|
||||||
Subject: [PATCH] qemu_fd: Remove declaration for 'qemuFDPassNewDirect'
|
|
||||||
|
|
||||||
The function doesn't exist any more.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 51dc38fe31beb252cc0fa2780210cdedc698f57f)
|
|
||||||
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=2040272
|
|
||||||
---
|
|
||||||
src/qemu/qemu_fd.h | 3 ---
|
|
||||||
1 file changed, 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_fd.h b/src/qemu/qemu_fd.h
|
|
||||||
index 6f165b6be9..032b9442ee 100644
|
|
||||||
--- a/src/qemu/qemu_fd.h
|
|
||||||
+++ b/src/qemu/qemu_fd.h
|
|
||||||
@@ -30,9 +30,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuFDPass, qemuFDPassFree);
|
|
||||||
qemuFDPass *
|
|
||||||
qemuFDPassNew(const char *prefix,
|
|
||||||
void *dompriv);
|
|
||||||
-qemuFDPass *
|
|
||||||
-qemuFDPassNewDirect(const char *prefix,
|
|
||||||
- void *dompriv);
|
|
||||||
|
|
||||||
void
|
|
||||||
qemuFDPassAddFD(qemuFDPass *fdpass,
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
|||||||
From 25de0ead0194159a6d9a769f34ec5b092e9b718c Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <25de0ead0194159a6d9a769f34ec5b092e9b718c@dist-git>
|
|
||||||
From: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Date: Mon, 23 Jan 2023 11:42:18 +0100
|
|
||||||
Subject: [PATCH] qemu_interface: Fix managed='no' case when creating an
|
|
||||||
ethernet interface
|
|
||||||
|
|
||||||
In a recent commit of v9.0.0-rc1~192 I've tried to forbid case
|
|
||||||
where a TAP device already exists, but at the same time it's
|
|
||||||
managed by Libvirt (<interface type='ethernet'> <target
|
|
||||||
dev='tap0' managed='yes'/> </interface>). NB, if @managed
|
|
||||||
attribute is missing then it's assumed to be managed by Libvirt.
|
|
||||||
|
|
||||||
Anyway, I've mistakenly put setting of
|
|
||||||
VIR_NETDEV_TAP_CREATE_ALLOW_EXISTING flag into managed='yes'
|
|
||||||
branch instead of managed='no' branch in
|
|
||||||
qemuInterfaceEthernetConnect().
|
|
||||||
|
|
||||||
Move the setting of the flag into the correct branch.
|
|
||||||
|
|
||||||
Fixes: a2ae3d299cf9c5ada8aa42ec4271748eb479dc27
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit d6a8b9eef70887e01fa5fd292580e14ca5eab08c)
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2144738
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/qemu/qemu_interface.c | 5 +++--
|
|
||||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_interface.c b/src/qemu/qemu_interface.c
|
|
||||||
index b6895cedde..ed2c209167 100644
|
|
||||||
--- a/src/qemu/qemu_interface.c
|
|
||||||
+++ b/src/qemu/qemu_interface.c
|
|
||||||
@@ -443,6 +443,9 @@ qemuInterfaceEthernetConnect(virDomainDef *def,
|
|
||||||
_("target managed='no' but specified dev doesn't exist"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ tap_create_flags |= VIR_NETDEV_TAP_CREATE_ALLOW_EXISTING;
|
|
||||||
+
|
|
||||||
if (virNetDevMacVLanIsMacvtap(net->ifname)) {
|
|
||||||
auditdev = net->ifname;
|
|
||||||
if (virNetDevMacVLanTapOpen(net->ifname, tapfd, tapfdSize) < 0)
|
|
||||||
@@ -461,8 +464,6 @@ qemuInterfaceEthernetConnect(virDomainDef *def,
|
|
||||||
if (!net->ifname)
|
|
||||||
template_ifname = true;
|
|
||||||
|
|
||||||
- tap_create_flags |= VIR_NETDEV_TAP_CREATE_ALLOW_EXISTING;
|
|
||||||
-
|
|
||||||
if (virNetDevTapCreate(&net->ifname, tunpath, tapfd, tapfdSize,
|
|
||||||
tap_create_flags) < 0) {
|
|
||||||
goto cleanup;
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
|||||||
From fd06fc3affcda0d7af1721c26915b8d87e0b2614 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <fd06fc3affcda0d7af1721c26915b8d87e0b2614@dist-git>
|
|
||||||
From: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Date: Tue, 7 Feb 2023 15:06:32 +0100
|
|
||||||
Subject: [PATCH] qemu_namespace: Deal with nested mounts when umount()-ing
|
|
||||||
/dev
|
|
||||||
|
|
||||||
In one of recent commits (v9.0.0-rc1~106) I've made our QEMU
|
|
||||||
namespace code umount the original /dev. One of the reasons was
|
|
||||||
enhanced security, because previously we just mounted a tmpfs
|
|
||||||
over the original /dev. Thus a malicious QEMU could just
|
|
||||||
umount("/dev") and it would get to the original /dev with all
|
|
||||||
nodes.
|
|
||||||
|
|
||||||
Now, on some systems this introduced a regression:
|
|
||||||
|
|
||||||
failed to umount devfs on /dev: Device or resource busy
|
|
||||||
|
|
||||||
But how this could be? We've moved all file systems mounted under
|
|
||||||
/dev to a temporary location. Or have we? As it turns out, not
|
|
||||||
quite. If there are two file systems mounted on the same target,
|
|
||||||
e.g. like this:
|
|
||||||
|
|
||||||
mount -t tmpfs tmpfs /dev/shm/ && mount -t tmpfs tmpfs /dev/shm/
|
|
||||||
|
|
||||||
then only the top most (i.e. the last one) is moved. See
|
|
||||||
qemuDomainUnshareNamespace() for more info.
|
|
||||||
|
|
||||||
Now, we could enhance our code to deal with these "doubled" mount
|
|
||||||
points. Or, since it is the top most file system that is
|
|
||||||
accessible anyways (and this one is preserved), we can
|
|
||||||
umount("/dev") in a recursive fashion.
|
|
||||||
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2167302
|
|
||||||
Fixes: 379c0ce4bfed8733dfbde557c359eecc5474ce38
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Reviewed-by: Jim Fehlig <jfehlig@suse.com>
|
|
||||||
(cherry picked from commit 5155ab4b2a704285505dfea6ffee8b980fdaa29e)
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/qemu/qemu_namespace.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_namespace.c b/src/qemu/qemu_namespace.c
|
|
||||||
index 5769a4dfe0..5fc043bd62 100644
|
|
||||||
--- a/src/qemu/qemu_namespace.c
|
|
||||||
+++ b/src/qemu/qemu_namespace.c
|
|
||||||
@@ -777,7 +777,7 @@ qemuDomainUnshareNamespace(virQEMUDriverConfig *cfg,
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(__linux__)
|
|
||||||
- if (umount("/dev") < 0) {
|
|
||||||
+ if (umount2("/dev", MNT_DETACH) < 0) {
|
|
||||||
virReportSystemError(errno, "%s", _("failed to umount devfs on /dev"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
|||||||
From 99f69000a1ecacc2f064043993ece8ddba366976 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <99f69000a1ecacc2f064043993ece8ddba366976@dist-git>
|
|
||||||
From: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Date: Tue, 7 Feb 2023 10:34:40 +0100
|
|
||||||
Subject: [PATCH] qemu_process: Produce better debug message wrt domain
|
|
||||||
namespaces
|
|
||||||
|
|
||||||
When going through debug log of a domain startup process, one can
|
|
||||||
meet the following line:
|
|
||||||
|
|
||||||
debug : qemuProcessLaunch:7668 : Building mount namespace
|
|
||||||
|
|
||||||
But this is in fact wrong. Firstly, domain namespaces are just
|
|
||||||
enabled in domain's privateData. Secondly, the debug message says
|
|
||||||
nothing about actual state of namespace - whether it was enabled
|
|
||||||
or not.
|
|
||||||
|
|
||||||
Therefore, move the debug printing into
|
|
||||||
qemuProcessEnableDomainNamespaces() and tweak it so that the
|
|
||||||
actual value is reflected.
|
|
||||||
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Reviewed-by: Jim Fehlig <jfehlig@suse.com>
|
|
||||||
(cherry picked from commit 697c16e39ae9a9e18ce7cad0729bf2293b12a307)
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2167302
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/qemu/qemu_process.c | 8 ++++++--
|
|
||||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
|
|
||||||
index 1217fb1856..32083de563 100644
|
|
||||||
--- a/src/qemu/qemu_process.c
|
|
||||||
+++ b/src/qemu/qemu_process.c
|
|
||||||
@@ -7377,11 +7377,17 @@ qemuProcessEnableDomainNamespaces(virQEMUDriver *driver,
|
|
||||||
virDomainObj *vm)
|
|
||||||
{
|
|
||||||
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
|
|
||||||
+ const char *state = "disabled";
|
|
||||||
|
|
||||||
if (virBitmapIsBitSet(cfg->namespaces, QEMU_DOMAIN_NS_MOUNT) &&
|
|
||||||
qemuDomainEnableNamespace(vm, QEMU_DOMAIN_NS_MOUNT) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
+ if (qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
|
|
||||||
+ state = "enabled";
|
|
||||||
+
|
|
||||||
+ VIR_DEBUG("Mount namespace for domain name=%s is %s",
|
|
||||||
+ vm->def->name, state);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -7705,8 +7711,6 @@ qemuProcessLaunch(virConnectPtr conn,
|
|
||||||
|
|
||||||
qemuDomainLogContextMarkPosition(logCtxt);
|
|
||||||
|
|
||||||
- VIR_DEBUG("Building mount namespace");
|
|
||||||
-
|
|
||||||
if (qemuProcessEnableDomainNamespaces(driver, vm) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,141 +0,0 @@
|
|||||||
From 7289999ecc435bcc65881c64b49efba9746a9571 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <7289999ecc435bcc65881c64b49efba9746a9571@dist-git>
|
|
||||||
From: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
Date: Tue, 21 Feb 2023 16:52:28 +0100
|
|
||||||
Subject: [PATCH] qemu_snapshot: refactor qemuSnapshotDeleteExternalPrepare
|
|
||||||
|
|
||||||
When user creates external snapshot with making only memory snapshot
|
|
||||||
without any disks deleting that snapshot failed without reporting any
|
|
||||||
meaningful error.
|
|
||||||
|
|
||||||
The issue is that the qemuSnapshotDeleteExternalPrepare function
|
|
||||||
returns NULL because the returned list is empty. This will not change
|
|
||||||
so to make it clear if the function fails or not return int instead and
|
|
||||||
have another parameter where we can pass the list.
|
|
||||||
|
|
||||||
With the fixed memory snapshot deletion it will now correctly delete
|
|
||||||
memory only snapshot as well.
|
|
||||||
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2170826
|
|
||||||
|
|
||||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
(cherry picked from commit e3957c22462bc52c37c94ca4d6fe3d26f8202119)
|
|
||||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
---
|
|
||||||
src/qemu/qemu_snapshot.c | 28 +++++++++++++++-------------
|
|
||||||
1 file changed, 15 insertions(+), 13 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c
|
|
||||||
index 5cdcbc6290..cfa531edef 100644
|
|
||||||
--- a/src/qemu/qemu_snapshot.c
|
|
||||||
+++ b/src/qemu/qemu_snapshot.c
|
|
||||||
@@ -2301,9 +2301,10 @@ qemuSnapshotFindParentSnapForDisk(virDomainMomentObj *snap,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
-static GSList*
|
|
||||||
+static int
|
|
||||||
qemuSnapshotDeleteExternalPrepare(virDomainObj *vm,
|
|
||||||
- virDomainMomentObj *snap)
|
|
||||||
+ virDomainMomentObj *snap,
|
|
||||||
+ GSList **externalData)
|
|
||||||
{
|
|
||||||
ssize_t i;
|
|
||||||
virDomainSnapshotDef *snapdef = virDomainSnapshotObjGetDef(snap);
|
|
||||||
@@ -2320,7 +2321,7 @@ qemuSnapshotDeleteExternalPrepare(virDomainObj *vm,
|
|
||||||
virReportError(VIR_ERR_OPERATION_INVALID,
|
|
||||||
_("snapshot disk '%s' was target of not completed snapshot delete"),
|
|
||||||
snapDisk->name);
|
|
||||||
- return NULL;
|
|
||||||
+ return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
data = g_new0(qemuSnapshotDeleteExternalData, 1);
|
|
||||||
@@ -2328,18 +2329,18 @@ qemuSnapshotDeleteExternalPrepare(virDomainObj *vm,
|
|
||||||
|
|
||||||
data->domDisk = qemuDomainDiskByName(vm->def, snapDisk->name);
|
|
||||||
if (!data->domDisk)
|
|
||||||
- return NULL;
|
|
||||||
+ return -1;
|
|
||||||
|
|
||||||
data->diskSrc = virStorageSourceChainLookupBySource(data->domDisk->src,
|
|
||||||
data->snapDisk->src,
|
|
||||||
&data->prevDiskSrc);
|
|
||||||
if (!data->diskSrc)
|
|
||||||
- return NULL;
|
|
||||||
+ return -1;
|
|
||||||
|
|
||||||
if (!virStorageSourceIsSameLocation(data->diskSrc, data->snapDisk->src)) {
|
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
|
||||||
_("VM disk source and snapshot disk source are not the same"));
|
|
||||||
- return NULL;
|
|
||||||
+ return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
data->parentDomDisk = virDomainDiskByTarget(snapdef->parent.dom,
|
|
||||||
@@ -2348,7 +2349,7 @@ qemuSnapshotDeleteExternalPrepare(virDomainObj *vm,
|
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED,
|
|
||||||
_("failed to find disk '%s' in snapshot VM XML"),
|
|
||||||
snapDisk->name);
|
|
||||||
- return NULL;
|
|
||||||
+ return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virDomainObjIsActive(vm)) {
|
|
||||||
@@ -2356,13 +2357,13 @@ qemuSnapshotDeleteExternalPrepare(virDomainObj *vm,
|
|
||||||
if (!virStorageSourceIsBacking(data->parentDiskSrc)) {
|
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
|
||||||
_("failed to find parent disk source in backing chain"));
|
|
||||||
- return NULL;
|
|
||||||
+ return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!virStorageSourceIsSameLocation(data->parentDiskSrc, data->parentDomDisk->src)) {
|
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
|
||||||
_("snapshot VM disk source and parent disk source are not the same"));
|
|
||||||
- return NULL;
|
|
||||||
+ return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -2371,15 +2372,16 @@ qemuSnapshotDeleteExternalPrepare(virDomainObj *vm,
|
|
||||||
if (data->parentSnap && !virDomainSnapshotIsExternal(data->parentSnap)) {
|
|
||||||
virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
|
|
||||||
_("deleting external snapshot that has internal snapshot as parent not supported"));
|
|
||||||
- return NULL;
|
|
||||||
+ return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = g_slist_prepend(ret, g_steal_pointer(&data));
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = g_slist_reverse(ret);
|
|
||||||
+ *externalData = g_steal_pointer(&ret);
|
|
||||||
|
|
||||||
- return g_steal_pointer(&ret);
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -3159,7 +3161,7 @@ qemuSnapshotDelete(virDomainObj *vm,
|
|
||||||
g_autoslist(qemuSnapshotDeleteExternalData) tmpData = NULL;
|
|
||||||
|
|
||||||
/* this also serves as validation whether the snapshot can be deleted */
|
|
||||||
- if (!(tmpData = qemuSnapshotDeleteExternalPrepare(vm, snap)))
|
|
||||||
+ if (qemuSnapshotDeleteExternalPrepare(vm, snap, &tmpData) < 0)
|
|
||||||
goto endjob;
|
|
||||||
|
|
||||||
if (!virDomainObjIsActive(vm)) {
|
|
||||||
@@ -3174,7 +3176,7 @@ qemuSnapshotDelete(virDomainObj *vm,
|
|
||||||
|
|
||||||
/* Call the prepare again as some data require that the VM is
|
|
||||||
* running to get everything we need. */
|
|
||||||
- if (!(externalData = qemuSnapshotDeleteExternalPrepare(vm, snap)))
|
|
||||||
+ if (qemuSnapshotDeleteExternalPrepare(vm, snap, &externalData) < 0)
|
|
||||||
goto endjob;
|
|
||||||
} else {
|
|
||||||
qemuDomainJobPrivate *jobPriv = vm->job->privateData;
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,73 +0,0 @@
|
|||||||
From 3ef43d47b0a5a49b0896b1725476b4b6ec0629b0 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <3ef43d47b0a5a49b0896b1725476b4b6ec0629b0@dist-git>
|
|
||||||
From: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
Date: Tue, 21 Feb 2023 16:10:56 +0100
|
|
||||||
Subject: [PATCH] qemu_snapshot: remove memory snapshot when deleting external
|
|
||||||
snapshot
|
|
||||||
|
|
||||||
When deleting external snapshot we should remove the memory snapshot
|
|
||||||
file as well.
|
|
||||||
|
|
||||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
(cherry picked from commit 356e227208ec66fff178b91ed4b1197c7e6cf974)
|
|
||||||
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2170826
|
|
||||||
|
|
||||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
---
|
|
||||||
src/qemu/qemu_snapshot.c | 14 ++++++++++++--
|
|
||||||
1 file changed, 12 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c
|
|
||||||
index b8416808b3..5cdcbc6290 100644
|
|
||||||
--- a/src/qemu/qemu_snapshot.c
|
|
||||||
+++ b/src/qemu/qemu_snapshot.c
|
|
||||||
@@ -2684,9 +2684,11 @@ qemuSnapshotSetInvalid(virDomainObj *vm,
|
|
||||||
|
|
||||||
static int
|
|
||||||
qemuSnapshotDiscardExternal(virDomainObj *vm,
|
|
||||||
+ virDomainMomentObj *snap,
|
|
||||||
GSList *externalData)
|
|
||||||
{
|
|
||||||
GSList *cur = NULL;
|
|
||||||
+ virDomainSnapshotDef *snapdef = virDomainSnapshotObjGetDef(snap);
|
|
||||||
|
|
||||||
for (cur = externalData; cur; cur = g_slist_next(cur)) {
|
|
||||||
qemuSnapshotDeleteExternalData *data = cur->data;
|
|
||||||
@@ -2756,6 +2758,14 @@ qemuSnapshotDiscardExternal(virDomainObj *vm,
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (snapdef->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL &&
|
|
||||||
+ snapdef->memorysnapshotfile) {
|
|
||||||
+ if (unlink(snapdef->memorysnapshotfile) < 0) {
|
|
||||||
+ VIR_WARN("failed to remove memory snapshot '%s'",
|
|
||||||
+ snapdef->memorysnapshotfile);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
error:
|
|
||||||
@@ -2886,7 +2896,7 @@ qemuSnapshotDiscardImpl(virQEMUDriver *driver,
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virDomainSnapshotIsExternal(snap)) {
|
|
||||||
- if (qemuSnapshotDiscardExternal(vm, externalData) < 0)
|
|
||||||
+ if (qemuSnapshotDiscardExternal(vm, snap, externalData) < 0)
|
|
||||||
return -1;
|
|
||||||
} else {
|
|
||||||
if (qemuDomainSnapshotForEachQcow2(driver, def, snap, "-d", true) < 0)
|
|
||||||
@@ -2894,7 +2904,7 @@ qemuSnapshotDiscardImpl(virQEMUDriver *driver,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (virDomainSnapshotIsExternal(snap)) {
|
|
||||||
- if (qemuSnapshotDiscardExternal(vm, externalData) < 0)
|
|
||||||
+ if (qemuSnapshotDiscardExternal(vm, snap, externalData) < 0)
|
|
||||||
return -1;
|
|
||||||
} else {
|
|
||||||
/* Similarly as internal snapshot creation we would use a regular job
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
|||||||
From 64dbfdfe3ed2fc8f252ce138f6213b529edb2407 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <64dbfdfe3ed2fc8f252ce138f6213b529edb2407@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Wed, 15 Feb 2023 10:48:31 +0100
|
|
||||||
Subject: [PATCH] rpc: Don't warn about "max_client_requests" in
|
|
||||||
single-threaded daemons
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The warning about max_client_requests is hit inside virtlogd every time
|
|
||||||
a VM starts which spams the logs.
|
|
||||||
|
|
||||||
Emit the warning only when the client request limit is not 1 and add a
|
|
||||||
warning into the daemon config to not configure it too low instead.
|
|
||||||
|
|
||||||
Fixes: 031878c2364
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2145188
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
|
||||||
(cherry picked from commit b3f8e072fe08a6beaf3ec3d27e02efee4358b2ca)
|
|
||||||
---
|
|
||||||
src/remote/libvirtd.conf.in | 1 +
|
|
||||||
src/rpc/virnetserverclient.c | 3 ++-
|
|
||||||
2 files changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/remote/libvirtd.conf.in b/src/remote/libvirtd.conf.in
|
|
||||||
index 80a98b1529..32a680317a 100644
|
|
||||||
--- a/src/remote/libvirtd.conf.in
|
|
||||||
+++ b/src/remote/libvirtd.conf.in
|
|
||||||
@@ -374,6 +374,7 @@
|
|
||||||
# connection. To avoid one client monopolizing the server
|
|
||||||
# this should be a small fraction of the global max_workers
|
|
||||||
# parameter.
|
|
||||||
+# Setting this too low may cause keepalive timeouts.
|
|
||||||
#max_client_requests = 5
|
|
||||||
|
|
||||||
# Same processing controls, but this time for the admin interface.
|
|
||||||
diff --git a/src/rpc/virnetserverclient.c b/src/rpc/virnetserverclient.c
|
|
||||||
index b5c764b1b0..bdb3552c5d 100644
|
|
||||||
--- a/src/rpc/virnetserverclient.c
|
|
||||||
+++ b/src/rpc/virnetserverclient.c
|
|
||||||
@@ -1261,7 +1261,8 @@ static virNetMessage *virNetServerClientDispatchRead(virNetServerClient *client)
|
|
||||||
client->rx->bufferLength = VIR_NET_MESSAGE_LEN_MAX;
|
|
||||||
client->rx->buffer = g_new0(char, client->rx->bufferLength);
|
|
||||||
client->nrequests++;
|
|
||||||
- } else if (!client->nrequests_warning) {
|
|
||||||
+ } else if (!client->nrequests_warning &&
|
|
||||||
+ client->nrequests_max > 1) {
|
|
||||||
client->nrequests_warning = true;
|
|
||||||
VIR_WARN("Client hit max requests limit %zd. This may result "
|
|
||||||
"in keep-alive timeouts. Consider tuning the "
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
|||||||
From f26e30ecb3d0e25d5cf648755e2b4e1db0476b52 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <f26e30ecb3d0e25d5cf648755e2b4e1db0476b52@dist-git>
|
|
||||||
From: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
Date: Tue, 24 Jan 2023 13:45:09 +0100
|
|
||||||
Subject: [PATCH] rpc: Fix error message in virNetServerSetClientLimits
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Commit f007940cb25a tried to change the error message so that it is unified
|
|
||||||
later in 35afa1d2d6c1, but various rewrites missed this particular error message
|
|
||||||
which does not make sense. Fix it so that it is the same as the other two
|
|
||||||
messages checking the same thing in this file.
|
|
||||||
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2033879
|
|
||||||
|
|
||||||
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
(cherry picked from commit 1e2605c934b80c3e9c30e929834d38fee86f184e)
|
|
||||||
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
---
|
|
||||||
src/rpc/virnetserver.c | 5 ++---
|
|
||||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c
|
|
||||||
index bf0fda04ee..e97dfe8136 100644
|
|
||||||
--- a/src/rpc/virnetserver.c
|
|
||||||
+++ b/src/rpc/virnetserver.c
|
|
||||||
@@ -1127,9 +1127,8 @@ virNetServerSetClientLimits(virNetServer *srv,
|
|
||||||
|
|
||||||
if (max < max_unauth) {
|
|
||||||
virReportError(VIR_ERR_INVALID_ARG, "%s",
|
|
||||||
- _("The overall maximum number of clients waiting "
|
|
||||||
- "for authentication must not be less than the overall "
|
|
||||||
- "maximum number of clients"));
|
|
||||||
+ _("The overall maximum number of clients must not be less "
|
|
||||||
+ "than the number of clients waiting for authentication"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
|||||||
From c07df2b480134357e6ecb53f61eb1d8295b2b406 Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <c07df2b480134357e6ecb53f61eb1d8295b2b406@dist-git>
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Wed, 15 Feb 2023 10:43:53 +0100
|
|
||||||
Subject: [PATCH] rpc: client: Don't check return value of virNetMessageNew
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
virNetServerClientDispatchRead checked the return value but it's not
|
|
||||||
necessary any more as it can't return NULL nowadays.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
|
||||||
(cherry picked from commit 761cb8a0876d32445951791030c77afa147c0de1)
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=2145188
|
|
||||||
---
|
|
||||||
src/rpc/virnetserverclient.c | 11 ++++-------
|
|
||||||
1 file changed, 4 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/rpc/virnetserverclient.c b/src/rpc/virnetserverclient.c
|
|
||||||
index c9a4eb521e..b5c764b1b0 100644
|
|
||||||
--- a/src/rpc/virnetserverclient.c
|
|
||||||
+++ b/src/rpc/virnetserverclient.c
|
|
||||||
@@ -1257,13 +1257,10 @@ static virNetMessage *virNetServerClientDispatchRead(virNetServerClient *client)
|
|
||||||
|
|
||||||
/* Possibly need to create another receive buffer */
|
|
||||||
if (client->nrequests < client->nrequests_max) {
|
|
||||||
- if (!(client->rx = virNetMessageNew(true))) {
|
|
||||||
- client->wantClose = true;
|
|
||||||
- } else {
|
|
||||||
- client->rx->bufferLength = VIR_NET_MESSAGE_LEN_MAX;
|
|
||||||
- client->rx->buffer = g_new0(char, client->rx->bufferLength);
|
|
||||||
- client->nrequests++;
|
|
||||||
- }
|
|
||||||
+ client->rx = virNetMessageNew(true);
|
|
||||||
+ client->rx->bufferLength = VIR_NET_MESSAGE_LEN_MAX;
|
|
||||||
+ client->rx->buffer = g_new0(char, client->rx->bufferLength);
|
|
||||||
+ client->nrequests++;
|
|
||||||
} else if (!client->nrequests_warning) {
|
|
||||||
client->nrequests_warning = true;
|
|
||||||
VIR_WARN("Client hit max requests limit %zd. This may result "
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
|||||||
From a967747fcdf7d78425d218625ddb42606451c2ab Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <a967747fcdf7d78425d218625ddb42606451c2ab@dist-git>
|
|
||||||
From: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Date: Wed, 18 Jan 2023 09:03:29 +0100
|
|
||||||
Subject: [PATCH] src: Don't use virReportSystemError() on
|
|
||||||
virProcessGetStatInfo() failure
|
|
||||||
|
|
||||||
Firstly, the virProcessGetStatInfo() does not fail really. But
|
|
||||||
even if it did, it sets correct errno only sometimes (and even
|
|
||||||
that is done in a helper it's calling - virProcessGetStat() and
|
|
||||||
even there it's the case only in very few error paths).
|
|
||||||
|
|
||||||
Therefore, using virReportSystemError() to report errors is very
|
|
||||||
misleading. Use plain virReportError() instead. Luckily, there
|
|
||||||
are only two places where the former was used:
|
|
||||||
chDomainHelperGetVcpus() and qemuDomainHelperGetVcpus() (not a
|
|
||||||
big surprise since CH driver is heavily inspired by QEMU driver).
|
|
||||||
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit 818c9717c53446ca7abbaa7b3fd7925e1c5ab663)
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2148266
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/ch/ch_driver.c | 4 ++--
|
|
||||||
src/qemu/qemu_driver.c | 4 ++--
|
|
||||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c
|
|
||||||
index db2a66d131..12fbe31c24 100644
|
|
||||||
--- a/src/ch/ch_driver.c
|
|
||||||
+++ b/src/ch/ch_driver.c
|
|
||||||
@@ -1079,8 +1079,8 @@ chDomainHelperGetVcpus(virDomainObj *vm,
|
|
||||||
NULL, NULL,
|
|
||||||
&vcpuinfo->cpu, NULL,
|
|
||||||
vm->pid, vcpupid) < 0) {
|
|
||||||
- virReportSystemError(errno, "%s",
|
|
||||||
- _("cannot get vCPU placement & pCPU time"));
|
|
||||||
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
|
||||||
+ _("cannot get vCPU placement & pCPU time"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
|
|
||||||
index d6879175fe..c576c601ad 100644
|
|
||||||
--- a/src/qemu/qemu_driver.c
|
|
||||||
+++ b/src/qemu/qemu_driver.c
|
|
||||||
@@ -1355,8 +1355,8 @@ qemuDomainHelperGetVcpus(virDomainObj *vm,
|
|
||||||
NULL, NULL,
|
|
||||||
&vcpuinfo->cpu, NULL,
|
|
||||||
vm->pid, vcpupid) < 0) {
|
|
||||||
- virReportSystemError(errno, "%s",
|
|
||||||
- _("cannot get vCPU placement & pCPU time"));
|
|
||||||
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
|
||||||
+ _("cannot get vCPU placement & pCPU time"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
|||||||
|
From 0a213a6808d5d076e7c9658960a13c27642a68a8 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <0a213a6808d5d076e7c9658960a13c27642a68a8.1690808082.git.jdenemar@redhat.com>
|
||||||
|
From: Peter Krempa <pkrempa@redhat.com>
|
||||||
|
Date: Thu, 13 Jul 2023 16:16:37 +0200
|
||||||
|
Subject: [PATCH] storage: Fix returning of locked objects from
|
||||||
|
'virStoragePoolObjListSearch'
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
CVE-2023-3750
|
||||||
|
|
||||||
|
'virStoragePoolObjListSearch' explicitly documents that it's returning
|
||||||
|
a pointer to a locked and ref'd pool that maches the lookup function.
|
||||||
|
|
||||||
|
This was not the case as in commit 0c4b391e2a9 (released in
|
||||||
|
libvirt-8.3.0) the code was accidentally converted to use 'VIR_LOCK_GUARD'
|
||||||
|
which auto-unlocked it when leaving the scope, even when the code was
|
||||||
|
originally "leaking" the lock.
|
||||||
|
|
||||||
|
Revert the corresponding conversion and add a comment that this function
|
||||||
|
is intentionally leaking a locked object.
|
||||||
|
|
||||||
|
Fixes: 0c4b391e2a9
|
||||||
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2221851
|
||||||
|
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
||||||
|
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
||||||
|
(cherry picked from commit 9a47442366fcf8a7b6d7422016d7bbb6764a1098)
|
||||||
|
---
|
||||||
|
src/conf/virstorageobj.c | 7 ++++++-
|
||||||
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c
|
||||||
|
index 7010e97d61..59fa5da372 100644
|
||||||
|
--- a/src/conf/virstorageobj.c
|
||||||
|
+++ b/src/conf/virstorageobj.c
|
||||||
|
@@ -454,11 +454,16 @@ virStoragePoolObjListSearchCb(const void *payload,
|
||||||
|
virStoragePoolObj *obj = (virStoragePoolObj *) payload;
|
||||||
|
struct _virStoragePoolObjListSearchData *data =
|
||||||
|
(struct _virStoragePoolObjListSearchData *)opaque;
|
||||||
|
- VIR_LOCK_GUARD lock = virObjectLockGuard(obj);
|
||||||
|
|
||||||
|
+ virObjectLock(obj);
|
||||||
|
+
|
||||||
|
+ /* If we find the matching pool object we must return while the object is
|
||||||
|
+ * locked as the caller wants to return a locked object. */
|
||||||
|
if (data->searcher(obj, data->opaque))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
+ virObjectUnlock(obj);
|
||||||
|
+
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.41.0
|
1805
SOURCES/libvirt-tests-Add-more-tests-for-firmware-selection.patch
Normal file
1805
SOURCES/libvirt-tests-Add-more-tests-for-firmware-selection.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,94 @@
|
|||||||
|
From b0d6ee0778c6c2f49c88de9025f6a398b2d07c0f Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <b0d6ee0778c6c2f49c88de9025f6a398b2d07c0f.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Tue, 16 May 2023 16:50:37 +0200
|
||||||
|
Subject: [PATCH] tests: Add some more DO_TEST*ABI_UPDATE* macros
|
||||||
|
|
||||||
|
These are going to be useful later.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 87d91e9e242520048579009ce2ddf8b238ec2733)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
tests/qemuxml2argvtest.c | 19 +++++++++++++++++++
|
||||||
|
tests/qemuxml2xmltest.c | 3 +++
|
||||||
|
2 files changed, 22 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
|
||||||
|
index 84e0963ec8..a8711ff833 100644
|
||||||
|
--- a/tests/qemuxml2argvtest.c
|
||||||
|
+++ b/tests/qemuxml2argvtest.c
|
||||||
|
@@ -836,6 +836,9 @@ mymain(void)
|
||||||
|
# define DO_TEST_CAPS_LATEST(name) \
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST(name, "x86_64")
|
||||||
|
|
||||||
|
+# define DO_TEST_CAPS_LATEST_ABI_UPDATE(name) \
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE(name, "x86_64")
|
||||||
|
+
|
||||||
|
# define DO_TEST_CAPS_VER(name, ver) \
|
||||||
|
DO_TEST_CAPS_ARCH_VER(name, "x86_64", ver)
|
||||||
|
|
||||||
|
@@ -855,6 +858,11 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST_FULL(name, arch, \
|
||||||
|
ARG_FLAGS, FLAG_EXPECT_FAILURE)
|
||||||
|
|
||||||
|
+# define DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE_FAILURE(name, arch) \
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST_FULL(name, arch, \
|
||||||
|
+ ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE, \
|
||||||
|
+ ARG_FLAGS, FLAG_EXPECT_FAILURE)
|
||||||
|
+
|
||||||
|
# define DO_TEST_CAPS_ARCH_VER_FAILURE(name, arch, ver) \
|
||||||
|
DO_TEST_CAPS_ARCH_VER_FULL(name, arch, ver, \
|
||||||
|
ARG_FLAGS, FLAG_EXPECT_FAILURE)
|
||||||
|
@@ -862,6 +870,9 @@ mymain(void)
|
||||||
|
# define DO_TEST_CAPS_LATEST_FAILURE(name) \
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST_FAILURE(name, "x86_64")
|
||||||
|
|
||||||
|
+# define DO_TEST_CAPS_LATEST_ABI_UPDATE_FAILURE(name) \
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE_FAILURE(name, "x86_64")
|
||||||
|
+
|
||||||
|
# define DO_TEST_CAPS_VER_FAILURE(name, ver) \
|
||||||
|
DO_TEST_CAPS_ARCH_VER_FAILURE(name, "x86_64", ver)
|
||||||
|
|
||||||
|
@@ -869,6 +880,11 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST_FULL(name, arch, \
|
||||||
|
ARG_FLAGS, FLAG_EXPECT_PARSE_ERROR)
|
||||||
|
|
||||||
|
+# define DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE_PARSE_ERROR(name, arch) \
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST_FULL(name, arch, \
|
||||||
|
+ ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE, \
|
||||||
|
+ ARG_FLAGS, FLAG_EXPECT_PARSE_ERROR)
|
||||||
|
+
|
||||||
|
# define DO_TEST_CAPS_ARCH_VER_PARSE_ERROR(name, arch, ver) \
|
||||||
|
DO_TEST_CAPS_ARCH_VER_FULL(name, arch, ver, \
|
||||||
|
ARG_FLAGS, FLAG_EXPECT_PARSE_ERROR)
|
||||||
|
@@ -876,6 +892,9 @@ mymain(void)
|
||||||
|
# define DO_TEST_CAPS_LATEST_PARSE_ERROR(name) \
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST_PARSE_ERROR(name, "x86_64")
|
||||||
|
|
||||||
|
+# define DO_TEST_CAPS_LATEST_ABI_UPDATE_PARSE_ERROR(name) \
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE_PARSE_ERROR(name, "x86_64")
|
||||||
|
+
|
||||||
|
# define DO_TEST_CAPS_VER_PARSE_ERROR(name, ver) \
|
||||||
|
DO_TEST_CAPS_ARCH_VER_PARSE_ERROR(name, "x86_64", ver)
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
|
||||||
|
index 6f7f6690bd..5356872ba8 100644
|
||||||
|
--- a/tests/qemuxml2xmltest.c
|
||||||
|
+++ b/tests/qemuxml2xmltest.c
|
||||||
|
@@ -184,6 +184,9 @@ mymain(void)
|
||||||
|
#define DO_TEST_CAPS_LATEST(name) \
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST(name, "x86_64")
|
||||||
|
|
||||||
|
+#define DO_TEST_CAPS_LATEST_ABI_UPDATE(name) \
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE(name, "x86_64")
|
||||||
|
+
|
||||||
|
#define DO_TEST_CAPS_VER(name, ver) \
|
||||||
|
DO_TEST_CAPS_ARCH_VER(name, "x86_64", ver)
|
||||||
|
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -0,0 +1,104 @@
|
|||||||
|
From 7523f6531ec5cd7e7d77f86b2756ca84d5f87357 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <7523f6531ec5cd7e7d77f86b2756ca84d5f87357.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Mon, 15 May 2023 19:04:12 +0200
|
||||||
|
Subject: [PATCH] tests: Consistently use /path/to/guest_VARS.fd
|
||||||
|
|
||||||
|
That's what we already use in almost all cases.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 17735262243293cc68354a06d1042726b2b7293d)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
.../qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args | 2 +-
|
||||||
|
tests/qemuxml2argvdata/aarch64-virt-graphics.xml | 2 +-
|
||||||
|
.../qemuxml2argvdata/aarch64-virt-headless.aarch64-latest.args | 2 +-
|
||||||
|
tests/qemuxml2argvdata/aarch64-virt-headless.xml | 2 +-
|
||||||
|
.../qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml | 2 +-
|
||||||
|
.../qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml | 2 +-
|
||||||
|
6 files changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args b/tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args
|
||||||
|
index 1b7b0a70ff..eaa558747f 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args
|
||||||
|
+++ b/tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args
|
||||||
|
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
|
||||||
|
-blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/path/to/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
-machine virt-4.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \
|
||||||
|
-accel tcg \
|
||||||
|
diff --git a/tests/qemuxml2argvdata/aarch64-virt-graphics.xml b/tests/qemuxml2argvdata/aarch64-virt-graphics.xml
|
||||||
|
index 2b1704ad7b..3c7da08381 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/aarch64-virt-graphics.xml
|
||||||
|
+++ b/tests/qemuxml2argvdata/aarch64-virt-graphics.xml
|
||||||
|
@@ -12,7 +12,7 @@
|
||||||
|
<os>
|
||||||
|
<type arch='aarch64' machine='virt-4.0'>hvm</type>
|
||||||
|
<loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
|
||||||
|
- <nvram>/some/user/nvram/path/guest_VARS.fd</nvram>
|
||||||
|
+ <nvram>/path/to/guest_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
diff --git a/tests/qemuxml2argvdata/aarch64-virt-headless.aarch64-latest.args b/tests/qemuxml2argvdata/aarch64-virt-headless.aarch64-latest.args
|
||||||
|
index 23b514da9a..9d13abb531 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/aarch64-virt-headless.aarch64-latest.args
|
||||||
|
+++ b/tests/qemuxml2argvdata/aarch64-virt-headless.aarch64-latest.args
|
||||||
|
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
|
||||||
|
-blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/path/to/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
-machine virt-4.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \
|
||||||
|
-accel tcg \
|
||||||
|
diff --git a/tests/qemuxml2argvdata/aarch64-virt-headless.xml b/tests/qemuxml2argvdata/aarch64-virt-headless.xml
|
||||||
|
index 1d1fc071d7..4cb309037b 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/aarch64-virt-headless.xml
|
||||||
|
+++ b/tests/qemuxml2argvdata/aarch64-virt-headless.xml
|
||||||
|
@@ -12,7 +12,7 @@
|
||||||
|
<os>
|
||||||
|
<type arch='aarch64' machine='virt-4.0'>hvm</type>
|
||||||
|
<loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
|
||||||
|
- <nvram>/some/user/nvram/path/guest_VARS.fd</nvram>
|
||||||
|
+ <nvram>/path/to/guest_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml b/tests/qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml
|
||||||
|
index f0a4003655..1150aceb02 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml
|
||||||
|
@@ -16,7 +16,7 @@
|
||||||
|
<feature enabled='no' name='secure-boot'/>
|
||||||
|
</firmware>
|
||||||
|
<loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
|
||||||
|
- <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/some/user/nvram/path/guest_VARS.fd</nvram>
|
||||||
|
+ <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/path/to/guest_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml b/tests/qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml
|
||||||
|
index ab4126318a..68df856a28 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml
|
||||||
|
@@ -16,7 +16,7 @@
|
||||||
|
<feature enabled='no' name='secure-boot'/>
|
||||||
|
</firmware>
|
||||||
|
<loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
|
||||||
|
- <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/some/user/nvram/path/guest_VARS.fd</nvram>
|
||||||
|
+ <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/path/to/guest_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -0,0 +1,34 @@
|
|||||||
|
From eda27de700194d435b2ca03d4578f34b5388ecc2 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <eda27de700194d435b2ca03d4578f34b5388ecc2.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Mon, 31 Jul 2023 17:05:58 +0200
|
||||||
|
Subject: [PATCH] tests: Drop tags from BIOS firmware descriptor
|
||||||
|
|
||||||
|
They aren't used for anything.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit da6b98394bcce6c128edafb3eefe9570d8b96e84)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
tests/qemufirmwaredata/usr/share/qemu/firmware/91-bios.json | 3 ---
|
||||||
|
1 file changed, 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tests/qemufirmwaredata/usr/share/qemu/firmware/91-bios.json b/tests/qemufirmwaredata/usr/share/qemu/firmware/91-bios.json
|
||||||
|
index 137ff70779..378e6d93a5 100644
|
||||||
|
--- a/tests/qemufirmwaredata/usr/share/qemu/firmware/91-bios.json
|
||||||
|
+++ b/tests/qemufirmwaredata/usr/share/qemu/firmware/91-bios.json
|
||||||
|
@@ -28,8 +28,5 @@
|
||||||
|
"acpi-s4"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
- "CONFIG_BOOTSPLASH=n",
|
||||||
|
- "CONFIG_ROM_SIZE=256",
|
||||||
|
- "CONFIG_USE_SMM=n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.42.0
|
36
SOURCES/libvirt-tests-Include-microvm-in-firmwaretest.patch
Normal file
36
SOURCES/libvirt-tests-Include-microvm-in-firmwaretest.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
From a6233b1853d1090e7387ab6dea3cb4e46f1bbe0f Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <a6233b1853d1090e7387ab6dea3cb4e46f1bbe0f.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Thu, 18 May 2023 14:57:07 +0200
|
||||||
|
Subject: [PATCH] tests: Include microvm in firmwaretest
|
||||||
|
|
||||||
|
libvirt doesn't really support the microvm machine type, but
|
||||||
|
it can parse the firmware descriptor just fine.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 1b3e9c67e3a2902b882ac2310f4876f5fa48d8f7)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
tests/qemufirmwaretest.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/tests/qemufirmwaretest.c b/tests/qemufirmwaretest.c
|
||||||
|
index 86c708c7ac..7596c746ab 100644
|
||||||
|
--- a/tests/qemufirmwaretest.c
|
||||||
|
+++ b/tests/qemufirmwaretest.c
|
||||||
|
@@ -295,6 +295,9 @@ mymain(void)
|
||||||
|
DO_SUPPORTED_TEST("pc-q35-3.1", VIR_ARCH_I686, false,
|
||||||
|
"/usr/share/seabios/bios-256k.bin:NULL",
|
||||||
|
VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS);
|
||||||
|
+ DO_SUPPORTED_TEST("microvm", VIR_ARCH_X86_64, false,
|
||||||
|
+ "/usr/share/edk2/ovmf/MICROVM.fd:NULL",
|
||||||
|
+ VIR_DOMAIN_OS_DEF_FIRMWARE_EFI);
|
||||||
|
DO_SUPPORTED_TEST("virt-3.1", VIR_ARCH_AARCH64, false,
|
||||||
|
"/usr/share/edk2/aarch64/QEMU_EFI-silent-pflash.qcow2:/usr/share/edk2/aarch64/vars-template-pflash.qcow2:"
|
||||||
|
"/usr/share/edk2/aarch64/QEMU_EFI-silent-pflash.raw:/usr/share/edk2/aarch64/vars-template-pflash.raw:"
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -0,0 +1,70 @@
|
|||||||
|
From 7673738e37d6cb0953b3d338fa8e05a09247a389 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <7673738e37d6cb0953b3d338fa8e05a09247a389.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Thu, 3 Aug 2023 15:22:10 +0200
|
||||||
|
Subject: [PATCH] tests: Reintroduce firmware-auto-efi-format-mismatch
|
||||||
|
|
||||||
|
Since the previous version of this negative test now passes,
|
||||||
|
create a new version that still triggers the intended failure.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 7c328b6cf48b4b75c0964bc127aaafb640ea944c)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
...auto-efi-format-mismatch.x86_64-latest.err | 1 +
|
||||||
|
.../firmware-auto-efi-format-mismatch.xml | 19 +++++++++++++++++++
|
||||||
|
tests/qemuxml2argvtest.c | 1 +
|
||||||
|
3 files changed, 21 insertions(+)
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err
|
||||||
|
create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..abfdfc4357
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+XML error: Format mismatch: loader.format='qcow2' nvram.format='raw'
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..4af77c3bee
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml
|
||||||
|
@@ -0,0 +1,19 @@
|
||||||
|
+<domain type='kvm'>
|
||||||
|
+ <name>guest</name>
|
||||||
|
+ <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid>
|
||||||
|
+ <memory unit='KiB'>1048576</memory>
|
||||||
|
+ <vcpu placement='static'>1</vcpu>
|
||||||
|
+ <os firmware='efi'>
|
||||||
|
+ <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
|
||||||
|
+ <loader format='qcow2'/>
|
||||||
|
+ <nvram format='raw'/>
|
||||||
|
+ </os>
|
||||||
|
+ <features>
|
||||||
|
+ <acpi/>
|
||||||
|
+ </features>
|
||||||
|
+ <devices>
|
||||||
|
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||||
|
+ <controller type='usb' model='none'/>
|
||||||
|
+ <memballoon model='none'/>
|
||||||
|
+ </devices>
|
||||||
|
+</domain>
|
||||||
|
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
|
||||||
|
index cc3345f5b1..37ae14d61b 100644
|
||||||
|
--- a/tests/qemuxml2argvtest.c
|
||||||
|
+++ b/tests/qemuxml2argvtest.c
|
||||||
|
@@ -1118,6 +1118,7 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2-network-nbd");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST("firmware-auto-efi-format-loader-raw", "aarch64");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("firmware-auto-efi-format-loader-raw-abi-update", "aarch64");
|
||||||
|
+ DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-auto-efi-format-mismatch");
|
||||||
|
|
||||||
|
DO_TEST_NOCAPS("clock-utc");
|
||||||
|
DO_TEST_NOCAPS("clock-localtime");
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -0,0 +1,117 @@
|
|||||||
|
From b262d1dfbdbc8bb6c57bf4f6053dada37691ceab Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <b262d1dfbdbc8bb6c57bf4f6053dada37691ceab.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Thu, 3 Aug 2023 15:19:59 +0200
|
||||||
|
Subject: [PATCH] tests: Rename
|
||||||
|
firmware-auto-efi-format-loader-qcow2-nvram-path
|
||||||
|
|
||||||
|
Now that, after the recent changes, the test passes, its old
|
||||||
|
name is no longer accurate.
|
||||||
|
|
||||||
|
While at it, enable the xml2xml part for it as well.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 48e5fe7af43b291e98a6c57cb8830e0adff49d6f)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
...oader-qcow2-nvram-path.x86_64-latest.args} | 0
|
||||||
|
...to-efi-format-loader-qcow2-nvram-path.xml} | 0
|
||||||
|
tests/qemuxml2argvtest.c | 2 +-
|
||||||
|
...-loader-qcow2-nvram-path.x86_64-latest.xml | 41 +++++++++++++++++++
|
||||||
|
tests/qemuxml2xmltest.c | 1 +
|
||||||
|
5 files changed, 43 insertions(+), 1 deletion(-)
|
||||||
|
rename tests/qemuxml2argvdata/{firmware-auto-efi-format-mismatch.x86_64-latest.args => firmware-auto-efi-format-loader-qcow2-nvram-path.x86_64-latest.args} (100%)
|
||||||
|
rename tests/qemuxml2argvdata/{firmware-auto-efi-format-mismatch.xml => firmware-auto-efi-format-loader-qcow2-nvram-path.xml} (100%)
|
||||||
|
create mode 100644 tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-qcow2-nvram-path.x86_64-latest.xml
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-qcow2-nvram-path.x86_64-latest.args
|
||||||
|
similarity index 100%
|
||||||
|
rename from tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.args
|
||||||
|
rename to tests/qemuxml2argvdata/firmware-auto-efi-format-loader-qcow2-nvram-path.x86_64-latest.args
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml b/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-qcow2-nvram-path.xml
|
||||||
|
similarity index 100%
|
||||||
|
rename from tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml
|
||||||
|
rename to tests/qemuxml2argvdata/firmware-auto-efi-format-loader-qcow2-nvram-path.xml
|
||||||
|
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
|
||||||
|
index 9439a5a1e6..cc3345f5b1 100644
|
||||||
|
--- a/tests/qemuxml2argvtest.c
|
||||||
|
+++ b/tests/qemuxml2argvtest.c
|
||||||
|
@@ -1112,12 +1112,12 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-iscsi");
|
||||||
|
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-format-loader-qcow2");
|
||||||
|
+ DO_TEST_CAPS_LATEST("firmware-auto-efi-format-loader-qcow2-nvram-path");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2-path");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2-network-nbd");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST("firmware-auto-efi-format-loader-raw", "aarch64");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("firmware-auto-efi-format-loader-raw-abi-update", "aarch64");
|
||||||
|
- DO_TEST_CAPS_LATEST("firmware-auto-efi-format-mismatch");
|
||||||
|
|
||||||
|
DO_TEST_NOCAPS("clock-utc");
|
||||||
|
DO_TEST_NOCAPS("clock-localtime");
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-qcow2-nvram-path.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-qcow2-nvram-path.x86_64-latest.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..49fdfc5c5f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-qcow2-nvram-path.x86_64-latest.xml
|
||||||
|
@@ -0,0 +1,41 @@
|
||||||
|
+<domain type='kvm'>
|
||||||
|
+ <name>guest</name>
|
||||||
|
+ <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid>
|
||||||
|
+ <memory unit='KiB'>1048576</memory>
|
||||||
|
+ <currentMemory unit='KiB'>1048576</currentMemory>
|
||||||
|
+ <vcpu placement='static'>1</vcpu>
|
||||||
|
+ <os firmware='efi'>
|
||||||
|
+ <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
|
||||||
|
+ <firmware>
|
||||||
|
+ <feature enabled='yes' name='enrolled-keys'/>
|
||||||
|
+ <feature enabled='yes' name='secure-boot'/>
|
||||||
|
+ </firmware>
|
||||||
|
+ <loader readonly='yes' secure='yes' type='pflash' format='qcow2'>/usr/share/edk2/ovmf/OVMF_CODE_4M.secboot.qcow2</loader>
|
||||||
|
+ <nvram template='/usr/share/edk2/ovmf/OVMF_VARS_4M.secboot.qcow2' format='qcow2'>/path/to/guest_VARS.qcow2</nvram>
|
||||||
|
+ <boot dev='hd'/>
|
||||||
|
+ </os>
|
||||||
|
+ <features>
|
||||||
|
+ <acpi/>
|
||||||
|
+ <smm state='on'/>
|
||||||
|
+ </features>
|
||||||
|
+ <cpu mode='custom' match='exact' check='none'>
|
||||||
|
+ <model fallback='forbid'>qemu64</model>
|
||||||
|
+ </cpu>
|
||||||
|
+ <clock offset='utc'/>
|
||||||
|
+ <on_poweroff>destroy</on_poweroff>
|
||||||
|
+ <on_reboot>restart</on_reboot>
|
||||||
|
+ <on_crash>destroy</on_crash>
|
||||||
|
+ <devices>
|
||||||
|
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||||
|
+ <controller type='usb' index='0' model='none'/>
|
||||||
|
+ <controller type='sata' index='0'>
|
||||||
|
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
|
||||||
|
+ </controller>
|
||||||
|
+ <controller type='pci' index='0' model='pcie-root'/>
|
||||||
|
+ <input type='mouse' bus='ps2'/>
|
||||||
|
+ <input type='keyboard' bus='ps2'/>
|
||||||
|
+ <audio id='1' type='none'/>
|
||||||
|
+ <watchdog model='itco' action='reset'/>
|
||||||
|
+ <memballoon model='none'/>
|
||||||
|
+ </devices>
|
||||||
|
+</domain>
|
||||||
|
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
|
||||||
|
index 3f2ef10df7..c210673e39 100644
|
||||||
|
--- a/tests/qemuxml2xmltest.c
|
||||||
|
+++ b/tests/qemuxml2xmltest.c
|
||||||
|
@@ -921,6 +921,7 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-iscsi");
|
||||||
|
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-format-loader-qcow2");
|
||||||
|
+ DO_TEST_CAPS_LATEST("firmware-auto-efi-format-loader-qcow2-nvram-path");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2-path");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2-network-nbd");
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -0,0 +1,81 @@
|
|||||||
|
From f8725c0f60e94a393fc731f323bbdfdbaa35dd02 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <f8725c0f60e94a393fc731f323bbdfdbaa35dd02.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Fri, 26 May 2023 18:16:24 +0200
|
||||||
|
Subject: [PATCH] tests: Rename firmware-auto-efi-nvram-path
|
||||||
|
|
||||||
|
The new name better describes the test scenario and will fit
|
||||||
|
better with the additional tests that we're about to introduce.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 4ba04107d9ebc0070f64a031673cef61a5947866)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
...est.args => firmware-auto-efi-nvram-path.x86_64-latest.args} | 0
|
||||||
|
...ware-auto-efi-nvram.xml => firmware-auto-efi-nvram-path.xml} | 0
|
||||||
|
tests/qemuxml2argvtest.c | 2 +-
|
||||||
|
...atest.xml => firmware-auto-efi-nvram-path.x86_64-latest.xml} | 0
|
||||||
|
tests/qemuxml2xmltest.c | 2 +-
|
||||||
|
5 files changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
rename tests/qemuxml2argvdata/{firmware-auto-efi-nvram.x86_64-latest.args => firmware-auto-efi-nvram-path.x86_64-latest.args} (100%)
|
||||||
|
rename tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-nvram-path.xml} (100%)
|
||||||
|
rename tests/qemuxml2xmloutdata/{firmware-auto-efi-nvram.x86_64-latest.xml => firmware-auto-efi-nvram-path.x86_64-latest.xml} (100%)
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-nvram.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-path.x86_64-latest.args
|
||||||
|
similarity index 100%
|
||||||
|
rename from tests/qemuxml2argvdata/firmware-auto-efi-nvram.x86_64-latest.args
|
||||||
|
rename to tests/qemuxml2argvdata/firmware-auto-efi-nvram-path.x86_64-latest.args
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-nvram.xml b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-path.xml
|
||||||
|
similarity index 100%
|
||||||
|
rename from tests/qemuxml2argvdata/firmware-auto-efi-nvram.xml
|
||||||
|
rename to tests/qemuxml2argvdata/firmware-auto-efi-nvram-path.xml
|
||||||
|
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
|
||||||
|
index 549ecdf9ce..84e0963ec8 100644
|
||||||
|
--- a/tests/qemuxml2argvtest.c
|
||||||
|
+++ b/tests/qemuxml2argvtest.c
|
||||||
|
@@ -1059,7 +1059,6 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-auto-bios-nvram");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-stateless");
|
||||||
|
- DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-loader-secure");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-loader-insecure");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-loader-path");
|
||||||
|
@@ -1072,6 +1071,7 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-smm-off");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST("firmware-auto-efi-aarch64", "aarch64");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("firmware-auto-efi-abi-update-aarch64", "aarch64");
|
||||||
|
+ DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-path");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-file");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-nbd");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-iscsi");
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-path.x86_64-latest.xml
|
||||||
|
similarity index 100%
|
||||||
|
rename from tests/qemuxml2xmloutdata/firmware-auto-efi-nvram.x86_64-latest.xml
|
||||||
|
rename to tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-path.x86_64-latest.xml
|
||||||
|
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
|
||||||
|
index 74e6a27b73..6f7f6690bd 100644
|
||||||
|
--- a/tests/qemuxml2xmltest.c
|
||||||
|
+++ b/tests/qemuxml2xmltest.c
|
||||||
|
@@ -886,7 +886,6 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-bios-stateless");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-stateless");
|
||||||
|
- DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-loader-secure");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-loader-insecure");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-loader-path");
|
||||||
|
@@ -898,6 +897,7 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-smm-off");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST("firmware-auto-efi-aarch64", "aarch64");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("firmware-auto-efi-abi-update-aarch64", "aarch64");
|
||||||
|
+ DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-path");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-file");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-nbd");
|
||||||
|
DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-iscsi");
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -0,0 +1,148 @@
|
|||||||
|
From 5f3f84811feda3b30d9f5e3d99c629169b8ba39c Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <5f3f84811feda3b30d9f5e3d99c629169b8ba39c.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Mon, 15 May 2023 18:42:27 +0200
|
||||||
|
Subject: [PATCH] tests: Switch to firmware autoselection for hvf
|
||||||
|
|
||||||
|
Firmware selection is not relevant to these tests, so adopt
|
||||||
|
the most convenient approach.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 8c326914d8fc49c838650aef3432e0669cbd8fe1)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
.../hvf-aarch64-virt-headless.aarch64-latest.args | 6 +++---
|
||||||
|
tests/qemuxml2argvdata/hvf-aarch64-virt-headless.xml | 6 ++----
|
||||||
|
.../hvf-x86_64-q35-headless.x86_64-latest.args | 7 ++++++-
|
||||||
|
tests/qemuxml2argvdata/hvf-x86_64-q35-headless.xml | 4 ++--
|
||||||
|
.../hvf-aarch64-virt-headless.aarch64-latest.xml | 12 ++++++++----
|
||||||
|
.../hvf-x86_64-q35-headless.x86_64-latest.xml | 11 +++++++++--
|
||||||
|
6 files changed, 30 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2argvdata/hvf-aarch64-virt-headless.aarch64-latest.args b/tests/qemuxml2argvdata/hvf-aarch64-virt-headless.aarch64-latest.args
|
||||||
|
index 8fae9ebfa6..7559b9885f 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/hvf-aarch64-virt-headless.aarch64-latest.args
|
||||||
|
+++ b/tests/qemuxml2argvdata/hvf-aarch64-virt-headless.aarch64-latest.args
|
||||||
|
@@ -10,11 +10,11 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-test/.config \
|
||||||
|
-name guest=test,debug-threads=on \
|
||||||
|
-S \
|
||||||
|
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-test/master-key.aes"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/usr/share/edk2/aarch64/QEMU_EFI-silent-pflash.raw","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
--blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/test_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
--machine virt,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \
|
||||||
|
+-machine virt-4.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \
|
||||||
|
-accel hvf \
|
||||||
|
-m size=4194304k \
|
||||||
|
-object '{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":4294967296}' \
|
||||||
|
diff --git a/tests/qemuxml2argvdata/hvf-aarch64-virt-headless.xml b/tests/qemuxml2argvdata/hvf-aarch64-virt-headless.xml
|
||||||
|
index 01997b9731..3ae6f93647 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/hvf-aarch64-virt-headless.xml
|
||||||
|
+++ b/tests/qemuxml2argvdata/hvf-aarch64-virt-headless.xml
|
||||||
|
@@ -4,10 +4,8 @@
|
||||||
|
<memory unit='KiB'>4194304</memory>
|
||||||
|
<currentMemory unit='KiB'>4194304</currentMemory>
|
||||||
|
<vcpu placement='static'>2</vcpu>
|
||||||
|
- <os>
|
||||||
|
- <type arch='aarch64' machine='virt'>hvm</type>
|
||||||
|
- <loader readonly='yes' type='pflash'>/usr/share/edk2/aarch64/QEMU_EFI-silent-pflash.raw</loader>
|
||||||
|
- <nvram>/some/user/nvram/path/guest_VARS.fd</nvram>
|
||||||
|
+ <os firmware='efi'>
|
||||||
|
+ <type arch='aarch64' machine='virt-4.0'>hvm</type>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
diff --git a/tests/qemuxml2argvdata/hvf-x86_64-q35-headless.x86_64-latest.args b/tests/qemuxml2argvdata/hvf-x86_64-q35-headless.x86_64-latest.args
|
||||||
|
index 92fbcffd57..abea7bf158 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/hvf-x86_64-q35-headless.x86_64-latest.args
|
||||||
|
+++ b/tests/qemuxml2argvdata/hvf-x86_64-q35-headless.x86_64-latest.args
|
||||||
|
@@ -10,9 +10,14 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-test/.config \
|
||||||
|
-name guest=test,debug-threads=on \
|
||||||
|
-S \
|
||||||
|
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-test/master-key.aes"}' \
|
||||||
|
--machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.secboot.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
+-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/test_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
+-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
+-machine pc-q35-4.0,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \
|
||||||
|
-accel hvf \
|
||||||
|
-cpu qemu64 \
|
||||||
|
+-global driver=cfi.pflash01,property=secure,value=on \
|
||||||
|
-m size=4194304k \
|
||||||
|
-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":4294967296}' \
|
||||||
|
-overcommit mem-lock=off \
|
||||||
|
diff --git a/tests/qemuxml2argvdata/hvf-x86_64-q35-headless.xml b/tests/qemuxml2argvdata/hvf-x86_64-q35-headless.xml
|
||||||
|
index cad560e9ca..93980d434c 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/hvf-x86_64-q35-headless.xml
|
||||||
|
+++ b/tests/qemuxml2argvdata/hvf-x86_64-q35-headless.xml
|
||||||
|
@@ -4,8 +4,8 @@
|
||||||
|
<memory unit='KiB'>4194304</memory>
|
||||||
|
<currentMemory unit='KiB'>4194304</currentMemory>
|
||||||
|
<vcpu placement='static'>2</vcpu>
|
||||||
|
- <os>
|
||||||
|
- <type arch='x86_64' machine='q35'>hvm</type>
|
||||||
|
+ <os firmware='efi'>
|
||||||
|
+ <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/hvf-aarch64-virt-headless.aarch64-latest.xml b/tests/qemuxml2xmloutdata/hvf-aarch64-virt-headless.aarch64-latest.xml
|
||||||
|
index 16e8c23a79..69c1d5deb3 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/hvf-aarch64-virt-headless.aarch64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/hvf-aarch64-virt-headless.aarch64-latest.xml
|
||||||
|
@@ -4,10 +4,14 @@
|
||||||
|
<memory unit='KiB'>4194304</memory>
|
||||||
|
<currentMemory unit='KiB'>4194304</currentMemory>
|
||||||
|
<vcpu placement='static'>2</vcpu>
|
||||||
|
- <os>
|
||||||
|
- <type arch='aarch64' machine='virt'>hvm</type>
|
||||||
|
- <loader readonly='yes' type='pflash'>/usr/share/edk2/aarch64/QEMU_EFI-silent-pflash.raw</loader>
|
||||||
|
- <nvram>/some/user/nvram/path/guest_VARS.fd</nvram>
|
||||||
|
+ <os firmware='efi'>
|
||||||
|
+ <type arch='aarch64' machine='virt-4.0'>hvm</type>
|
||||||
|
+ <firmware>
|
||||||
|
+ <feature enabled='no' name='enrolled-keys'/>
|
||||||
|
+ <feature enabled='no' name='secure-boot'/>
|
||||||
|
+ </firmware>
|
||||||
|
+ <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
|
||||||
|
+ <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/test_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/hvf-x86_64-q35-headless.x86_64-latest.xml b/tests/qemuxml2xmloutdata/hvf-x86_64-q35-headless.x86_64-latest.xml
|
||||||
|
index 384241ac3d..032fd43471 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/hvf-x86_64-q35-headless.x86_64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/hvf-x86_64-q35-headless.x86_64-latest.xml
|
||||||
|
@@ -4,13 +4,20 @@
|
||||||
|
<memory unit='KiB'>4194304</memory>
|
||||||
|
<currentMemory unit='KiB'>4194304</currentMemory>
|
||||||
|
<vcpu placement='static'>2</vcpu>
|
||||||
|
- <os>
|
||||||
|
- <type arch='x86_64' machine='q35'>hvm</type>
|
||||||
|
+ <os firmware='efi'>
|
||||||
|
+ <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
|
||||||
|
+ <firmware>
|
||||||
|
+ <feature enabled='yes' name='enrolled-keys'/>
|
||||||
|
+ <feature enabled='yes' name='secure-boot'/>
|
||||||
|
+ </firmware>
|
||||||
|
+ <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader>
|
||||||
|
+ <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/var/lib/libvirt/qemu/nvram/test_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
<acpi/>
|
||||||
|
<apic/>
|
||||||
|
+ <smm state='on'/>
|
||||||
|
</features>
|
||||||
|
<cpu mode='custom' match='exact' check='none'>
|
||||||
|
<model fallback='forbid'>qemu64</model>
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -0,0 +1,57 @@
|
|||||||
|
From 57b899e51b68ec5e9a78a90f9c1a06c572d9f5c7 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <57b899e51b68ec5e9a78a90f9c1a06c572d9f5c7.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Tue, 16 May 2023 16:55:41 +0200
|
||||||
|
Subject: [PATCH] tests: Turn abi-update.xml into a symlink
|
||||||
|
|
||||||
|
Since the idea behind introducing the abi-update variant of
|
||||||
|
a test is showing that libvirt behaves differently based on
|
||||||
|
whether the configuration is for a newly-defined domain or an
|
||||||
|
existing one, we don't want the input files to ever go out of
|
||||||
|
sync.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 8627ec167cb29bc4bea7609992670c0a718e8c79)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
.../firmware-auto-efi-abi-update-aarch64.xml | 18 +-----------------
|
||||||
|
1 file changed, 1 insertion(+), 17 deletions(-)
|
||||||
|
mode change 100644 => 120000 tests/qemuxml2argvdata/firmware-auto-efi-abi-update-aarch64.xml
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-abi-update-aarch64.xml b/tests/qemuxml2argvdata/firmware-auto-efi-abi-update-aarch64.xml
|
||||||
|
deleted file mode 100644
|
||||||
|
index 5c6c5192ba..0000000000
|
||||||
|
--- a/tests/qemuxml2argvdata/firmware-auto-efi-abi-update-aarch64.xml
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,17 +0,0 @@
|
||||||
|
-<domain type='qemu'>
|
||||||
|
- <name>guest</name>
|
||||||
|
- <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid>
|
||||||
|
- <memory unit='KiB'>1048576</memory>
|
||||||
|
- <vcpu placement='static'>1</vcpu>
|
||||||
|
- <os firmware='efi'>
|
||||||
|
- <type arch='aarch64' machine='virt-4.0'>hvm</type>
|
||||||
|
- </os>
|
||||||
|
- <features>
|
||||||
|
- <acpi/>
|
||||||
|
- </features>
|
||||||
|
- <devices>
|
||||||
|
- <emulator>/usr/bin/qemu-system-aarch64</emulator>
|
||||||
|
- <controller type='usb' model='none'/>
|
||||||
|
- <memballoon model='none'/>
|
||||||
|
- </devices>
|
||||||
|
-</domain>
|
||||||
|
diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-abi-update-aarch64.xml b/tests/qemuxml2argvdata/firmware-auto-efi-abi-update-aarch64.xml
|
||||||
|
new file mode 120000
|
||||||
|
index 0000000000..551082260a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/qemuxml2argvdata/firmware-auto-efi-abi-update-aarch64.xml
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+firmware-auto-efi-aarch64.xml
|
||||||
|
\ No newline at end of file
|
||||||
|
--
|
||||||
|
2.42.0
|
2903
SOURCES/libvirt-tests-Update-firmware-descriptor-files.patch
Normal file
2903
SOURCES/libvirt-tests-Update-firmware-descriptor-files.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,119 @@
|
|||||||
|
From 38b7b94f3b0571d4411e858a17232626499f1e45 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <38b7b94f3b0571d4411e858a17232626499f1e45.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Tue, 30 May 2023 17:48:58 +0200
|
||||||
|
Subject: [PATCH] tests: Use DO_TEST_CAPS_*_ABI_UPDATE() for ppc64
|
||||||
|
|
||||||
|
We have a number of tests that can benefit from this macro
|
||||||
|
instead of open-coding it.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 751b0e6dbfba160dac8dead6c6e6c68660e0a706)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
...lug-nvdimm-ppc64-abi-update.ppc64-latest.args} | 0
|
||||||
|
...lug-ppc64-nonuma-abi-update.ppc64-latest.args} | 0
|
||||||
|
...64-usb-controller-qemu-xhci.ppc64-latest.args} | 0
|
||||||
|
tests/qemuxml2argvtest.c | 15 +++------------
|
||||||
|
...plug-nvdimm-ppc64-abi-update.ppc64-latest.xml} | 0
|
||||||
|
...plug-ppc64-nonuma-abi-update.ppc64-latest.xml} | 0
|
||||||
|
tests/qemuxml2xmltest.c | 8 ++------
|
||||||
|
7 files changed, 5 insertions(+), 18 deletions(-)
|
||||||
|
rename tests/qemuxml2argvdata/{memory-hotplug-nvdimm-ppc64-abi-update.args => memory-hotplug-nvdimm-ppc64-abi-update.ppc64-latest.args} (100%)
|
||||||
|
rename tests/qemuxml2argvdata/{memory-hotplug-ppc64-nonuma-abi-update.args => memory-hotplug-ppc64-nonuma-abi-update.ppc64-latest.args} (100%)
|
||||||
|
rename tests/qemuxml2argvdata/{ppc64-usb-controller-qemu-xhci.args => ppc64-usb-controller-qemu-xhci.ppc64-latest.args} (100%)
|
||||||
|
rename tests/qemuxml2xmloutdata/{memory-hotplug-nvdimm-ppc64-abi-update.xml => memory-hotplug-nvdimm-ppc64-abi-update.ppc64-latest.xml} (100%)
|
||||||
|
rename tests/qemuxml2xmloutdata/{memory-hotplug-ppc64-nonuma-abi-update.xml => memory-hotplug-ppc64-nonuma-abi-update.ppc64-latest.xml} (100%)
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.ppc64-latest.args
|
||||||
|
similarity index 100%
|
||||||
|
rename from tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.args
|
||||||
|
rename to tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.ppc64-latest.args
|
||||||
|
diff --git a/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.args b/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.ppc64-latest.args
|
||||||
|
similarity index 100%
|
||||||
|
rename from tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.args
|
||||||
|
rename to tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.ppc64-latest.args
|
||||||
|
diff --git a/tests/qemuxml2argvdata/ppc64-usb-controller-qemu-xhci.args b/tests/qemuxml2argvdata/ppc64-usb-controller-qemu-xhci.ppc64-latest.args
|
||||||
|
similarity index 100%
|
||||||
|
rename from tests/qemuxml2argvdata/ppc64-usb-controller-qemu-xhci.args
|
||||||
|
rename to tests/qemuxml2argvdata/ppc64-usb-controller-qemu-xhci.ppc64-latest.args
|
||||||
|
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
|
||||||
|
index 9abaa72674..549ecdf9ce 100644
|
||||||
|
--- a/tests/qemuxml2argvtest.c
|
||||||
|
+++ b/tests/qemuxml2argvtest.c
|
||||||
|
@@ -2440,10 +2440,7 @@ mymain(void)
|
||||||
|
DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM);
|
||||||
|
DO_TEST_CAPS_LATEST("memory-hotplug-dimm-addr");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST("memory-hotplug-ppc64-nonuma", "ppc64");
|
||||||
|
- DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "",
|
||||||
|
- ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
||||||
|
- ARG_CAPS_ARCH, "ppc64", ARG_CAPS_VER, "latest",
|
||||||
|
- ARG_END);
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("memory-hotplug-ppc64-nonuma-abi-update", "ppc64");
|
||||||
|
DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm");
|
||||||
|
DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm-access");
|
||||||
|
DO_TEST_CAPS_VER("memory-hotplug-nvdimm-label", "5.2.0");
|
||||||
|
@@ -2455,10 +2452,7 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_VER("memory-hotplug-nvdimm-readonly", "5.2.0");
|
||||||
|
DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm-readonly");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST("memory-hotplug-nvdimm-ppc64", "ppc64");
|
||||||
|
- DO_TEST_FULL("memory-hotplug-nvdimm-ppc64-abi-update", "",
|
||||||
|
- ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
||||||
|
- ARG_CAPS_ARCH, "ppc64", ARG_CAPS_VER, "latest",
|
||||||
|
- ARG_END);
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("memory-hotplug-nvdimm-ppc64-abi-update", "ppc64");
|
||||||
|
DO_TEST_CAPS_VER("memory-hotplug-virtio-pmem", "5.2.0");
|
||||||
|
DO_TEST_CAPS_LATEST("memory-hotplug-virtio-pmem");
|
||||||
|
DO_TEST_CAPS_LATEST("memory-hotplug-virtio-mem");
|
||||||
|
@@ -2497,10 +2491,7 @@ mymain(void)
|
||||||
|
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST("ppc64-usb-controller", "ppc64");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST("ppc64-usb-controller-legacy", "ppc64");
|
||||||
|
- DO_TEST_FULL("ppc64-usb-controller-qemu-xhci", "",
|
||||||
|
- ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
||||||
|
- ARG_CAPS_ARCH, "ppc64", ARG_CAPS_VER, "latest",
|
||||||
|
- ARG_END);
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("ppc64-usb-controller-qemu-xhci", "ppc64");
|
||||||
|
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST_PARSE_ERROR("ppc64-tpmproxy-double", "ppc64");
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST_PARSE_ERROR("ppc64-tpm-double", "ppc64");
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-ppc64-abi-update.xml b/tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-ppc64-abi-update.ppc64-latest.xml
|
||||||
|
similarity index 100%
|
||||||
|
rename from tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-ppc64-abi-update.xml
|
||||||
|
rename to tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-ppc64-abi-update.ppc64-latest.xml
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/memory-hotplug-ppc64-nonuma-abi-update.xml b/tests/qemuxml2xmloutdata/memory-hotplug-ppc64-nonuma-abi-update.ppc64-latest.xml
|
||||||
|
similarity index 100%
|
||||||
|
rename from tests/qemuxml2xmloutdata/memory-hotplug-ppc64-nonuma-abi-update.xml
|
||||||
|
rename to tests/qemuxml2xmloutdata/memory-hotplug-ppc64-nonuma-abi-update.ppc64-latest.xml
|
||||||
|
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
|
||||||
|
index b66274beb8..74e6a27b73 100644
|
||||||
|
--- a/tests/qemuxml2xmltest.c
|
||||||
|
+++ b/tests/qemuxml2xmltest.c
|
||||||
|
@@ -995,9 +995,7 @@ mymain(void)
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST("aarch64-usb-controller", "aarch64");
|
||||||
|
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST("memory-hotplug-ppc64-nonuma", "ppc64");
|
||||||
|
- DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "", WHEN_BOTH,
|
||||||
|
- ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
||||||
|
- ARG_CAPS_ARCH, "ppc64", ARG_CAPS_VER, "latest", ARG_END);
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("memory-hotplug-ppc64-nonuma-abi-update", "ppc64");
|
||||||
|
DO_TEST_NOCAPS("memory-hotplug");
|
||||||
|
DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM);
|
||||||
|
DO_TEST_CAPS_LATEST("memory-hotplug-dimm-addr");
|
||||||
|
@@ -1009,9 +1007,7 @@ mymain(void)
|
||||||
|
DO_TEST("memory-hotplug-nvdimm-readonly", QEMU_CAPS_DEVICE_NVDIMM,
|
||||||
|
QEMU_CAPS_DEVICE_NVDIMM_UNARMED);
|
||||||
|
DO_TEST_CAPS_ARCH_LATEST("memory-hotplug-nvdimm-ppc64", "ppc64");
|
||||||
|
- DO_TEST_FULL("memory-hotplug-nvdimm-ppc64-abi-update", "", WHEN_BOTH,
|
||||||
|
- ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
||||||
|
- ARG_CAPS_ARCH, "ppc64", ARG_CAPS_VER, "latest", ARG_END);
|
||||||
|
+ DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("memory-hotplug-nvdimm-ppc64-abi-update", "ppc64");
|
||||||
|
DO_TEST_CAPS_LATEST("memory-hotplug-virtio-pmem");
|
||||||
|
DO_TEST_CAPS_LATEST("memory-hotplug-virtio-mem");
|
||||||
|
DO_TEST_CAPS_LATEST("memory-hotplug-multiple");
|
||||||
|
--
|
||||||
|
2.42.0
|
@ -0,0 +1,118 @@
|
|||||||
|
From f3437c2d4bce7b21f199cdc59bb6778e49507f5b Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <f3437c2d4bce7b21f199cdc59bb6778e49507f5b.1692951632.git.jdenemar@redhat.com>
|
||||||
|
From: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Date: Mon, 15 May 2023 18:39:18 +0200
|
||||||
|
Subject: [PATCH] tests: Use virt-4.0 machine type for aarch64
|
||||||
|
|
||||||
|
Using the unversioned machine type means that firmware
|
||||||
|
descriptors can't be used to discover additional information
|
||||||
|
about the chosen firmware build.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit 5c129c8e7a15650fcb0deac53d9d3c0ac1802da5)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2196178
|
||||||
|
|
||||||
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||||
|
---
|
||||||
|
.../aarch64-virt-graphics.aarch64-latest.args | 2 +-
|
||||||
|
tests/qemuxml2argvdata/aarch64-virt-graphics.xml | 2 +-
|
||||||
|
.../aarch64-virt-headless.aarch64-latest.args | 2 +-
|
||||||
|
tests/qemuxml2argvdata/aarch64-virt-headless.xml | 2 +-
|
||||||
|
.../aarch64-virt-graphics.aarch64-latest.xml | 8 ++++++--
|
||||||
|
.../aarch64-virt-headless.aarch64-latest.xml | 8 ++++++--
|
||||||
|
6 files changed, 16 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args b/tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args
|
||||||
|
index 2c07824346..1b7b0a70ff 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args
|
||||||
|
+++ b/tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args
|
||||||
|
@@ -14,7 +14,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
-blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
--machine virt,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \
|
||||||
|
+-machine virt-4.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \
|
||||||
|
-accel tcg \
|
||||||
|
-cpu cortex-a15 \
|
||||||
|
-m size=4194304k \
|
||||||
|
diff --git a/tests/qemuxml2argvdata/aarch64-virt-graphics.xml b/tests/qemuxml2argvdata/aarch64-virt-graphics.xml
|
||||||
|
index b1b5e87c22..2b1704ad7b 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/aarch64-virt-graphics.xml
|
||||||
|
+++ b/tests/qemuxml2argvdata/aarch64-virt-graphics.xml
|
||||||
|
@@ -10,7 +10,7 @@
|
||||||
|
<currentMemory>4194304</currentMemory>
|
||||||
|
<vcpu>4</vcpu>
|
||||||
|
<os>
|
||||||
|
- <type arch='aarch64' machine='virt'>hvm</type>
|
||||||
|
+ <type arch='aarch64' machine='virt-4.0'>hvm</type>
|
||||||
|
<loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
|
||||||
|
<nvram>/some/user/nvram/path/guest_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
diff --git a/tests/qemuxml2argvdata/aarch64-virt-headless.aarch64-latest.args b/tests/qemuxml2argvdata/aarch64-virt-headless.aarch64-latest.args
|
||||||
|
index 734e62ed53..23b514da9a 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/aarch64-virt-headless.aarch64-latest.args
|
||||||
|
+++ b/tests/qemuxml2argvdata/aarch64-virt-headless.aarch64-latest.args
|
||||||
|
@@ -14,7 +14,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
|
||||||
|
-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \
|
||||||
|
-blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \
|
||||||
|
--machine virt,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \
|
||||||
|
+-machine virt-4.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \
|
||||||
|
-accel tcg \
|
||||||
|
-cpu cortex-a15 \
|
||||||
|
-m size=4194304k \
|
||||||
|
diff --git a/tests/qemuxml2argvdata/aarch64-virt-headless.xml b/tests/qemuxml2argvdata/aarch64-virt-headless.xml
|
||||||
|
index 27825e9a55..1d1fc071d7 100644
|
||||||
|
--- a/tests/qemuxml2argvdata/aarch64-virt-headless.xml
|
||||||
|
+++ b/tests/qemuxml2argvdata/aarch64-virt-headless.xml
|
||||||
|
@@ -10,7 +10,7 @@
|
||||||
|
<currentMemory>4194304</currentMemory>
|
||||||
|
<vcpu>4</vcpu>
|
||||||
|
<os>
|
||||||
|
- <type arch='aarch64' machine='virt'>hvm</type>
|
||||||
|
+ <type arch='aarch64' machine='virt-4.0'>hvm</type>
|
||||||
|
<loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
|
||||||
|
<nvram>/some/user/nvram/path/guest_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml b/tests/qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml
|
||||||
|
index 24109a11c3..f0a4003655 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml
|
||||||
|
@@ -9,8 +9,12 @@
|
||||||
|
<memory unit='KiB'>4194304</memory>
|
||||||
|
<currentMemory unit='KiB'>4194304</currentMemory>
|
||||||
|
<vcpu placement='static'>4</vcpu>
|
||||||
|
- <os>
|
||||||
|
- <type arch='aarch64' machine='virt'>hvm</type>
|
||||||
|
+ <os firmware='efi'>
|
||||||
|
+ <type arch='aarch64' machine='virt-4.0'>hvm</type>
|
||||||
|
+ <firmware>
|
||||||
|
+ <feature enabled='no' name='enrolled-keys'/>
|
||||||
|
+ <feature enabled='no' name='secure-boot'/>
|
||||||
|
+ </firmware>
|
||||||
|
<loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
|
||||||
|
<nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/some/user/nvram/path/guest_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
diff --git a/tests/qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml b/tests/qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml
|
||||||
|
index 6182da4dc6..ab4126318a 100644
|
||||||
|
--- a/tests/qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml
|
||||||
|
+++ b/tests/qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml
|
||||||
|
@@ -9,8 +9,12 @@
|
||||||
|
<memory unit='KiB'>4194304</memory>
|
||||||
|
<currentMemory unit='KiB'>4194304</currentMemory>
|
||||||
|
<vcpu placement='static'>4</vcpu>
|
||||||
|
- <os>
|
||||||
|
- <type arch='aarch64' machine='virt'>hvm</type>
|
||||||
|
+ <os firmware='efi'>
|
||||||
|
+ <type arch='aarch64' machine='virt-4.0'>hvm</type>
|
||||||
|
+ <firmware>
|
||||||
|
+ <feature enabled='no' name='enrolled-keys'/>
|
||||||
|
+ <feature enabled='no' name='secure-boot'/>
|
||||||
|
+ </firmware>
|
||||||
|
<loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
|
||||||
|
<nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/some/user/nvram/path/guest_VARS.fd</nvram>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
--
|
||||||
|
2.42.0
|
39773
SOURCES/libvirt-tests-add-capabilities-for-QEMU-8.1.0-on-s390x.patch
Normal file
39773
SOURCES/libvirt-tests-add-capabilities-for-QEMU-8.1.0-on-s390x.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,127 @@
|
|||||||
|
From b775a84c8e8d95cb407e56b0ee289b124027f94d Mon Sep 17 00:00:00 2001
|
||||||
|
Message-ID: <b775a84c8e8d95cb407e56b0ee289b124027f94d.1689974709.git.jdenemar@redhat.com>
|
||||||
|
From: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
Date: Wed, 5 Jul 2023 08:20:23 +0200
|
||||||
|
Subject: [PATCH] tests: remove acpi support from s390x ccw hotplug tests
|
||||||
|
|
||||||
|
In newer QEMU libvirt combinations acpi support is no longer tolerated
|
||||||
|
and ignored. Therfore before upgrading the test capabilities to QEMU
|
||||||
|
8.1.0 replies removing the acpi feature from the domain XMLs.
|
||||||
|
|
||||||
|
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||||
|
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
(cherry picked from commit d8e95ab6b7c45acc121746e2e24edcfca3d8d8a0)
|
||||||
|
|
||||||
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2168499
|
||||||
|
|
||||||
|
Signed-off-by: Boris Fiuczynski <bfiuczyn@redhat.com>
|
||||||
|
---
|
||||||
|
.../qemuhotplug-base-ccw-live+ccw-virtio.xml | 1 -
|
||||||
|
...lug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-explicit.xml | 1 -
|
||||||
|
...plug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-reverse.xml | 1 -
|
||||||
|
.../qemuhotplug-base-ccw-live-with-2-ccw-virtio.xml | 1 -
|
||||||
|
...tplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2-explicit.xml | 1 -
|
||||||
|
.../qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2.xml | 1 -
|
||||||
|
.../qemuhotplug-base-ccw-live-with-ccw-virtio.xml | 1 -
|
||||||
|
tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live.xml | 1 -
|
||||||
|
8 files changed, 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live+ccw-virtio.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live+ccw-virtio.xml
|
||||||
|
index 798a7ab732..6e879ded86 100644
|
||||||
|
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live+ccw-virtio.xml
|
||||||
|
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live+ccw-virtio.xml
|
||||||
|
@@ -9,7 +9,6 @@
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
- <acpi/>
|
||||||
|
<apic/>
|
||||||
|
<pae/>
|
||||||
|
</features>
|
||||||
|
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-explicit.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-explicit.xml
|
||||||
|
index 0c76410ff1..86d8da651d 100644
|
||||||
|
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-explicit.xml
|
||||||
|
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-explicit.xml
|
||||||
|
@@ -9,7 +9,6 @@
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
- <acpi/>
|
||||||
|
<apic/>
|
||||||
|
<pae/>
|
||||||
|
</features>
|
||||||
|
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-reverse.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-reverse.xml
|
||||||
|
index 5d2769c420..9b16951e46 100644
|
||||||
|
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-reverse.xml
|
||||||
|
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-reverse.xml
|
||||||
|
@@ -9,7 +9,6 @@
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
- <acpi/>
|
||||||
|
<apic/>
|
||||||
|
<pae/>
|
||||||
|
</features>
|
||||||
|
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio.xml
|
||||||
|
index 845c0e1c98..b5292a7ed2 100644
|
||||||
|
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio.xml
|
||||||
|
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio.xml
|
||||||
|
@@ -9,7 +9,6 @@
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
- <acpi/>
|
||||||
|
<apic/>
|
||||||
|
<pae/>
|
||||||
|
</features>
|
||||||
|
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2-explicit.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2-explicit.xml
|
||||||
|
index 29b8fdd6c8..f37868101c 100644
|
||||||
|
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2-explicit.xml
|
||||||
|
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2-explicit.xml
|
||||||
|
@@ -9,7 +9,6 @@
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
- <acpi/>
|
||||||
|
<apic/>
|
||||||
|
<pae/>
|
||||||
|
</features>
|
||||||
|
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2.xml
|
||||||
|
index 29b8fdd6c8..f37868101c 100644
|
||||||
|
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2.xml
|
||||||
|
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2.xml
|
||||||
|
@@ -9,7 +9,6 @@
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
- <acpi/>
|
||||||
|
<apic/>
|
||||||
|
<pae/>
|
||||||
|
</features>
|
||||||
|
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio.xml
|
||||||
|
index 82402ffe1b..42f89a07a2 100644
|
||||||
|
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio.xml
|
||||||
|
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio.xml
|
||||||
|
@@ -9,7 +9,6 @@
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
- <acpi/>
|
||||||
|
<apic/>
|
||||||
|
<pae/>
|
||||||
|
</features>
|
||||||
|
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live.xml
|
||||||
|
index 6eb60b13a9..f0570b5cf4 100644
|
||||||
|
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live.xml
|
||||||
|
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live.xml
|
||||||
|
@@ -9,7 +9,6 @@
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
- <acpi/>
|
||||||
|
<apic/>
|
||||||
|
<pae/>
|
||||||
|
</features>
|
||||||
|
--
|
||||||
|
2.41.0
|
@ -1,59 +0,0 @@
|
|||||||
From 28bd414db666463dca0a26bbb969fd6bc784ec8e Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <28bd414db666463dca0a26bbb969fd6bc784ec8e@dist-git>
|
|
||||||
From: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
Date: Tue, 17 Jan 2023 10:02:07 +0100
|
|
||||||
Subject: [PATCH] vircgroupv2: fix cpu.weight limits check
|
|
||||||
|
|
||||||
The cgroup v2 cpu.weight limits are different than cgroup v1 cpu.shares
|
|
||||||
limits.
|
|
||||||
|
|
||||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
(cherry picked from commit cf3414a85b8383d71d6ae2a53daf63c331cc2230)
|
|
||||||
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2037998
|
|
||||||
|
|
||||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
---
|
|
||||||
src/util/vircgroup.h | 2 ++
|
|
||||||
src/util/vircgroupv2.c | 8 ++++----
|
|
||||||
2 files changed, 6 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h
|
|
||||||
index 690f09465c..adf3850b22 100644
|
|
||||||
--- a/src/util/vircgroup.h
|
|
||||||
+++ b/src/util/vircgroup.h
|
|
||||||
@@ -235,6 +235,8 @@ int virCgroupGetCpuShares(virCgroup *group, unsigned long long *shares);
|
|
||||||
/* Based on kernel code ((1ULL << MAX_BW_BITS) - 1) where MAX_BW_BITS is
|
|
||||||
* (64 - BW_SHIFT) and BW_SHIFT is 20 */
|
|
||||||
#define VIR_CGROUP_CPU_QUOTA_MAX 17592186044415LL
|
|
||||||
+#define VIR_CGROUPV2_WEIGHT_MIN 1LL
|
|
||||||
+#define VIR_CGROUPV2_WEIGHT_MAX 10000LL
|
|
||||||
|
|
||||||
int virCgroupSetCpuCfsPeriod(virCgroup *group, unsigned long long cfs_period);
|
|
||||||
int virCgroupGetCpuCfsPeriod(virCgroup *group, unsigned long long *cfs_period);
|
|
||||||
diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c
|
|
||||||
index b1f562aa52..219b9c7f21 100644
|
|
||||||
--- a/src/util/vircgroupv2.c
|
|
||||||
+++ b/src/util/vircgroupv2.c
|
|
||||||
@@ -1499,13 +1499,13 @@ static int
|
|
||||||
virCgroupV2SetCpuShares(virCgroup *group,
|
|
||||||
unsigned long long shares)
|
|
||||||
{
|
|
||||||
- if (shares < VIR_CGROUP_CPU_SHARES_MIN ||
|
|
||||||
- shares > VIR_CGROUP_CPU_SHARES_MAX) {
|
|
||||||
+ if (shares < VIR_CGROUPV2_WEIGHT_MIN ||
|
|
||||||
+ shares > VIR_CGROUPV2_WEIGHT_MAX) {
|
|
||||||
virReportError(VIR_ERR_INVALID_ARG,
|
|
||||||
_("shares '%llu' must be in range [%llu, %llu]"),
|
|
||||||
shares,
|
|
||||||
- VIR_CGROUP_CPU_SHARES_MIN,
|
|
||||||
- VIR_CGROUP_CPU_SHARES_MAX);
|
|
||||||
+ VIR_CGROUPV2_WEIGHT_MIN,
|
|
||||||
+ VIR_CGROUPV2_WEIGHT_MAX);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
|||||||
From f895d23743a65141a2db7f816e56d18c9c4de6df Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <f895d23743a65141a2db7f816e56d18c9c4de6df@dist-git>
|
|
||||||
From: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Date: Mon, 30 Jan 2023 10:55:22 +0100
|
|
||||||
Subject: [PATCH] virsh: Make domif-setlink work more than once
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
In virsh, we have this convenient domif-setlink command, which is
|
|
||||||
just a wrapper over virDomainUpdateDeviceFlags() and which allows
|
|
||||||
setting link state of given guest NIC. It does so by fetching
|
|
||||||
corresponding <interface/> XML snippet and either putting <link
|
|
||||||
state=''/> into it, OR if the element already exists setting the
|
|
||||||
attribute to desired value. The XML is then fed into the update
|
|
||||||
API.
|
|
||||||
|
|
||||||
There's, however, a small bug in detecting the pre-existence of
|
|
||||||
the element and its attribute. The code looks at "link"
|
|
||||||
attribute, while in fact, the attribute is called "state".
|
|
||||||
|
|
||||||
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/426
|
|
||||||
Fixes: e575bf082ed4889280be07c986375f1ca15bb7ee
|
|
||||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
(cherry picked from commit 6f3f6c0f763b9ffd8ef93eb124c88dd0b79138fc)
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=2165466
|
|
||||||
---
|
|
||||||
tools/virsh-domain.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
|
|
||||||
index 6b431bd1e5..59b2b3ce60 100644
|
|
||||||
--- a/tools/virsh-domain.c
|
|
||||||
+++ b/tools/virsh-domain.c
|
|
||||||
@@ -3209,7 +3209,7 @@ cmdDomIfSetLink(vshControl *ctl, const vshCmd *cmd)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (xmlHasProp(linkNode, BAD_CAST "link"))
|
|
||||||
+ if (xmlHasProp(linkNode, BAD_CAST "state"))
|
|
||||||
stateAttr = xmlSetProp(linkNode, BAD_CAST "state", BAD_CAST state);
|
|
||||||
else
|
|
||||||
stateAttr = xmlNewProp(linkNode, BAD_CAST "state", BAD_CAST state);
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
|||||||
.ctags.d/libvirt.ctags ../.ctags
|
.ctags.d/libvirt.ctags ../.ctags
|
||||||
tests/virt-admin-self-test ./virsh-self-test
|
tests/virt-admin-self-test ./virsh-self-test
|
||||||
|
tests/chxml2xmlout/basic.xml ../chxml2xmlin/basic.xml
|
||||||
tests/genericxml2xmloutdata/device-backenddomain.xml ../genericxml2xmlindata/device-backenddomain.xml
|
tests/genericxml2xmloutdata/device-backenddomain.xml ../genericxml2xmlindata/device-backenddomain.xml
|
||||||
tests/networkxml2xmlin/leasetime-hours.xml ../networkxml2confdata/leasetime-hours.xml
|
tests/networkxml2xmlin/leasetime-hours.xml ../networkxml2confdata/leasetime-hours.xml
|
||||||
tests/networkxml2xmlin/leasetime-infinite.xml ../networkxml2confdata/leasetime-infinite.xml
|
tests/networkxml2xmlin/leasetime-infinite.xml ../networkxml2confdata/leasetime-infinite.xml
|
||||||
@ -62,6 +63,10 @@ tests/qemublocktestdata/imagecreate/qcow2-luks-encopts-backing.xml qcow2-luks-en
|
|||||||
tests/qemufirmwaredata/etc/qemu/firmware/40-ovmf-sb-keys.json ../../../usr/share/qemu/firmware/50-ovmf-sb-keys.json
|
tests/qemufirmwaredata/etc/qemu/firmware/40-ovmf-sb-keys.json ../../../usr/share/qemu/firmware/50-ovmf-sb-keys.json
|
||||||
tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-doorbell-detach.xml qemuhotplug-base-live+ivshmem-plain.xml
|
tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-doorbell-detach.xml qemuhotplug-base-live+ivshmem-plain.xml
|
||||||
tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-plain-detach.xml qemuhotplug-base-live.xml
|
tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-plain-detach.xml qemuhotplug-base-live.xml
|
||||||
|
tests/qemuhotplugtestdomains/qemuhotplug-base-live+watchdog+watchdog-reset.xml qemuhotplug-base-live+watchdog.xml
|
||||||
|
tests/qemuhotplugtestdomains/qemuhotplug-disk-cdrom+disk-cdrom-nochange.xml qemuhotplug-disk-cdrom.xml
|
||||||
|
tests/qemuhotplugtestdomains/qemuhotplug-graphics-spice+graphics-spice-nochange.xml qemuhotplug-graphics-spice.xml
|
||||||
|
tests/qemuhotplugtestdomains/qemuhotplug-graphics-spice-timeout+graphics-spice-timeout-nochange.xml qemuhotplug-graphics-spice-timeout.xml
|
||||||
tests/qemustatusxml2xmldata/backup-pull-out.xml backup-pull-in.xml
|
tests/qemustatusxml2xmldata/backup-pull-out.xml backup-pull-in.xml
|
||||||
tests/qemustatusxml2xmldata/blockjob-blockdev-out.xml blockjob-blockdev-in.xml
|
tests/qemustatusxml2xmldata/blockjob-blockdev-out.xml blockjob-blockdev-in.xml
|
||||||
tests/qemustatusxml2xmldata/blockjob-mirror-out.xml blockjob-mirror-in.xml
|
tests/qemustatusxml2xmldata/blockjob-mirror-out.xml blockjob-mirror-in.xml
|
||||||
@ -73,26 +78,15 @@ tests/qemustatusxml2xmldata/vcpus-multi-out.xml vcpus-multi-in.xml
|
|||||||
tests/qemuvhostuserdata/etc/qemu/vhost-user/40-gpu.json ../../../usr/share/qemu/vhost-user/50-gpu.json
|
tests/qemuvhostuserdata/etc/qemu/vhost-user/40-gpu.json ../../../usr/share/qemu/vhost-user/50-gpu.json
|
||||||
tests/qemuvhostuserdata/usr/share/qemu/vhost-user/30-gpu.json 50-gpu.json
|
tests/qemuvhostuserdata/usr/share/qemu/vhost-user/30-gpu.json 50-gpu.json
|
||||||
tests/qemuvhostuserdata/usr/share/qemu/vhost-user/60-gpu.json 50-gpu.json
|
tests/qemuvhostuserdata/usr/share/qemu/vhost-user/60-gpu.json 50-gpu.json
|
||||||
tests/qemuxml2argvdata/aarch64-gic-default-both.args aarch64-gic-v3.args
|
|
||||||
tests/qemuxml2argvdata/aarch64-gic-default-both.xml aarch64-gic-default.xml
|
tests/qemuxml2argvdata/aarch64-gic-default-both.xml aarch64-gic-default.xml
|
||||||
tests/qemuxml2argvdata/aarch64-gic-default-v2.args aarch64-gic-v2.args
|
|
||||||
tests/qemuxml2argvdata/aarch64-gic-default-v2.xml aarch64-gic-default.xml
|
tests/qemuxml2argvdata/aarch64-gic-default-v2.xml aarch64-gic-default.xml
|
||||||
tests/qemuxml2argvdata/aarch64-gic-default-v3.args aarch64-gic-v3.args
|
|
||||||
tests/qemuxml2argvdata/aarch64-gic-default-v3.xml aarch64-gic-default.xml
|
tests/qemuxml2argvdata/aarch64-gic-default-v3.xml aarch64-gic-default.xml
|
||||||
tests/qemuxml2argvdata/aarch64-gic-default.args aarch64-gic-v2.args
|
|
||||||
tests/qemuxml2argvdata/aarch64-gic-none-both.args aarch64-gic-v3.args
|
|
||||||
tests/qemuxml2argvdata/aarch64-gic-none-both.xml aarch64-gic-none.xml
|
tests/qemuxml2argvdata/aarch64-gic-none-both.xml aarch64-gic-none.xml
|
||||||
tests/qemuxml2argvdata/aarch64-gic-none-v2.args aarch64-gic-v2.args
|
|
||||||
tests/qemuxml2argvdata/aarch64-gic-none-v2.xml aarch64-gic-none.xml
|
tests/qemuxml2argvdata/aarch64-gic-none-v2.xml aarch64-gic-none.xml
|
||||||
tests/qemuxml2argvdata/aarch64-gic-none-v3.args aarch64-gic-v3.args
|
|
||||||
tests/qemuxml2argvdata/aarch64-gic-none-v3.xml aarch64-gic-none-v2.xml
|
tests/qemuxml2argvdata/aarch64-gic-none-v3.xml aarch64-gic-none-v2.xml
|
||||||
tests/qemuxml2argvdata/aarch64-gic-none.args aarch64-gic-v2.args
|
|
||||||
tests/qemuxml2argvdata/cpu-check-full.args cpu-check-none.args
|
tests/qemuxml2argvdata/cpu-check-full.args cpu-check-none.args
|
||||||
tests/qemuxml2argvdata/cpu-check-partial.args cpu-check-none.args
|
tests/qemuxml2argvdata/cpu-check-partial.args cpu-check-none.args
|
||||||
tests/qemuxml2argvdata/disk-backing-chains-index.x86_64-latest.args disk-backing-chains-noindex.x86_64-latest.args
|
tests/qemuxml2argvdata/disk-backing-chains-index.x86_64-latest.args disk-backing-chains-noindex.x86_64-latest.args
|
||||||
tests/qemuxml2argvdata/mach-virt-console-native.args mach-virt-serial-native.args
|
|
||||||
tests/qemuxml2argvdata/mach-virt-serial+console-native.args mach-virt-serial-native.args
|
|
||||||
tests/qemuxml2argvdata/mach-virt-serial-compat.args mach-virt-serial-native.args
|
|
||||||
tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.xml memory-hotplug-nvdimm-ppc64.xml
|
tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.xml memory-hotplug-nvdimm-ppc64.xml
|
||||||
tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.xml memory-hotplug-ppc64-nonuma.xml
|
tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.xml memory-hotplug-ppc64-nonuma.xml
|
||||||
tests/qemuxml2argvdata/pci-rom-disabled-invalid.args pci-rom-disabled.args
|
tests/qemuxml2argvdata/pci-rom-disabled-invalid.args pci-rom-disabled.args
|
||||||
@ -104,49 +98,13 @@ tests/qemuxml2argvdata/pseries-serial-compat.ppc64-latest.args pseries-serial-na
|
|||||||
tests/qemuxml2argvdata/usb-controller-default-unavailable-q35.xml usb-controller-default-q35.xml
|
tests/qemuxml2argvdata/usb-controller-default-unavailable-q35.xml usb-controller-default-q35.xml
|
||||||
tests/qemuxml2argvdata/usb-controller-explicit-unavailable-q35.xml usb-controller-explicit-q35.xml
|
tests/qemuxml2argvdata/usb-controller-explicit-unavailable-q35.xml usb-controller-explicit-q35.xml
|
||||||
tests/qemuxml2argvdata/usb-controller-qemu-xhci-unavailable.xml usb-controller-qemu-xhci.xml
|
tests/qemuxml2argvdata/usb-controller-qemu-xhci-unavailable.xml usb-controller-qemu-xhci.xml
|
||||||
tests/qemuxml2xmloutdata/aarch64-gic-default-both.xml ../qemuxml2argvdata/aarch64-gic-v3.xml
|
|
||||||
tests/qemuxml2xmloutdata/aarch64-gic-default-v2.xml ../qemuxml2argvdata/aarch64-gic-v2.xml
|
|
||||||
tests/qemuxml2xmloutdata/aarch64-gic-default-v3.xml ../qemuxml2argvdata/aarch64-gic-v3.xml
|
|
||||||
tests/qemuxml2xmloutdata/aarch64-gic-default.xml ../qemuxml2argvdata/aarch64-gic-v2.xml
|
|
||||||
tests/qemuxml2xmloutdata/aarch64-gic-host.xml ../qemuxml2argvdata/aarch64-gic-host.xml
|
|
||||||
tests/qemuxml2xmloutdata/aarch64-gic-none-both.xml ../qemuxml2argvdata/aarch64-gic-v3.xml
|
|
||||||
tests/qemuxml2xmloutdata/aarch64-gic-none-v2.xml ../qemuxml2argvdata/aarch64-gic-v2.xml
|
|
||||||
tests/qemuxml2xmloutdata/aarch64-gic-none-v3.xml ../qemuxml2argvdata/aarch64-gic-v3.xml
|
|
||||||
tests/qemuxml2xmloutdata/aarch64-gic-none.xml ../qemuxml2argvdata/aarch64-gic-v2.xml
|
|
||||||
tests/qemuxml2xmloutdata/aarch64-gic-v2.xml ../qemuxml2argvdata/aarch64-gic-v2.xml
|
|
||||||
tests/qemuxml2xmloutdata/aarch64-gic-v3.xml ../qemuxml2argvdata/aarch64-gic-v3.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-alsa-best.xml ../qemuxml2argvdata/audio-alsa-best.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-alsa-full.xml ../qemuxml2argvdata/audio-alsa-full.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-alsa-minimal.xml ../qemuxml2argvdata/audio-alsa-minimal.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-coreaudio-best.xml ../qemuxml2argvdata/audio-coreaudio-best.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-coreaudio-full.xml ../qemuxml2argvdata/audio-coreaudio-full.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-coreaudio-minimal.xml ../qemuxml2argvdata/audio-coreaudio-minimal.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-file-best.xml ../qemuxml2argvdata/audio-file-best.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-file-full.xml ../qemuxml2argvdata/audio-file-full.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-file-minimal.xml ../qemuxml2argvdata/audio-file-minimal.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-jack-full.xml ../qemuxml2argvdata/audio-jack-full.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-many-backends.x86_64-latest.xml ../qemuxml2argvdata/audio-many-backends.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-none-best.xml ../qemuxml2argvdata/audio-none-best.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-none-full.xml ../qemuxml2argvdata/audio-none-full.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-none-minimal.xml ../qemuxml2argvdata/audio-none-minimal.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-oss-best.xml ../qemuxml2argvdata/audio-oss-best.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-oss-full.xml ../qemuxml2argvdata/audio-oss-full.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-oss-minimal.xml ../qemuxml2argvdata/audio-oss-minimal.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-pulseaudio-best.xml ../qemuxml2argvdata/audio-pulseaudio-best.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-pulseaudio-full.xml ../qemuxml2argvdata/audio-pulseaudio-full.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-pulseaudio-minimal.xml ../qemuxml2argvdata/audio-pulseaudio-minimal.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-sdl-best.xml ../qemuxml2argvdata/audio-sdl-best.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-sdl-full.xml ../qemuxml2argvdata/audio-sdl-full.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-sdl-minimal.xml ../qemuxml2argvdata/audio-sdl-minimal.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-spice-best.xml ../qemuxml2argvdata/audio-spice-best.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-spice-full.xml ../qemuxml2argvdata/audio-spice-full.xml
|
|
||||||
tests/qemuxml2xmloutdata/audio-spice-minimal.xml ../qemuxml2argvdata/audio-spice-minimal.xml
|
|
||||||
tests/qemuxml2xmloutdata/blkdeviotune-group-num.x86_64-latest.xml ../qemuxml2argvdata/blkdeviotune-group-num.xml
|
tests/qemuxml2xmloutdata/blkdeviotune-group-num.x86_64-latest.xml ../qemuxml2argvdata/blkdeviotune-group-num.xml
|
||||||
tests/qemuxml2xmloutdata/blkdeviotune-max-length.x86_64-latest.xml ../qemuxml2argvdata/blkdeviotune-max-length.xml
|
tests/qemuxml2xmloutdata/blkdeviotune-max-length.x86_64-latest.xml ../qemuxml2argvdata/blkdeviotune-max-length.xml
|
||||||
tests/qemuxml2xmloutdata/blkdeviotune-max.x86_64-latest.xml ../qemuxml2argvdata/blkdeviotune-max.xml
|
tests/qemuxml2xmloutdata/blkdeviotune-max.x86_64-latest.xml ../qemuxml2argvdata/blkdeviotune-max.xml
|
||||||
tests/qemuxml2xmloutdata/boot-floppy-q35.xml ../qemuxml2argvdata/boot-floppy-q35.xml
|
tests/qemuxml2xmloutdata/boot-floppy-q35.xml ../qemuxml2argvdata/boot-floppy-q35.xml
|
||||||
tests/qemuxml2xmloutdata/clock-realtime.xml ../qemuxml2argvdata/clock-realtime.xml
|
tests/qemuxml2xmloutdata/clock-realtime.xml ../qemuxml2argvdata/clock-realtime.xml
|
||||||
tests/qemuxml2xmloutdata/clock-timer-armvtimer.aarch64-latest.xml ../qemuxml2argvdata/clock-timer-armvtimer.xml
|
tests/qemuxml2xmloutdata/clock-timer-armvtimer.aarch64-latest.xml ../qemuxml2argvdata/clock-timer-armvtimer.xml
|
||||||
|
tests/qemuxml2xmloutdata/crypto-builtin.x86_64-latest.xml ../qemuxml2argvdata/crypto-builtin.xml
|
||||||
tests/qemuxml2xmloutdata/disk-detect-zeroes.x86_64-latest.xml ../qemuxml2argvdata/disk-detect-zeroes.xml
|
tests/qemuxml2xmloutdata/disk-detect-zeroes.x86_64-latest.xml ../qemuxml2argvdata/disk-detect-zeroes.xml
|
||||||
tests/qemuxml2xmloutdata/disk-nvme.x86_64-latest.xml ../qemuxml2argvdata/disk-nvme.xml
|
tests/qemuxml2xmloutdata/disk-nvme.x86_64-latest.xml ../qemuxml2argvdata/disk-nvme.xml
|
||||||
tests/qemuxml2xmloutdata/disk-virtio-queues.x86_64-latest.xml ../qemuxml2argvdata/disk-virtio-queues.xml
|
tests/qemuxml2xmloutdata/disk-virtio-queues.x86_64-latest.xml ../qemuxml2argvdata/disk-virtio-queues.xml
|
||||||
@ -186,9 +144,6 @@ tests/qemuxml2xmloutdata/iothreads-ids-pool-sizes.x86_64-latest.xml ../qemuxml2a
|
|||||||
tests/qemuxml2xmloutdata/kvm-features-off.xml ../qemuxml2argvdata/kvm-features-off.xml
|
tests/qemuxml2xmloutdata/kvm-features-off.xml ../qemuxml2argvdata/kvm-features-off.xml
|
||||||
tests/qemuxml2xmloutdata/kvm-features.xml ../qemuxml2argvdata/kvm-features.xml
|
tests/qemuxml2xmloutdata/kvm-features.xml ../qemuxml2argvdata/kvm-features.xml
|
||||||
tests/qemuxml2xmloutdata/luks-disks.x86_64-latest.xml ../qemuxml2argvdata/luks-disks.xml
|
tests/qemuxml2xmloutdata/luks-disks.x86_64-latest.xml ../qemuxml2argvdata/luks-disks.xml
|
||||||
tests/qemuxml2xmloutdata/mach-virt-console-native.xml mach-virt-serial-compat.xml
|
|
||||||
tests/qemuxml2xmloutdata/mach-virt-serial+console-native.xml mach-virt-serial-compat.xml
|
|
||||||
tests/qemuxml2xmloutdata/mach-virt-serial-native.xml mach-virt-serial-compat.xml
|
|
||||||
tests/qemuxml2xmloutdata/memfd-memory-default-hugepage.x86_64-latest.xml ../qemuxml2argvdata/memfd-memory-default-hugepage.xml
|
tests/qemuxml2xmloutdata/memfd-memory-default-hugepage.x86_64-latest.xml ../qemuxml2argvdata/memfd-memory-default-hugepage.xml
|
||||||
tests/qemuxml2xmloutdata/memfd-memory-numa.x86_64-latest.xml ../qemuxml2argvdata/memfd-memory-numa.xml
|
tests/qemuxml2xmloutdata/memfd-memory-numa.x86_64-latest.xml ../qemuxml2argvdata/memfd-memory-numa.xml
|
||||||
tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-access.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-access.xml
|
tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-access.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-access.xml
|
||||||
@ -197,9 +152,9 @@ tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-label.xml ../qemuxml2argvdata/mem
|
|||||||
tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-pmem.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-pmem.xml
|
tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-pmem.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-pmem.xml
|
||||||
tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-readonly.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-readonly.xml
|
tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-readonly.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-readonly.xml
|
||||||
tests/qemuxml2xmloutdata/memory-hotplug-nvdimm.xml ../qemuxml2argvdata/memory-hotplug-nvdimm.xml
|
tests/qemuxml2xmloutdata/memory-hotplug-nvdimm.xml ../qemuxml2argvdata/memory-hotplug-nvdimm.xml
|
||||||
tests/qemuxml2xmloutdata/memory-hotplug-ppc64-nonuma.xml ../qemuxml2argvdata/memory-hotplug-ppc64-nonuma.xml
|
|
||||||
tests/qemuxml2xmloutdata/memory-hotplug-virtio-mem.x86_64-latest.xml ../qemuxml2argvdata/memory-hotplug-virtio-mem.xml
|
tests/qemuxml2xmloutdata/memory-hotplug-virtio-mem.x86_64-latest.xml ../qemuxml2argvdata/memory-hotplug-virtio-mem.xml
|
||||||
tests/qemuxml2xmloutdata/memory-hotplug-virtio-pmem.x86_64-latest.xml ../qemuxml2argvdata/memory-hotplug-virtio-pmem.xml
|
tests/qemuxml2xmloutdata/memory-hotplug-virtio-pmem.x86_64-latest.xml ../qemuxml2argvdata/memory-hotplug-virtio-pmem.xml
|
||||||
|
tests/qemuxml2xmloutdata/net-mtu.xml ../qemuxml2argvdata/net-mtu.xml
|
||||||
tests/qemuxml2xmloutdata/net-user-addr.xml ../qemuxml2argvdata/net-user-addr.xml
|
tests/qemuxml2xmloutdata/net-user-addr.xml ../qemuxml2argvdata/net-user-addr.xml
|
||||||
tests/qemuxml2xmloutdata/net-user-passt.xml ../qemuxml2argvdata/net-user-passt.xml
|
tests/qemuxml2xmloutdata/net-user-passt.xml ../qemuxml2argvdata/net-user-passt.xml
|
||||||
tests/qemuxml2xmloutdata/net-virtio-rss.x86_64-latest.xml ../qemuxml2argvdata/net-virtio-rss.xml
|
tests/qemuxml2xmloutdata/net-virtio-rss.x86_64-latest.xml ../qemuxml2argvdata/net-virtio-rss.xml
|
||||||
@ -227,12 +182,11 @@ tests/qemuxml2xmloutdata/tpm-external.x86_64-latest.xml ../qemuxml2argvdata/tpm-
|
|||||||
tests/qemuxml2xmloutdata/tpm-passthrough-crb.x86_64-latest.xml ../qemuxml2argvdata/tpm-passthrough-crb.xml
|
tests/qemuxml2xmloutdata/tpm-passthrough-crb.x86_64-latest.xml ../qemuxml2argvdata/tpm-passthrough-crb.xml
|
||||||
tests/qemuxml2xmloutdata/tpm-passthrough.x86_64-latest.xml ../qemuxml2argvdata/tpm-passthrough.xml
|
tests/qemuxml2xmloutdata/tpm-passthrough.x86_64-latest.xml ../qemuxml2argvdata/tpm-passthrough.xml
|
||||||
tests/qemuxml2xmloutdata/user-aliases.x86_64-latest.xml ../qemuxml2argvdata/user-aliases.xml
|
tests/qemuxml2xmloutdata/user-aliases.x86_64-latest.xml ../qemuxml2argvdata/user-aliases.xml
|
||||||
tests/qemuxml2xmloutdata/vcpu-placement-static.xml ../qemuxml2argvdata/vcpu-placement-static.xml
|
tests/qemuxml2xmloutdata/vcpu-placement-static.x86_64-latest.xml ../qemuxml2argvdata/vcpu-placement-static.xml
|
||||||
tests/qemuxml2xmloutdata/vhost-user-fs-fd-memory.x86_64-latest.xml ../qemuxml2argvdata/vhost-user-fs-fd-memory.xml
|
tests/qemuxml2xmloutdata/vhost-user-fs-fd-memory.x86_64-latest.xml ../qemuxml2argvdata/vhost-user-fs-fd-memory.xml
|
||||||
tests/qemuxml2xmloutdata/vhost-user-fs-hugepages.x86_64-latest.xml ../qemuxml2argvdata/vhost-user-fs-hugepages.xml
|
tests/qemuxml2xmloutdata/vhost-user-fs-hugepages.x86_64-latest.xml ../qemuxml2argvdata/vhost-user-fs-hugepages.xml
|
||||||
tests/qemuxml2xmloutdata/vhost-user-fs-sock.x86_64-latest.xml ../qemuxml2argvdata/vhost-user-fs-sock.xml
|
tests/qemuxml2xmloutdata/vhost-user-fs-sock.x86_64-latest.xml ../qemuxml2argvdata/vhost-user-fs-sock.xml
|
||||||
tests/qemuxml2xmloutdata/vhost-vsock-ccw-iommu.s390x-latest.xml ../qemuxml2argvdata/vhost-vsock-ccw-iommu.xml
|
tests/qemuxml2xmloutdata/vhost-vsock-ccw-iommu.s390x-latest.xml ../qemuxml2argvdata/vhost-vsock-ccw-iommu.xml
|
||||||
tests/qemuxml2xmloutdata/vhost-vsock-ccw.xml ../qemuxml2argvdata/vhost-vsock-ccw.xml
|
|
||||||
tests/qemuxml2xmloutdata/vhost-vsock.x86_64-latest.xml ../qemuxml2argvdata/vhost-vsock.xml
|
tests/qemuxml2xmloutdata/vhost-vsock.x86_64-latest.xml ../qemuxml2argvdata/vhost-vsock.xml
|
||||||
tests/qemuxml2xmloutdata/video-qxl-resolution.xml ../qemuxml2argvdata/video-qxl-resolution.xml
|
tests/qemuxml2xmloutdata/video-qxl-resolution.xml ../qemuxml2argvdata/video-qxl-resolution.xml
|
||||||
tests/qemuxml2xmloutdata/video-virtio-vga-gpu-gl.x86_64-latest.xml ../qemuxml2argvdata/video-virtio-vga-gpu-gl.xml
|
tests/qemuxml2xmloutdata/video-virtio-vga-gpu-gl.x86_64-latest.xml ../qemuxml2argvdata/video-virtio-vga-gpu-gl.xml
|
||||||
@ -240,6 +194,22 @@ tests/qemuxml2xmloutdata/virtio-options.x86_64-latest.xml ../qemuxml2argvdata/vi
|
|||||||
tests/qemuxml2xmloutdata/x86_64-default-cpu-tcg-features.x86_64-latest.xml ../qemuxml2argvdata/x86_64-default-cpu-tcg-features.xml
|
tests/qemuxml2xmloutdata/x86_64-default-cpu-tcg-features.x86_64-latest.xml ../qemuxml2argvdata/x86_64-default-cpu-tcg-features.xml
|
||||||
tests/vircaps2xmldata/linux-basic-dies/system/cpu ../../../virhostcpudata/linux-with-die/cpu
|
tests/vircaps2xmldata/linux-basic-dies/system/cpu ../../../virhostcpudata/linux-with-die/cpu
|
||||||
tests/vircaps2xmldata/linux-basic-dies/system/node ../../../virhostcpudata/linux-with-die/node
|
tests/vircaps2xmldata/linux-basic-dies/system/node ../../../virhostcpudata/linux-with-die/node
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu0/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu1/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu10/node2 ../../node/node2
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu11/node2 ../../node/node2
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu12/node3 ../../node/node3
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu13/node3 ../../node/node3
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu14/node3 ../../node/node3
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu15/node3 ../../node/node3
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu2/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu3/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu4/node1 ../../node/node1
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu5/node1 ../../node/node1
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu6/node1 ../../node/node1
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu7/node1 ../../node/node1
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu8/node2 ../../node/node2
|
||||||
|
tests/vircaps2xmldata/linux-basic/system/cpu/cpu9/node2 ../../node/node2
|
||||||
tests/vircaps2xmldata/linux-basic/system/node/node0/cpu0 ../../cpu/cpu0
|
tests/vircaps2xmldata/linux-basic/system/node/node0/cpu0 ../../cpu/cpu0
|
||||||
tests/vircaps2xmldata/linux-basic/system/node/node0/cpu1 ../../cpu/cpu1
|
tests/vircaps2xmldata/linux-basic/system/node/node0/cpu1 ../../cpu/cpu1
|
||||||
tests/vircaps2xmldata/linux-basic/system/node/node0/cpu2 ../../cpu/cpu2
|
tests/vircaps2xmldata/linux-basic/system/node/node0/cpu2 ../../cpu/cpu2
|
||||||
@ -256,6 +226,14 @@ tests/vircaps2xmldata/linux-basic/system/node/node3/cpu12 ../../cpu/cpu12
|
|||||||
tests/vircaps2xmldata/linux-basic/system/node/node3/cpu13 ../../cpu/cpu13
|
tests/vircaps2xmldata/linux-basic/system/node/node3/cpu13 ../../cpu/cpu13
|
||||||
tests/vircaps2xmldata/linux-basic/system/node/node3/cpu14 ../../cpu/cpu14
|
tests/vircaps2xmldata/linux-basic/system/node/node3/cpu14 ../../cpu/cpu14
|
||||||
tests/vircaps2xmldata/linux-basic/system/node/node3/cpu15 ../../cpu/cpu15
|
tests/vircaps2xmldata/linux-basic/system/node/node3/cpu15 ../../cpu/cpu15
|
||||||
|
tests/vircaps2xmldata/linux-caches/system/cpu/cpu0/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-caches/system/cpu/cpu1/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-caches/system/cpu/cpu2/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-caches/system/cpu/cpu3/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-caches/system/cpu/cpu4/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-caches/system/cpu/cpu5/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-caches/system/cpu/cpu6/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-caches/system/cpu/cpu7/node0 ../../node/node0
|
||||||
tests/vircaps2xmldata/linux-caches/system/node/node0/cpu0 ../../cpu/cpu0
|
tests/vircaps2xmldata/linux-caches/system/node/node0/cpu0 ../../cpu/cpu0
|
||||||
tests/vircaps2xmldata/linux-caches/system/node/node0/cpu1 ../../cpu/cpu1
|
tests/vircaps2xmldata/linux-caches/system/node/node0/cpu1 ../../cpu/cpu1
|
||||||
tests/vircaps2xmldata/linux-caches/system/node/node0/cpu2 ../../cpu/cpu2
|
tests/vircaps2xmldata/linux-caches/system/node/node0/cpu2 ../../cpu/cpu2
|
||||||
@ -268,8 +246,21 @@ tests/vircaps2xmldata/linux-hmat/system/node/node0/access1/targets/node1 ../../.
|
|||||||
tests/vircaps2xmldata/linux-resctrl-cdp/system ../linux-resctrl/system/
|
tests/vircaps2xmldata/linux-resctrl-cdp/system ../linux-resctrl/system/
|
||||||
tests/vircaps2xmldata/linux-resctrl-cmt/system ../linux-resctrl/system
|
tests/vircaps2xmldata/linux-resctrl-cmt/system ../linux-resctrl/system
|
||||||
tests/vircaps2xmldata/linux-resctrl-fake-feature/system ../linux-resctrl/system
|
tests/vircaps2xmldata/linux-resctrl-fake-feature/system ../linux-resctrl/system
|
||||||
|
tests/vircaps2xmldata/linux-resctrl-skx-twocaches/system/cpu/cpu0/node0 ../../node/node0
|
||||||
tests/vircaps2xmldata/linux-resctrl-skx-twocaches/system/node/node0/cpu0 ../../cpu/cpu0
|
tests/vircaps2xmldata/linux-resctrl-skx-twocaches/system/node/node0/cpu0 ../../cpu/cpu0
|
||||||
tests/vircaps2xmldata/linux-resctrl-skx/system/node/node0/cpu0 ../../cpu/cpu0
|
tests/vircaps2xmldata/linux-resctrl-skx/system/node/node0/cpu0 ../../cpu/cpu0
|
||||||
|
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/node1 ../../node/node1
|
||||||
|
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/node1 ../../node/node1
|
||||||
|
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/node0 ../../node/node0
|
||||||
|
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/node1 ../../node/node1
|
||||||
|
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/node1 ../../node/node1
|
||||||
|
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/node1 ../../node/node1
|
||||||
|
tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/node1 ../../node/node1
|
||||||
tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu0 ../../cpu/cpu0
|
tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu0 ../../cpu/cpu0
|
||||||
tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu1 ../../cpu/cpu1
|
tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu1 ../../cpu/cpu1
|
||||||
tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu2 ../../cpu/cpu2
|
tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu2 ../../cpu/cpu2
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user