Install the convertor function which enables the internals that will use -blockdev to make qemu open the firmware image and stop using -drive. Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> --- src/qemu/qemu_command.c | 14 ++++++++++---- src/qemu/qemu_process.c | 6 ++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index ca864eaa6b..43e76a4e5c 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -9425,7 +9425,8 @@ qemuBuildRedirdevCommandLine(virLogManagerPtr logManager, static void qemuBuldDomainLoaderPflashCommandLine(virCommandPtr cmd, - virDomainLoaderDefPtr loader) + virDomainLoaderDefPtr loader, + virQEMUCapsPtr qemuCaps) { g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER; int unit = 0; @@ -9437,6 +9438,10 @@ qemuBuldDomainLoaderPflashCommandLine(virCommandPtr cmd, NULL); } + /* with blockdev we instantiate the pflash when formatting -machine */ + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) + return; + virBufferAddLit(&buf, "file="); virQEMUBuildBufferEscapeComma(&buf, loader->path); virBufferAsprintf(&buf, ",if=pflash,format=raw,unit=%d", unit); @@ -9464,7 +9469,8 @@ qemuBuldDomainLoaderPflashCommandLine(virCommandPtr cmd, static void qemuBuildDomainLoaderCommandLine(virCommandPtr cmd, - virDomainDefPtr def) + virDomainDefPtr def, + virQEMUCapsPtr qemuCaps) { virDomainLoaderDefPtr loader = def->os.loader; @@ -9478,7 +9484,7 @@ qemuBuildDomainLoaderCommandLine(virCommandPtr cmd, break; case VIR_DOMAIN_LOADER_TYPE_PFLASH: - qemuBuldDomainLoaderPflashCommandLine(cmd, loader); + qemuBuldDomainLoaderPflashCommandLine(cmd, loader, qemuCaps); break; case VIR_DOMAIN_LOADER_TYPE_NONE: @@ -10265,7 +10271,7 @@ qemuBuildCommandLine(virQEMUDriverPtr driver, if (qemuBuildCpuCommandLine(cmd, driver, def, qemuCaps) < 0) return NULL; - qemuBuildDomainLoaderCommandLine(cmd, def); + qemuBuildDomainLoaderCommandLine(cmd, def, qemuCaps); if (!migrateURI && !snapshot && qemuDomainAlignMemorySizes(def) < 0) return NULL; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 246934c634..2743af60a0 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6293,6 +6293,8 @@ qemuProcessPrepareDomain(virQEMUDriverPtr driver, VIR_DEBUG("Prepare bios/uefi paths"); if (qemuFirmwareFillDomain(driver, vm, flags) < 0) goto cleanup; + if (qemuDomainInitializePflashStorageSource(vm) < 0) + goto cleanup; VIR_DEBUG("Preparing external devices"); if (qemuExtDevicesPrepareDomain(driver, vm) < 0) @@ -8024,6 +8026,10 @@ qemuProcessReconnect(void *opaque) if (qemuDomainPerfRestart(obj) < 0) goto error; + /* recreate the pflash storage sources */ + if (qemuDomainInitializePflashStorageSource(obj) < 0) + goto error; + /* XXX: Need to change as long as lock is introduced for * qemu_driver->sharedDevices. */ -- 2.23.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list