|
|
397dc2 |
From 1824bb0b44b47af95f50afd626776acfba91174d Mon Sep 17 00:00:00 2001
|
|
|
397dc2 |
Message-Id: <1824bb0b44b47af95f50afd626776acfba91174d@dist-git>
|
|
|
397dc2 |
From: Michal Privoznik <mprivozn@redhat.com>
|
|
|
397dc2 |
Date: Wed, 7 Oct 2020 13:20:04 +0200
|
|
|
397dc2 |
Subject: [PATCH] qemuFirmwareFillDomain: Fill NVRAM template on migration too
|
|
|
397dc2 |
|
|
|
397dc2 |
In 8e1804f9f66 I've tried to fix the following use case: domain
|
|
|
397dc2 |
is started with path to UEFI only and relies on libvirt to figure
|
|
|
397dc2 |
out corresponding NVRAM template to create a per-domain copy
|
|
|
397dc2 |
from. The fix consisted of having a check tailored exactly for
|
|
|
397dc2 |
this use case and if it's hit then using FW autoselection to
|
|
|
397dc2 |
figure it out. Unfortunately, the NVRAM template is not saved in
|
|
|
397dc2 |
the inactive XML (well, the domain might be transient anyway).
|
|
|
397dc2 |
Then, as a part of that check we see whether the per-domain copy
|
|
|
397dc2 |
doesn't exist already and if it does then no template is looked
|
|
|
397dc2 |
up hence no template will appear in the live XML.
|
|
|
397dc2 |
|
|
|
397dc2 |
This works, until the domain is migrated. At the destination, the
|
|
|
397dc2 |
per-domain copy will not exist so we need to know the template to
|
|
|
397dc2 |
create the per-domain copy from. But we don't even get to the
|
|
|
397dc2 |
check because we are not starting a fresh new domain and thus the
|
|
|
397dc2 |
qemuFirmwareFillDomain() function quits early.
|
|
|
397dc2 |
|
|
|
397dc2 |
The solution is to switch order of these two checks. That is
|
|
|
397dc2 |
evaluate the check for the old style before checking flags.
|
|
|
397dc2 |
|
|
|
397dc2 |
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1852910
|
|
|
397dc2 |
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
|
397dc2 |
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
|
|
|
397dc2 |
(cherry picked from commit c43622f06e295edcb9cedf33583f0bd18fb04b10)
|
|
|
397dc2 |
|
|
|
397dc2 |
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1880418
|
|
|
397dc2 |
|
|
|
397dc2 |
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
|
397dc2 |
Message-Id: <9b91110a238eba22f4b876e7b15a25d5113ee91e.1602069592.git.mprivozn@redhat.com>
|
|
|
397dc2 |
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
|
|
|
397dc2 |
---
|
|
|
397dc2 |
src/qemu/qemu_firmware.c | 8 +++++---
|
|
|
397dc2 |
1 file changed, 5 insertions(+), 3 deletions(-)
|
|
|
397dc2 |
|
|
|
397dc2 |
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
|
|
|
397dc2 |
index 68e2c6b40f..c84d03f0a8 100644
|
|
|
397dc2 |
--- a/src/qemu/qemu_firmware.c
|
|
|
397dc2 |
+++ b/src/qemu/qemu_firmware.c
|
|
|
397dc2 |
@@ -1241,9 +1241,6 @@ qemuFirmwareFillDomain(virQEMUDriverPtr driver,
|
|
|
397dc2 |
size_t i;
|
|
|
397dc2 |
int ret = -1;
|
|
|
397dc2 |
|
|
|
397dc2 |
- if (!(flags & VIR_QEMU_PROCESS_START_NEW))
|
|
|
397dc2 |
- return 0;
|
|
|
397dc2 |
-
|
|
|
397dc2 |
/* Fill in FW paths if either os.firmware is enabled, or
|
|
|
397dc2 |
* loader path was provided with no nvram varstore. */
|
|
|
397dc2 |
if (def->os.firmware == VIR_DOMAIN_OS_DEF_FIRMWARE_NONE) {
|
|
|
397dc2 |
@@ -1259,6 +1256,11 @@ qemuFirmwareFillDomain(virQEMUDriverPtr driver,
|
|
|
397dc2 |
/* ... then we want to consult JSON FW descriptors first,
|
|
|
397dc2 |
* but we don't want to fail if we haven't found a match. */
|
|
|
397dc2 |
needResult = false;
|
|
|
397dc2 |
+ } else {
|
|
|
397dc2 |
+ /* Domain has FW autoselection enabled => do nothing if
|
|
|
397dc2 |
+ * we are not starting it from scratch. */
|
|
|
397dc2 |
+ if (!(flags & VIR_QEMU_PROCESS_START_NEW))
|
|
|
397dc2 |
+ return 0;
|
|
|
397dc2 |
}
|
|
|
397dc2 |
|
|
|
397dc2 |
if ((nfirmwares = qemuFirmwareFetchParsedConfigs(driver->privileged,
|
|
|
397dc2 |
--
|
|
|
397dc2 |
2.28.0
|
|
|
397dc2 |
|