]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
src: Introduce and use virDomainDefHasOldStyleUEFI() and virDomainDefHasOldStyleROUEFI()
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 7 Jan 2020 09:34:03 +0000 (10:34 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 7 Jan 2020 15:26:47 +0000 (16:26 +0100)
These functions are meant to replace verbose check for the old
style of specifying UEFI with a simple function call.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
src/bhyve/bhyve_driver.c
src/conf/domain_conf.c
src/conf/domain_conf.h
src/libvirt_private.syms
src/libxl/libxl_conf.c
src/libxl/xen_xl.c
src/qemu/qemu_domain.c
src/qemu/qemu_driver.c

index a764b4d4ed8cfd49f59bb17dc117c805d8bf63ea..5b8fba7467a558e7e0efea23236810c108bcba94 100644 (file)
@@ -704,8 +704,7 @@ bhyveConnectDomainXMLToNative(virConnectPtr conn,
     if (def->os.bootloader == NULL &&
         def->os.loader) {
 
-        if ((def->os.loader->readonly != VIR_TRISTATE_BOOL_YES) ||
-            (def->os.loader->type != VIR_DOMAIN_LOADER_TYPE_PFLASH)) {
+        if (!virDomainDefHasOldStyleROUEFI(def)) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                            _("Only read-only pflash is supported."));
             goto cleanup;
index 69967d4cb7dbfbd00a89d316fc506c5646a20b23..137b76b9c07892bfcb4399a6a052fd2ada2fa12e 100644 (file)
@@ -31526,6 +31526,22 @@ virDomainDefHasMdevHostdev(const virDomainDef *def)
 }
 
 
+bool
+virDomainDefHasOldStyleUEFI(const virDomainDef *def)
+{
+    return def->os.loader &&
+           def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH;
+}
+
+
+bool
+virDomainDefHasOldStyleROUEFI(const virDomainDef *def)
+{
+    return virDomainDefHasOldStyleUEFI(def) &&
+           def->os.loader->readonly == VIR_TRISTATE_BOOL_YES;
+}
+
+
 /**
  * virDomainGraphicsDefHasOpenGL:
  * @def: domain definition
index e012975fca879a1986e7da61a482f9f722341a62..e6b06a8eba1c48c07aa9e09b024bc1ab1d2df540 100644 (file)
@@ -3673,6 +3673,12 @@ virDomainDefHasVFIOHostdev(const virDomainDef *def);
 bool
 virDomainDefHasMdevHostdev(const virDomainDef *def);
 
+bool
+virDomainDefHasOldStyleUEFI(const virDomainDef *def);
+
+bool
+virDomainDefHasOldStyleROUEFI(const virDomainDef *def);
+
 bool
 virDomainGraphicsDefHasOpenGL(const virDomainDef *def);
 
index d8f049b96097872356a0c61350269c011d4ef253..1f4d2818497f6d7d6463a0a05d8b2af067ca1518 100644 (file)
@@ -311,6 +311,8 @@ virDomainDefHasMdevHostdev;
 virDomainDefHasMemballoon;
 virDomainDefHasMemoryHotplug;
 virDomainDefHasNVMeDisk;
+virDomainDefHasOldStyleROUEFI;
+virDomainDefHasOldStyleUEFI;
 virDomainDefHasUSB;
 virDomainDefHasVcpusOffline;
 virDomainDefHasVFIOHostdev;
index 1be2a789d5036d7c59737e636de2f90de37917e7..2488bb9d32d8563222b30785f96f9a0cca40615d 100644 (file)
@@ -545,8 +545,7 @@ libxlMakeDomBuildInfo(virDomainDefPtr def,
          * future, Xen will support a user-specified firmware path. See
          * http://lists.xenproject.org/archives/html/xen-devel/2016-03/msg01628.html
          */
-        if (def->os.loader &&
-            def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH)
+        if (virDomainDefHasOldStyleUEFI(def))
             b_info->u.hvm.bios = LIBXL_BIOS_TYPE_OVMF;
 
         if (def->emulator) {
index ebcea41d1c0de528c927073b14c8dc676e022f96..91b1825399e6efd2cfb7a15e6e171cdbfff65a68 100644 (file)
@@ -1228,11 +1228,9 @@ xenFormatXLOS(virConfPtr conf, virDomainDefPtr def)
         if (xenConfigSetString(conf, "builder", "hvm") < 0)
             return -1;
 
-        if (def->os.loader &&
-            def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH) {
-            if (xenConfigSetString(conf, "bios", "ovmf") < 0)
-                return -1;
-        }
+        if (virDomainDefHasOldStyleUEFI(def) &&
+            xenConfigSetString(conf, "bios", "ovmf") < 0)
+            return -1;
 
         if (def->os.slic_table &&
             xenConfigSetString(conf, "acpi_firmware", def->os.slic_table) < 0)
index 065c9e97a907bd35b91cb462211d3b3c9700e8d2..788caf864ca3084b509962763866669e68bc234b 100644 (file)
@@ -5697,8 +5697,7 @@ qemuDomainDefValidate(const virDomainDef *def,
 
     /* On x86, UEFI requires ACPI */
     if ((def->os.firmware == VIR_DOMAIN_OS_DEF_FIRMWARE_EFI ||
-         (def->os.loader &&
-          def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH)) &&
+         virDomainDefHasOldStyleUEFI(def)) &&
         ARCH_IS_X86(def->os.arch) &&
         def->features[VIR_DOMAIN_FEATURE_ACPI] != VIR_TRISTATE_SWITCH_ON) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
@@ -5710,8 +5709,7 @@ qemuDomainDefValidate(const virDomainDef *def,
     if (def->features[VIR_DOMAIN_FEATURE_ACPI] == VIR_TRISTATE_SWITCH_ON &&
         def->os.arch == VIR_ARCH_AARCH64 &&
         (def->os.firmware != VIR_DOMAIN_OS_DEF_FIRMWARE_EFI &&
-         (!def->os.loader ||
-          def->os.loader->type != VIR_DOMAIN_LOADER_TYPE_PFLASH))) {
+         !virDomainDefHasOldStyleUEFI(def))) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                        _("ACPI requires UEFI on this architecture"));
         goto cleanup;
@@ -16608,12 +16606,9 @@ void
 qemuDomainNVRAMPathGenerate(virQEMUDriverConfigPtr cfg,
                             virDomainDefPtr def)
 {
-    if (def->os.loader &&
-        def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH &&
-        def->os.loader->readonly == VIR_TRISTATE_BOOL_YES &&
+    if (virDomainDefHasOldStyleROUEFI(def) &&
         !def->os.loader->nvram)
         qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram);
-
 }
 
 
@@ -16740,8 +16735,7 @@ qemuDomainInitializePflashStorageSource(virDomainObjPtr vm)
     if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV))
         return 0;
 
-    if (!def->os.loader ||
-        def->os.loader->type != VIR_DOMAIN_LOADER_TYPE_PFLASH)
+    if (!virDomainDefHasOldStyleUEFI(def))
         return 0;
 
     if (!(pflash0 = virStorageSourceNew()))
index ae54c0023941c21e1cf355e62ed1384edaf440c7..34d1374d8721a97a48db757a0348f681c3bce054 100644 (file)
@@ -15218,8 +15218,7 @@ qemuDomainSnapshotPrepare(virDomainObjPtr vm,
      * Avoid the issues by forbidding internal snapshot with pflash completely.
      */
     if (found_internal &&
-        vm->def->os.loader &&
-        vm->def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH) {
+        virDomainDefHasOldStyleUEFI(vm->def)) {
         virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
                        _("internal snapshots of a VM with pflash based "
                          "firmware are not supported"));