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>
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,
virQEMUCapsFillDomainFeatureSEVCaps(qemuCaps, domCaps);
virQEMUCapsFillDomainFeatureS390PVCaps(qemuCaps, domCaps);
virQEMUCapsFillDomainFeatureSGXCaps(qemuCaps, domCaps);
+ virQEMUCapsFillDomainFeatureHypervCaps(qemuCaps, domCaps);
return 0;
}
<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>
<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>
<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>