]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
libxl: Add support for custom firmware path in config converter
authorJim Fehlig <jfehlig@suse.com>
Mon, 13 Feb 2023 21:30:31 +0000 (14:30 -0700)
committerJim Fehlig <jfehlig@suse.com>
Fri, 10 Mar 2023 18:02:02 +0000 (11:02 -0700)
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/libxl/xen_xl.c
tests/xlconfigdata/test-fullvirt-ovmf.cfg
tests/xlconfigdata/test-fullvirt-ovmf.xml

index cfd56b3b05e8ae37f94cfd8d5083f70b7625bd0d..02d43d05ce7d4c272c5c281e07975e03a188278d 100644 (file)
@@ -104,18 +104,23 @@ xenParseXLOS(virConf *conf, virDomainDef *def, virCaps *caps)
 
     if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
         g_autofree char *bios = NULL;
+        g_autofree char *bios_path = NULL;
         g_autofree char *boot = NULL;
         int val = 0;
 
         if (xenConfigGetString(conf, "bios", &bios, NULL) < 0)
             return -1;
+        if (xenConfigGetString(conf, "bios_path_override", &bios_path, NULL) < 0)
+            return -1;
 
         if (bios && STREQ(bios, "ovmf")) {
             def->os.loader = virDomainLoaderDefNew();
             def->os.loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH;
             def->os.loader->readonly = VIR_TRISTATE_BOOL_YES;
-
-            def->os.loader->path = g_strdup(LIBXL_FIRMWARE_DIR "/ovmf.bin");
+            if (bios_path)
+                def->os.loader->path = g_strdup(bios_path);
+            else
+                def->os.loader->path = g_strdup(LIBXL_FIRMWARE_DIR "/ovmf.bin");
         } else {
             for (i = 0; i < caps->nguests; i++) {
                 if (caps->guests[i]->ostype == VIR_DOMAIN_OSTYPE_HVM &&
@@ -1119,9 +1124,13 @@ xenFormatXLOS(virConf *conf, virDomainDef *def)
         if (xenConfigSetString(conf, "builder", "hvm") < 0)
             return -1;
 
-        if (virDomainDefHasOldStyleUEFI(def) &&
-            xenConfigSetString(conf, "bios", "ovmf") < 0)
-            return -1;
+        if (virDomainDefHasOldStyleUEFI(def)) {
+            if (xenConfigSetString(conf, "bios", "ovmf") < 0)
+                return -1;
+            if (def->os.loader->path &&
+                (xenConfigSetString(conf, "bios_path_override", def->os.loader->path) < 0))
+                return -1;
+        }
 
         if (def->os.slic_table &&
             xenConfigSetString(conf, "acpi_firmware", def->os.slic_table) < 0)
index 4d31a81108cca94e3a7eecba4f3e16eda3e95183..77b5073005623e3f151ad8fade9ab84a62c71192 100644 (file)
@@ -22,5 +22,6 @@ parallel = "none"
 serial = "none"
 builder = "hvm"
 bios = "ovmf"
+bios_path_override = "/usr/share/qemu/ovmf-x86_64-xen.bin"
 boot = "d"
 disk = [ "format=raw,vdev=hda,access=rw,backendtype=phy,target=/dev/HostVG/XenGuest2", "format=qcow2,vdev=hdb,access=rw,backendtype=qdisk,target=/var/lib/libvirt/images/XenGuest2-home", "format=raw,vdev=hdc,access=ro,backendtype=qdisk,devtype=cdrom,target=/root/boot.iso" ]
index 8994b3ea36936a01d826743ad7c7a84334ac037b..da3954dba93e643b6b99ace14280839d833a4b5f 100644 (file)
@@ -6,7 +6,7 @@
   <vcpu placement='static'>1</vcpu>
   <os>
     <type arch='x86_64' machine='xenfv'>hvm</type>
-    <loader readonly='yes' type='pflash'>/LIBXL_FIRMWARE_DIR/ovmf.bin</loader>
+    <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x86_64-xen.bin</loader>
     <boot dev='cdrom'/>
   </os>
   <features>