>-----Original Message-----
>From: Daniel P. Berrangé <berra...@redhat.com>
>Subject: Re: [PATCH rfcv4 05/13] conf: add tdx as launch security type
>
>On Fri, May 24, 2024 at 02:21:20PM +0800, Zhenzhong Duan wrote:
>> When 'tdx' is used, the VM will launched with Intel TDX feature enabled.
>> TDX feature supports running encrypted VM (Trust Domain, TD) under the
>> control of KVM. A TD runs in a CPU model which protects the
>> confidentiality of its memory and its CPU state from other software
>>
>> There is a child element 'policy' and three optional element for tdx type.
>> In 'policy', bit 0 is set to enable TDX debug, bit 28 set to enable
>> sept-ve-disable, other bits are reserved currently. mrConfigId, mrOwner
>> and mrOwnerConfig are base64 encoded SHA384 digest.
>>
>> For example:
>>
>>  <launchSecurity type='tdx'>
>>    <policy>0x10000001</policy>
>>    <mrConfigId>xxx</mrConfigId>
>>    <mrOwner>xxx</mrOwner>
>>    <mrOwnerConfig>xxx</mrOwnerConfig>
>>  </launchSecurity>
>>
>> Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com>
>> ---
>>  src/conf/domain_conf.c            | 42 +++++++++++++++++++++++++++++++
>>  src/conf/domain_conf.h            |  9 +++++++
>>  src/conf/schemas/domaincommon.rng | 29 +++++++++++++++++++++
>>  src/conf/virconftypes.h           |  2 ++
>>  src/qemu/qemu_command.c           |  2 ++
>>  src/qemu/qemu_firmware.c          |  1 +
>>  src/qemu/qemu_namespace.c         |  1 +
>>  src/qemu/qemu_process.c           |  1 +
>>  src/qemu/qemu_validate.c          |  1 +
>>  9 files changed, 88 insertions(+)
>>
>> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>> index a0912062ff..c557da0c65 100644
>> --- a/src/conf/domain_conf.c
>> +++ b/src/conf/domain_conf.c
>
>
>> @@ -13649,6 +13654,24 @@ virDomainSEVDefParseXML(virDomainSEVDef
>*def,
>>  }
>>
>>
>> +static int
>> +virDomainTDXDefParseXML(virDomainTDXDef *def,
>> +                        xmlXPathContextPtr ctxt)
>> +{
>> +    if (virXPathULongLongBase("string(./policy)", ctxt, 16, &def->policy) < 
>> 0) {
>> +        virReportError(VIR_ERR_XML_ERROR, "%s",
>> +                       _("failed to get launch security policy for launch 
>> security type
>TDX"));
>> +        return -1;
>> +    }
>
>This makes the 'policy' attribute mandatory, but QEMU is quite happy
>with it being unset, so we should not require this in libvirt either.

Yes, but I am trying to align with SEV which has same issue.
So aligning with SEV vs. making TDX's 'policy' optional, you prefer the 2nd? 
Pls confirm.

Thanks
Zhenzhong

>
>> +
>> +    def->mrconfigid = virXPathString("string(./mrConfigId)", ctxt);
>> +    def->mrowner = virXPathString("string(./mrOwner)", ctxt);
>> +    def->mrownerconfig = virXPathString("string(./mrOwnerConfig)", ctxt);
>> +
>> +    return 0;
>> +}
>
>> diff --git a/src/conf/schemas/domaincommon.rng
>b/src/conf/schemas/domaincommon.rng
>> index d84e030255..f6e1782b33 100644
>> --- a/src/conf/schemas/domaincommon.rng
>> +++ b/src/conf/schemas/domaincommon.rng
>> @@ -520,6 +520,9 @@
>>              <value>s390-pv</value>
>>            </attribute>
>>          </group>
>> +        <group>
>> +          <ref name="launchSecurityTDX"/>
>> +        </group>
>>        </choice>
>>      </element>
>>    </define>
>> @@ -565,6 +568,32 @@
>>      </interleave>
>>    </define>
>>
>> +  <define name="launchSecurityTDX">
>> +    <attribute name="type">
>> +      <value>tdx</value>
>> +    </attribute>
>> +    <interleave>
>> +      <element name="policy">
>> +        <ref name="hexuint"/>
>> +      </element>
>
>This should be marked <optional> too.
>
>> +      <optional>
>> +        <element name="mrConfigId">
>> +          <data type="string"/>
>> +        </element>
>> +      </optional>
>> +      <optional>
>> +        <element name="mrOwner">
>> +          <data type="string"/>
>> +        </element>
>> +      </optional>
>> +      <optional>
>> +        <element name="mrOwnerConfig">
>> +          <data type="string"/>
>> +        </element>
>> +      </optional>
>> +    </interleave>
>> +  </define>
>> +
>>    <!--
>>        Enable or disable perf events for the domain. For each
>>        of the events the following rules apply:
>
>With regards,
>Daniel
>--
>|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
>|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
>|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Reply via email to