From 903ea9370d9b2b5592b03ccaecbdfa212b9873c1 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Wed, 21 Dec 2022 16:09:29 +0100 Subject: [PATCH] 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 Reviewed-by: Peter Krempa --- src/qemu/qemu_capabilities.c | 11 +++++++++++ tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 18 ++++++++++++++++++ tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 18 ++++++++++++++++++ tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 18 ++++++++++++++++++ 4 files changed, 65 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index c23adea289..1c120ff163 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -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; } diff --git a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml index efc67b2ef9..4170ae7a97 100644 --- a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml @@ -249,5 +249,23 @@ + + + relaxed + vapic + spinlocks + vpindex + runtime + synic + stimer + reset + vendor_id + frequencies + reenlightenment + tlbflush + ipi + avic + + diff --git a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml index d9b092e6fd..3b52eba64f 100644 --- a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml @@ -248,5 +248,23 @@ + + + relaxed + vapic + spinlocks + vpindex + runtime + synic + stimer + reset + vendor_id + frequencies + reenlightenment + tlbflush + ipi + avic + + diff --git a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml index 2b17a409bd..fac8033f76 100644 --- a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml @@ -249,5 +249,23 @@ + + + relaxed + vapic + spinlocks + vpindex + runtime + synic + stimer + reset + vendor_id + frequencies + reenlightenment + tlbflush + ipi + avic + +