If efi-firmware is set, use the correct EFI code file to create the Qemu command line. Signed-off-by: Christian Ludwig --- src/PVE/QemuServer/OVMF.pm | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/PVE/QemuServer/OVMF.pm b/src/PVE/QemuServer/OVMF.pm index 67665c7c..fe301353 100644 --- a/src/PVE/QemuServer/OVMF.pm +++ b/src/PVE/QemuServer/OVMF.pm @@ -123,6 +123,9 @@ my sub print_ovmf_drive_commandlines { if $cvm_type && $cvm_type eq 'tdx'; my ($ovmf_code, $ovmf_vars) = get_ovmf_files($arch, $d, $q35, $cvm_type); + if ($conf->{'efi-firmware'}) { + $ovmf_code = PVE::Storage::path($storecfg, $conf->{'efi-firmware'}); + } my $ovmf_vars_size = file_get_size($ovmf_vars); my $var_drive_str = "if=pflash,unit=1,id=drive-efidisk0"; @@ -219,6 +222,9 @@ my sub generate_ovmf_blockdev { if $cvm_type && $cvm_type eq 'snp'; my ($ovmf_code, $ovmf_vars) = get_ovmf_files($arch, $drive, $q35, $cvm_type); + if ($conf->{'efi-firmware'}) { + $ovmf_code = PVE::Storage::path($storecfg, $conf->{'efi-firmware'}); + } my $ovmf_code_blockdev = { driver => 'raw', @@ -268,6 +274,12 @@ sub print_ovmf_commandline { my $cvm_type = $hw_info->{'cvm-type'}; + if ($conf->{'efi-firmware'}) { + my $fw_path = PVE::Storage::path($storecfg, $conf->{'efi-firmware'}); + die "efi-firmware volume '$conf->{'efi-firmware'}' not found at '$fw_path'\n" + if !file_exists($fw_path); + } + my $cmd = []; my $machine_flags = []; @@ -277,7 +289,13 @@ sub print_ovmf_commandline { "EFI disks are not supported with Confidential Virtual Machines and will be ignored" ); } - push $cmd->@*, '-bios', get_ovmf_files($hw_info->{arch}, undef, undef, $cvm_type); + my $bios_path; + if ($conf->{'efi-firmware'}) { + $bios_path = PVE::Storage::path($storecfg, $conf->{'efi-firmware'}); + } else { + ($bios_path) = get_ovmf_files($hw_info->{arch}, undef, undef, $cvm_type); + } + push $cmd->@*, '-bios', $bios_path; } else { if ($version_guard->(10, 0, 0)) { # for the switch to -blockdev my ($code_blockdev, $vars_blockdev, $throttle_group) = -- 2.34.1