[pve-devel] [PATCH qemu-server v2 1/2] QEMU AMD SEV enable

Fiona Ebner f.ebner at proxmox.com
Thu Nov 17 12:27:37 CET 2022


Am 17.11.22 um 11:50 schrieb Markus Frank:>>> @@ -2113,6 +2171,17 @@ sub
parse_guest_agent {
>>>       return $res;
>>>   }
>>>   +sub parse_memory_encryption {
>>> +    my ($value) = @_;
>>> +
>>> +    return if !$value;
>>> +
>>> +    my $res = eval { parse_property_string($memory_encryption_fmt,
>>> $value) };
>>> +    warn $@ if $@;
>>> +    return $res;
>>> +}
>>
>> Why not fail if parsing fails?
> replaced warn with die

You can also just remove the eval to make the error propagate ;) And I
guess the whole helper could be replaced at the call side with an inline
    parse_property_string($memory_encryption_fmt, $value) if $value
but no big deal.

>>> +    # Get reduced-phys-bits & cbitpos from QMP, if not set
>>> +    if (
>>> +        !$memory_encryption->{'reduced-phys-bits'}
>>> +        || !$memory_encryption->{cbitpos}
>>> +    ) {
>>> +        my $fakevmid = -1;
>>> +        my $qemu_cmd = get_command_for_arch($arch);
>>> +        my $pidfile =
>>> PVE::QemuServer::Helpers::pidfile_name($fakevmid);
>>> +        my $default_machine = $default_machines->{$arch};
>>> +        my $cmd = [
>>> +        $qemu_cmd,
>>> +        '-machine', $default_machine,
>>> +        '-display', 'none',
>>> +        '-chardev',
>>> "socket,id=qmp,path=/var/run/qemu-server/$fakevmid.qmp,server=on,wait=off",
>>> +        '-mon', 'chardev=qmp,mode=control',
>>> +        '-pidfile', $pidfile,
>>> +        '-S', '-daemonize'
>>> +        ];
>>
>> Instead of daemonizing, pidfile etc. we could also use --qmp stdio and
>> pass the commands via stdin like:
>> {"execute": "qmp_capabilities"}
>> {"execute": "query-sev-capabilities"}
>> {"execute": "quit"}
>> which might be a bit more straight-forward. But maybe we prefer re-using
>> the existing infrastructure with the fake ID, not sure?
> What would be the best way to send stdin to "kvm -qmp stdio" here?
> 
> Not the same way like I would do in shell or yes?:
> echo '{"execute": "qmp_capabilities"} {"execute":
> "query-sev-capabilities"} {"execute": "quit"}' | kvm  -qmp stdio

The run_command helper can take an "input => $input" parameter. Haven't
actually used it myself, but there are existing examples in our code base :)





More information about the pve-devel mailing list