]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: command: Extract formatting of -drive for pflash
authorPeter Krempa <pkrempa@redhat.com>
Fri, 1 Nov 2019 11:14:43 +0000 (12:14 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 22 Nov 2019 07:32:23 +0000 (08:32 +0100)
Extract the old way to instantiate pflash devices to hold the firmware
via -drive to a separate function so that it can later be conditionally
disabled when -blockdev will be used.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_command.c

index ca1bd125940f265a7c9a42882d249188176a50fa..c82d13483e5ff1326c1713961eee8a6000fdc0e3 100644 (file)
@@ -9416,53 +9416,61 @@ qemuBuildRedirdevCommandLine(virLogManagerPtr logManager,
 
 
 static void
-qemuBuildDomainLoaderCommandLine(virCommandPtr cmd,
-                                 virDomainDefPtr def)
+qemuBuldDomainLoaderPflashCommandLine(virCommandPtr cmd,
+                                      virDomainLoaderDefPtr loader)
 {
-    virDomainLoaderDefPtr loader = def->os.loader;
     g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
     int unit = 0;
 
-    if (!loader)
-        return;
+    if (loader->secure == VIR_TRISTATE_BOOL_YES) {
+        virCommandAddArgList(cmd,
+                             "-global",
+                             "driver=cfi.pflash01,property=secure,value=on",
+                             NULL);
+    }
 
-    switch ((virDomainLoader) loader->type) {
-    case VIR_DOMAIN_LOADER_TYPE_ROM:
-        virCommandAddArg(cmd, "-bios");
-        virCommandAddArg(cmd, loader->path);
-        break;
+    virBufferAddLit(&buf, "file=");
+    virQEMUBuildBufferEscapeComma(&buf, loader->path);
+    virBufferAsprintf(&buf, ",if=pflash,format=raw,unit=%d", unit);
+    unit++;
 
-    case VIR_DOMAIN_LOADER_TYPE_PFLASH:
+    if (loader->readonly) {
+        virBufferAsprintf(&buf, ",readonly=%s",
+                          virTristateSwitchTypeToString(loader->readonly));
+    }
 
-        if (loader->secure == VIR_TRISTATE_BOOL_YES) {
-            virCommandAddArgList(cmd,
-                                 "-global",
-                                 "driver=cfi.pflash01,property=secure,value=on",
-                                 NULL);
-        }
+    virCommandAddArg(cmd, "-drive");
+    virCommandAddArgBuffer(cmd, &buf);
 
+    if (loader->nvram) {
+        virBufferFreeAndReset(&buf);
         virBufferAddLit(&buf, "file=");
-        virQEMUBuildBufferEscapeComma(&buf, loader->path);
+        virQEMUBuildBufferEscapeComma(&buf, loader->nvram);
         virBufferAsprintf(&buf, ",if=pflash,format=raw,unit=%d", unit);
-        unit++;
-
-        if (loader->readonly) {
-            virBufferAsprintf(&buf, ",readonly=%s",
-                              virTristateSwitchTypeToString(loader->readonly));
-        }
 
         virCommandAddArg(cmd, "-drive");
         virCommandAddArgBuffer(cmd, &buf);
+    }
+}
 
-        if (loader->nvram) {
-            virBufferFreeAndReset(&buf);
-            virBufferAddLit(&buf, "file=");
-            virQEMUBuildBufferEscapeComma(&buf, loader->nvram);
-            virBufferAsprintf(&buf, ",if=pflash,format=raw,unit=%d", unit);
 
-            virCommandAddArg(cmd, "-drive");
-            virCommandAddArgBuffer(cmd, &buf);
-        }
+static void
+qemuBuildDomainLoaderCommandLine(virCommandPtr cmd,
+                                 virDomainDefPtr def)
+{
+    virDomainLoaderDefPtr loader = def->os.loader;
+
+    if (!loader)
+        return;
+
+    switch ((virDomainLoader) loader->type) {
+    case VIR_DOMAIN_LOADER_TYPE_ROM:
+        virCommandAddArg(cmd, "-bios");
+        virCommandAddArg(cmd, loader->path);
+        break;
+
+    case VIR_DOMAIN_LOADER_TYPE_PFLASH:
+        qemuBuldDomainLoaderPflashCommandLine(cmd, loader);
         break;
 
     case VIR_DOMAIN_LOADER_TYPE_NONE: