Am 11.03.25 um 14:56 schrieb Philipp Giersfeld:
> On 25/03/05 04:35PM, Fiona Ebner wrote:
>> Am 24.02.25 um 13:37 schrieb Philipp Giersfeld:
>>> This patch is for enabling AMD SEV-SNP support.
>>>
>>> Where applicable, it extends support for existing SEV(-ES) variables
>>> to SEV-SNP. This means that it retains no-debug and kernel-hashes
>>> options, but the no-key-sharing option is removed.
>>>
>>> The default policy value is identical to QEMU’s, and the therefore
>>> required option has been added to configure SMT support.
>>>
>>> The code was tested by running a VM without SEV, with SEV, SEV-ES,
>>> SEV-SNP. Each configuration was tested with and without an EFI disk
>>> attached. For SEV-enabled configurations it was also verified that the
>>> kernel actually used the respective feature.
>>>
>>> Signed-off-by: Philipp Giersfeld <philipp.giersf...@canarybit.eu>
>>> Reviewed-by: Daniel Kral <d.k...@proxmox.com>
>>> Tested-by: Markus Frank <m.fr...@proxmox.com>
>>> ---
>>>
>>>  no changes since last version
>>>
>>>  PVE/API2/Qemu.pm            |  7 +++-
>>>  PVE/QemuServer.pm           | 49 +++++++++++++++++++--------
>>>  PVE/QemuServer/CPUConfig.pm | 66 ++++++++++++++++++++++++++++---------
>>>  3 files changed, 92 insertions(+), 30 deletions(-)
>>>
>>> diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
>>> index 295260e7..4f48cf85 100644
>>> --- a/PVE/API2/Qemu.pm
>>> +++ b/PVE/API2/Qemu.pm
>>> @@ -548,8 +548,13 @@ my sub create_disks : prototype($$$$$$$$$$$) {
>>>             my $volid;
>>>             if ($ds eq 'efidisk0') {
>>>                 my $smm = 
>>> PVE::QemuServer::Machine::machine_type_is_q35($conf);
>>> +
>>> +               my $amd_sev_type = 
>>> PVE::QemuServer::CPUConfig::get_amd_sev_type($conf);
>>> +               die "SEV-SNP uses consolidated read-only firmware"
>>
>> Missing newline at the end of error message. Perl will automatically
>> attach the filename and line number then, which is rather ugly here. I'd
>> also mention "and doesn't need an EFI disk" to clarify this a bit more
>> for users.
> 
> Does "SEV-SNP uses consolidated read-only firmware instead of a seperate
> non-volatile variable store\n" work?

I'd rather mention the "EFI disk" directly. Like that it will be clear
to users, since they know the "EFI disk" from the UI/configuration.

> 
>>
>>> +                   if $amd_sev_type && $amd_sev_type eq 'snp';
>>> +
>>>                 ($volid, $size) = PVE::QemuServer::create_efidisk(
>>> -                   $storecfg, $storeid, $vmid, $fmt, $arch, $disk, $smm);
>>> +                   $storecfg, $storeid, $vmid, $fmt, $arch, $disk, $smm, 
>>> $amd_sev_type);
>>>             } elsif ($ds eq 'tpmstate0') {
>>>                 # swtpm can only use raw volumes, and uses a fixed size
>>>                 $size = 
>>> PVE::Tools::convert_size(PVE::QemuServer::Drive::TPMSTATE_DISK_SIZE, 'b' => 
>>> 'kb');
>>> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
>>> index 808c0e1c..51e551b8 100644
>>> --- a/PVE/QemuServer.pm
>>> +++ b/PVE/QemuServer.pm
>>> @@ -52,7 +52,7 @@ use PVE::QemuConfig;
>>>  use PVE::QemuServer::Helpers qw(config_aware_timeout min_version 
>>> kvm_user_version windows_version);
>>>  use PVE::QemuServer::Cloudinit;
>>>  use PVE::QemuServer::CGroup;
>>> -use PVE::QemuServer::CPUConfig qw(print_cpu_device get_cpu_options 
>>> get_cpu_bitness is_native_arch get_amd_sev_object);
>>> +use PVE::QemuServer::CPUConfig qw(print_cpu_device get_cpu_options 
>>> get_cpu_bitness is_native_arch get_amd_sev_object get_amd_sev_type);
>>>  use PVE::QemuServer::Drive qw(is_valid_drivename checked_volume_format 
>>> drive_is_cloudinit drive_is_cdrom drive_is_read_only parse_drive 
>>> print_drive);
>>>  use PVE::QemuServer::Machine;
>>>  use PVE::QemuServer::Memory qw(get_current_memory);
>>> @@ -88,6 +88,13 @@ my $OVMF = {
>>>         "$EDK2_FW_BASE/OVMF_CODE_4M.secboot.fd",
>>>         "$EDK2_FW_BASE/OVMF_VARS_4M.ms.fd",
>>>     ],
>>> +   '4m-sev' => [
>>> +       "$EDK2_FW_BASE/OVMF_CVM_CODE_4M.fd",
>>> +       "$EDK2_FW_BASE/OVMF_CVM_VARS_4M.fd", 
>>
>> Style nit: trailing whitespace above
>>
>> Is switching over for the std+ES SEV scenarios still
>> required/advantageous if we go for edk2-stable202502?
> 
> From my testing this is still the case.
> IIUC, this is because the existing firmware is built targeting
> OmvfPkg/OvmfPkgI32X64.dsc which does not support SEV.

Okay, thank you for testing!

Best Regards,
Fiona


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to