qemu_capabilities: Report Hyper-V Enlightenments in domcapabilities

Inside of qemuCaps (for the corresponding accelerator) we have
full host CPU expansion stored, among with supported Hyper-V
Enlightenments. To report them in the domain capabilities, we
just have to pick those starting with "hv-" and see if we know
them.

You may notice that neither of our domaincapsdata test shows any
enlightenment. This is because the test works by parsing
corresponding qemucapabilitiesdata/caps_*.xml file and none of
these store the full host CPU expansion (hostCPU.fullQEMU)
because that is runtime piece of information and not formatted
into virQEMUCaps XML.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1717611
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
Michal Privoznik 2022-12-21 16:09:29 +01:00
parent 10f4784864
commit 903ea9370d
4 changed files with 65 additions and 0 deletions

View File

@ -6823,6 +6823,16 @@ virQEMUCapsFillDomainFeatureSGXCaps(virQEMUCaps *qemuCaps,
virQEMUCapsSGXInfoCopy(&domCaps->sgx, qemuCaps->sgxCapabilities);
}
static void
virQEMUCapsFillDomainFeatureHypervCaps(virQEMUCaps *qemuCaps,
virDomainCaps *domCaps)
{
domCaps->hyperv = g_memdup(qemuCaps->hypervCapabilities,
sizeof(virDomainCapsFeatureHyperv));
}
int
virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps,
virArch hostarch,
@ -6879,6 +6889,7 @@ virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps,
virQEMUCapsFillDomainFeatureSEVCaps(qemuCaps, domCaps);
virQEMUCapsFillDomainFeatureS390PVCaps(qemuCaps, domCaps);
virQEMUCapsFillDomainFeatureSGXCaps(qemuCaps, domCaps);
virQEMUCapsFillDomainFeatureHypervCaps(qemuCaps, domCaps);
return 0;
}

View File

@ -249,5 +249,23 @@
<backup supported='yes'/>
<sev supported='no'/>
<sgx supported='no'/>
<hyperv supported='yes'>
<enum name='features'>
<value>relaxed</value>
<value>vapic</value>
<value>spinlocks</value>
<value>vpindex</value>
<value>runtime</value>
<value>synic</value>
<value>stimer</value>
<value>reset</value>
<value>vendor_id</value>
<value>frequencies</value>
<value>reenlightenment</value>
<value>tlbflush</value>
<value>ipi</value>
<value>avic</value>
</enum>
</hyperv>
</features>
</domainCapabilities>

View File

@ -248,5 +248,23 @@
<backup supported='yes'/>
<sev supported='no'/>
<sgx supported='no'/>
<hyperv supported='yes'>
<enum name='features'>
<value>relaxed</value>
<value>vapic</value>
<value>spinlocks</value>
<value>vpindex</value>
<value>runtime</value>
<value>synic</value>
<value>stimer</value>
<value>reset</value>
<value>vendor_id</value>
<value>frequencies</value>
<value>reenlightenment</value>
<value>tlbflush</value>
<value>ipi</value>
<value>avic</value>
</enum>
</hyperv>
</features>
</domainCapabilities>

View File

@ -249,5 +249,23 @@
<backup supported='yes'/>
<sev supported='no'/>
<sgx supported='no'/>
<hyperv supported='yes'>
<enum name='features'>
<value>relaxed</value>
<value>vapic</value>
<value>spinlocks</value>
<value>vpindex</value>
<value>runtime</value>
<value>synic</value>
<value>stimer</value>
<value>reset</value>
<value>vendor_id</value>
<value>frequencies</value>
<value>reenlightenment</value>
<value>tlbflush</value>
<value>ipi</value>
<value>avic</value>
</enum>
</hyperv>
</features>
</domainCapabilities>