mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
domcaps: Report launchSecurity
In order to learn what types of <launchSecurity/> are supported users can turn to domain capabilities and find <sev/> and <s390-pv/> elements. While these may expose some additional info on individual launchSecurity types, we are lacking clean enumeration (like we do for say device models). And given that SEV and SEV SNP share the same basis (info found under <sev/> is applicable to SEV SNP too) we have no other way to report SEV SNP support. Therefore, report supported launchSecurity types in domain capabilities. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Jiri Denemark <jdenemar@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
@@ -707,6 +707,19 @@ virDomainCapsFeatureHypervFormat(virBuffer *buf,
|
||||
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)
|
||||
@@ -728,6 +741,7 @@ virDomainCapsFormatFeatures(const virDomainCaps *caps,
|
||||
virDomainCapsFeatureSEVFormat(&childBuf, caps->sev);
|
||||
virDomainCapsFeatureSGXFormat(&childBuf, caps->sgx);
|
||||
virDomainCapsFeatureHypervFormat(&childBuf, caps->hyperv);
|
||||
virDomainCapsLaunchSecurityFormat(&childBuf, &caps->launchSecurity);
|
||||
|
||||
virXMLFormatElement(buf, "features", NULL, &childBuf);
|
||||
}
|
||||
|
||||
@@ -165,6 +165,14 @@ struct _virDomainCapsFeatureHyperv {
|
||||
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,
|
||||
@@ -284,6 +292,7 @@ struct _virDomainCaps {
|
||||
virSEVCapability *sev;
|
||||
virSGXCapability *sgx;
|
||||
virDomainCapsFeatureHyperv *hyperv;
|
||||
virDomainCapsLaunchSecurity launchSecurity;
|
||||
/* add new domain features here */
|
||||
|
||||
virTristateBool features[VIR_DOMAIN_CAPS_FEATURE_LAST];
|
||||
|
||||
@@ -285,6 +285,13 @@
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="launchSecurity">
|
||||
<element name="launchSecurity">
|
||||
<ref name="supported"/>
|
||||
<ref name="enum"/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="features">
|
||||
<element name="features">
|
||||
<optional>
|
||||
@@ -317,6 +324,9 @@
|
||||
<optional>
|
||||
<ref name="hyperv"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='launchSecurity'/>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user