libxl: Add support for custom firmware path in config converter

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Jim Fehlig 2023-02-13 14:30:31 -07:00
parent bf3be5b76e
commit 705525cbec
3 changed files with 16 additions and 6 deletions

View File

@ -104,18 +104,23 @@ xenParseXLOS(virConf *conf, virDomainDef *def, virCaps *caps)
if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
g_autofree char *bios = NULL; g_autofree char *bios = NULL;
g_autofree char *bios_path = NULL;
g_autofree char *boot = NULL; g_autofree char *boot = NULL;
int val = 0; int val = 0;
if (xenConfigGetString(conf, "bios", &bios, NULL) < 0) if (xenConfigGetString(conf, "bios", &bios, NULL) < 0)
return -1; return -1;
if (xenConfigGetString(conf, "bios_path_override", &bios_path, NULL) < 0)
return -1;
if (bios && STREQ(bios, "ovmf")) { if (bios && STREQ(bios, "ovmf")) {
def->os.loader = virDomainLoaderDefNew(); def->os.loader = virDomainLoaderDefNew();
def->os.loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH; def->os.loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH;
def->os.loader->readonly = VIR_TRISTATE_BOOL_YES; def->os.loader->readonly = VIR_TRISTATE_BOOL_YES;
if (bios_path)
def->os.loader->path = g_strdup(LIBXL_FIRMWARE_DIR "/ovmf.bin"); def->os.loader->path = g_strdup(bios_path);
else
def->os.loader->path = g_strdup(LIBXL_FIRMWARE_DIR "/ovmf.bin");
} else { } else {
for (i = 0; i < caps->nguests; i++) { for (i = 0; i < caps->nguests; i++) {
if (caps->guests[i]->ostype == VIR_DOMAIN_OSTYPE_HVM && if (caps->guests[i]->ostype == VIR_DOMAIN_OSTYPE_HVM &&
@ -1119,9 +1124,13 @@ xenFormatXLOS(virConf *conf, virDomainDef *def)
if (xenConfigSetString(conf, "builder", "hvm") < 0) if (xenConfigSetString(conf, "builder", "hvm") < 0)
return -1; return -1;
if (virDomainDefHasOldStyleUEFI(def) && if (virDomainDefHasOldStyleUEFI(def)) {
xenConfigSetString(conf, "bios", "ovmf") < 0) if (xenConfigSetString(conf, "bios", "ovmf") < 0)
return -1; return -1;
if (def->os.loader->path &&
(xenConfigSetString(conf, "bios_path_override", def->os.loader->path) < 0))
return -1;
}
if (def->os.slic_table && if (def->os.slic_table &&
xenConfigSetString(conf, "acpi_firmware", def->os.slic_table) < 0) xenConfigSetString(conf, "acpi_firmware", def->os.slic_table) < 0)

View File

@ -22,5 +22,6 @@ parallel = "none"
serial = "none" serial = "none"
builder = "hvm" builder = "hvm"
bios = "ovmf" bios = "ovmf"
bios_path_override = "/usr/share/qemu/ovmf-x86_64-xen.bin"
boot = "d" 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" ] 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" ]

View File

@ -6,7 +6,7 @@
<vcpu placement='static'>1</vcpu> <vcpu placement='static'>1</vcpu>
<os> <os>
<type arch='x86_64' machine='xenfv'>hvm</type> <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'/> <boot dev='cdrom'/>
</os> </os>
<features> <features>