Sync with stable
This commit is contained in:
parent
9fd62ba637
commit
53ed6e9641
@ -1,38 +0,0 @@
|
||||
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
|
@ -1,148 +0,0 @@
|
||||
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
|
@ -1,392 +0,0 @@
|
||||
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
|
File diff suppressed because it is too large
Load Diff
@ -1,79 +0,0 @@
|
||||
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
|
@ -1,105 +0,0 @@
|
||||
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
|
@ -1,104 +0,0 @@
|
||||
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
|
@ -1,50 +0,0 @@
|
||||
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
|
@ -1,70 +0,0 @@
|
||||
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
|
@ -1,77 +0,0 @@
|
||||
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
|
@ -1,340 +0,0 @@
|
||||
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
|
@ -1,46 +0,0 @@
|
||||
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
|
@ -1,48 +0,0 @@
|
||||
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
|
@ -1,321 +0,0 @@
|
||||
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
|
@ -1,178 +0,0 @@
|
||||
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,175 +0,0 @@
|
||||
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
|
@ -1,97 +0,0 @@
|
||||
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,836 +0,0 @@
|
||||
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,56 +0,0 @@
|
||||
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
|
File diff suppressed because it is too large
Load Diff
@ -1,94 +0,0 @@
|
||||
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
|
@ -1,104 +0,0 @@
|
||||
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
|
@ -1,34 +0,0 @@
|
||||
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
|
@ -1,36 +0,0 @@
|
||||
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
|
@ -1,70 +0,0 @@
|
||||
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
|
@ -1,117 +0,0 @@
|
||||
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
|
@ -1,81 +0,0 @@
|
||||
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
|
@ -1,148 +0,0 @@
|
||||
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
|
@ -1,57 +0,0 @@
|
||||
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
|
File diff suppressed because it is too large
Load Diff
@ -1,119 +0,0 @@
|
||||
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
|
@ -1,118 +0,0 @@
|
||||
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
|
File diff suppressed because it is too large
Load Diff
@ -1,127 +0,0 @@
|
||||
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
|
Loading…
Reference in New Issue
Block a user