Please note that depending on the QEMU version some capabilities might be
missing even though QEMU does support them. This is because prior to QEMU-6.1.0
not all features were reported by QEMU.
+
+Launch security
+^^^^^^^^^^^^^^^
+
+The ``launchSecurity`` element exposes supported aspects of encrypted guests.
+The ``sectype`` enum corresponds to ``type`` attribute of ``<launchSecurity/>``
+element as documented in `Launch Security
+<formatdomain.html#launch-security>`__. :since:`(Since 10.5.0)` For additional
+information on individual types, see sections above: `s390-pv capability`_ for
+S390 PV, `SEV capabilities`_ for AMD SEV and/or AMD SEV-SNP.
FORMAT_EPILOGUE(hyperv);
}
+
+static void
+virDomainCapsLaunchSecurityFormat(virBuffer *buf,
+ const virDomainCapsLaunchSecurity *launchSecurity)
+{
+ FORMAT_PROLOGUE(launchSecurity);
+
+ ENUM_PROCESS(launchSecurity, sectype, virDomainLaunchSecurityTypeToString);
+
+ FORMAT_EPILOGUE(launchSecurity);
+}
+
+
static void
virDomainCapsFormatFeatures(const virDomainCaps *caps,
virBuffer *buf)
virDomainCapsFeatureSEVFormat(&childBuf, caps->sev);
virDomainCapsFeatureSGXFormat(&childBuf, caps->sgx);
virDomainCapsFeatureHypervFormat(&childBuf, caps->hyperv);
+ virDomainCapsLaunchSecurityFormat(&childBuf, &caps->launchSecurity);
virXMLFormatElement(buf, "features", NULL, &childBuf);
}
virDomainCapsEnum features; /* Info about supported virDomainHyperv features */
};
+STATIC_ASSERT_ENUM(VIR_DOMAIN_LAUNCH_SECURITY_LAST);
+typedef struct _virDomainCapsLaunchSecurity virDomainCapsLaunchSecurity;
+struct _virDomainCapsLaunchSecurity {
+ virTristateBool supported;
+ virDomainCapsEnum sectype; /* Info about supported virDomainLaunchSecurity */
+};
+
+
typedef enum {
VIR_DOMCAPS_CPU_USABLE_UNKNOWN,
VIR_DOMCAPS_CPU_USABLE_YES,
virSEVCapability *sev;
virSGXCapability *sgx;
virDomainCapsFeatureHyperv *hyperv;
+ virDomainCapsLaunchSecurity launchSecurity;
/* add new domain features here */
virTristateBool features[VIR_DOMAIN_CAPS_FEATURE_LAST];
</element>
</define>
+ <define name="launchSecurity">
+ <element name="launchSecurity">
+ <ref name="supported"/>
+ <ref name="enum"/>
+ </element>
+ </define>
+
<define name="features">
<element name="features">
<optional>
<optional>
<ref name="hyperv"/>
</optional>
+ <optional>
+ <ref name='launchSecurity'/>
+ </optional>
</element>
</define>