mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
qemu: Instantiate pflash via -machine when using blockdev
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@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
c8eb99eebf
commit
86085c9a2f
@ -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:
|
||||
@ -10263,7 +10269,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;
|
||||
|
@ -6291,6 +6291,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)
|
||||
@ -8020,6 +8022,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.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user