[PATCH v2 0/7] qemu_capabilities: Report Hyper-V Enlightenments in domcapabilities

v2 of: https://listman.redhat.com/archives/libvir-list/2022-December/236464.html diff to v1: - Merged some cleanup patches from v1 - Store capabilities in cache - More cleanup patches Michal Prívozník (7): virDomainCapsEnumFormat: Switch to virXMLFormatElement() virDomainCapsEnumFormat: Retrun void domain_capabilities: Expose Hyper-V Enlightenments qemuMonitorJSONMakeCPUModel: Introduce @hv_passthrough argument qemuMonitorJSONGetCPUModelExpansion: Introduce @hv_passthrough argument qemu_capabilities: Query for Hyper-V Enlightenments qemu_capabilities: Report Hyper-V Enlightenments in domcapabilities docs/formatdomaincaps.rst | 15 + src/conf/domain_capabilities.c | 38 +- src/conf/domain_capabilities.h | 8 + src/conf/schemas/domaincaps.rng | 10 + src/qemu/qemu_capabilities.c | 178 ++++++- src/qemu/qemu_driver.c | 3 +- src/qemu/qemu_monitor.c | 5 +- src/qemu/qemu_monitor.h | 1 + src/qemu/qemu_monitor_json.c | 21 +- src/qemu/qemu_monitor_json.h | 1 + tests/cputest.c | 2 +- tests/domaincapsdata/empty.xml | 1 + tests/domaincapsdata/libxl-xenfv.xml | 1 + tests/domaincapsdata/libxl-xenpv.xml | 1 + .../domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_4.2.0-tcg.x86_64.xml | 1 + .../qemu_4.2.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_4.2.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_4.2.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_4.2.0.s390x.xml | 1 + tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 1 + .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_5.0.0-tcg.x86_64.xml | 1 + .../qemu_5.0.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_5.0.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_5.0.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 1 + .../domaincapsdata/qemu_5.1.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_5.1.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_5.1.0.sparc.xml | 1 + tests/domaincapsdata/qemu_5.1.0.x86_64.xml | 1 + .../domaincapsdata/qemu_5.2.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_5.2.0-tcg.x86_64.xml | 1 + .../qemu_5.2.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_5.2.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_5.2.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_5.2.0.s390x.xml | 1 + tests/domaincapsdata/qemu_5.2.0.x86_64.xml | 1 + .../domaincapsdata/qemu_6.0.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_6.0.0-tcg.x86_64.xml | 1 + .../qemu_6.0.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_6.0.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_6.0.0.s390x.xml | 1 + tests/domaincapsdata/qemu_6.0.0.x86_64.xml | 1 + .../domaincapsdata/qemu_6.1.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_6.1.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_6.1.0.x86_64.xml | 1 + .../domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 1 + .../qemu_6.2.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_6.2.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_6.2.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 1 + .../domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 1 + .../qemu_7.0.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_7.0.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_7.0.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 1 + .../domaincapsdata/qemu_7.1.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_7.1.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.1.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_7.1.0.x86_64.xml | 1 + .../domaincapsdata/qemu_7.2.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_7.2.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.2.0.x86_64.xml | 1 + .../domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 18 + .../domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 18 + tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 18 + .../caps_4.2.0.aarch64.replies | 45 ++ .../caps_4.2.0.aarch64.xml | 1 + .../caps_4.2.0.x86_64.replies | 317 ++++++++++++ .../caps_4.2.0.x86_64.xml | 1 + .../caps_5.0.0.aarch64.replies | 46 ++ .../caps_5.0.0.aarch64.xml | 1 + .../caps_5.0.0.x86_64.replies | 318 ++++++++++++ .../caps_5.0.0.x86_64.xml | 1 + .../caps_5.1.0.x86_64.replies | 323 ++++++++++++ .../caps_5.1.0.x86_64.xml | 1 + .../caps_5.2.0.aarch64.replies | 47 ++ .../caps_5.2.0.aarch64.xml | 1 + .../caps_5.2.0.x86_64.replies | 324 +++++++++++++ .../caps_5.2.0.x86_64.xml | 1 + .../caps_6.0.0.aarch64.replies | 47 ++ .../caps_6.0.0.aarch64.xml | 1 + .../caps_6.0.0.x86_64.replies | 336 +++++++++++++ .../caps_6.0.0.x86_64.xml | 1 + .../caps_6.1.0.x86_64.replies | 338 +++++++++++++ .../caps_6.1.0.x86_64.xml | 1 + .../caps_6.2.0.aarch64.replies | 47 ++ .../caps_6.2.0.aarch64.xml | 1 + .../caps_6.2.0.x86_64.replies | 348 +++++++++++++ .../caps_6.2.0.x86_64.xml | 1 + .../caps_7.0.0.aarch64.replies | 48 ++ .../caps_7.0.0.aarch64.xml | 1 + .../caps_7.0.0.x86_64.replies | 352 ++++++++++++++ .../caps_7.0.0.x86_64.xml | 1 + .../caps_7.1.0.x86_64.replies | 353 ++++++++++++++ .../caps_7.1.0.x86_64.xml | 1 + .../caps_7.2.0.x86_64.replies | 353 ++++++++++++++ .../caps_7.2.0.x86_64.xml | 1 + .../caps_8.0.0.x86_64.replies | 458 ++++++++++++++++++ .../caps_8.0.0.x86_64.xml | 16 + 103 files changed, 4495 insertions(+), 28 deletions(-) -- 2.38.2

We are formatting <enum/> element and its children using virBufferAddLit(), virBufferAsprintf(), virBufferAdjustIndent(), etc. Well, we can avoid that when switching to virXMLFormatElement(). Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/conf/domain_capabilities.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index 4e412c0fd8..b464298003 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -269,18 +269,14 @@ virDomainCapsEnumFormat(virBuffer *buf, const char *capsEnumName, virDomainCapsValToStr valToStr) { + virBuffer attrBuf = VIR_BUFFER_INITIALIZER; + virBuffer childBuf = VIR_BUFFER_INIT_CHILD(buf); size_t i; if (!capsEnum->report) return 0; - virBufferAsprintf(buf, "<enum name='%s'", capsEnumName); - if (!capsEnum->values) { - virBufferAddLit(buf, "/>\n"); - return 0; - } - virBufferAddLit(buf, ">\n"); - virBufferAdjustIndent(buf, 2); + virBufferAsprintf(&attrBuf, " name='%s'", capsEnumName); for (i = 0; i < sizeof(capsEnum->values) * CHAR_BIT; i++) { const char *val; @@ -289,11 +285,10 @@ virDomainCapsEnumFormat(virBuffer *buf, continue; if ((val = (valToStr)(i))) - virBufferAsprintf(buf, "<value>%s</value>\n", val); + virBufferAsprintf(&childBuf, "<value>%s</value>\n", val); } - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "</enum>\n"); + virXMLFormatElement(buf, "enum", &attrBuf, &childBuf); return 0; } -- 2.38.2

On Thu, Jan 05, 2023 at 09:34:55 +0100, Michal Privoznik wrote:
We are formatting <enum/> element and its children using virBufferAddLit(), virBufferAsprintf(), virBufferAdjustIndent(), etc. Well, we can avoid that when switching to virXMLFormatElement().
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/conf/domain_capabilities.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index 4e412c0fd8..b464298003 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -269,18 +269,14 @@ virDomainCapsEnumFormat(virBuffer *buf, const char *capsEnumName, virDomainCapsValToStr valToStr) { + virBuffer attrBuf = VIR_BUFFER_INITIALIZER; + virBuffer childBuf = VIR_BUFFER_INIT_CHILD(buf);
Preferrably declare these as 'g_auto(virBuffer) ...'. Reviewed-by: Peter Krempa <pkrempa@redhat.com>

The virDomainCapsEnumFormat() function does not return anything but zero and none of its callers is interested in the failure anyways. Switch its return type from integer to void. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/conf/domain_capabilities.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index b464298003..01714e2270 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -263,7 +263,7 @@ virDomainCapsEnumClear(virDomainCapsEnum *capsEnum) } -static int +static void virDomainCapsEnumFormat(virBuffer *buf, const virDomainCapsEnum *capsEnum, const char *capsEnumName, @@ -274,7 +274,7 @@ virDomainCapsEnumFormat(virBuffer *buf, size_t i; if (!capsEnum->report) - return 0; + return; virBufferAsprintf(&attrBuf, " name='%s'", capsEnumName); @@ -289,7 +289,6 @@ virDomainCapsEnumFormat(virBuffer *buf, } virXMLFormatElement(buf, "enum", &attrBuf, &childBuf); - return 0; } -- 2.38.2

On Thu, Jan 05, 2023 at 09:34:56 +0100, Michal Privoznik wrote:
The virDomainCapsEnumFormat() function does not return anything but zero and none of its callers is interested in the failure anyways. Switch its return type from integer to void.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/conf/domain_capabilities.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
Reviewed-by: Peter Krempa <pkrempa@redhat.com>

Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- docs/formatdomaincaps.rst | 15 +++++++++++++++ src/conf/domain_capabilities.c | 18 ++++++++++++++++++ src/conf/domain_capabilities.h | 8 ++++++++ src/conf/schemas/domaincaps.rng | 10 ++++++++++ tests/domaincapsdata/empty.xml | 1 + tests/domaincapsdata/libxl-xenfv.xml | 1 + tests/domaincapsdata/libxl-xenpv.xml | 1 + tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml | 1 + .../domaincapsdata/qemu_4.2.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_4.2.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_4.2.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_4.2.0.s390x.xml | 1 + tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 1 + tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml | 1 + .../domaincapsdata/qemu_5.0.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_5.0.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_5.0.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 1 + tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_5.1.0.sparc.xml | 1 + tests/domaincapsdata/qemu_5.1.0.x86_64.xml | 1 + tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml | 1 + .../domaincapsdata/qemu_5.2.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_5.2.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_5.2.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_5.2.0.s390x.xml | 1 + tests/domaincapsdata/qemu_5.2.0.x86_64.xml | 1 + tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml | 1 + .../domaincapsdata/qemu_6.0.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_6.0.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_6.0.0.s390x.xml | 1 + tests/domaincapsdata/qemu_6.0.0.x86_64.xml | 1 + tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_6.1.0.x86_64.xml | 1 + tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 1 + .../domaincapsdata/qemu_6.2.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_6.2.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_6.2.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 1 + .../domaincapsdata/qemu_7.0.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_7.0.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_7.0.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.1.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_7.1.0.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.2.0.x86_64.xml | 1 + tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 1 + 62 files changed, 109 insertions(+) diff --git a/docs/formatdomaincaps.rst b/docs/formatdomaincaps.rst index 532fea0f60..dc227e9d02 100644 --- a/docs/formatdomaincaps.rst +++ b/docs/formatdomaincaps.rst @@ -624,6 +624,12 @@ capabilities. All features occur as children of the main ``features`` element. <section node='1' size='262144' unit='KiB'/> </sections> </sgx> + <hyperv supported='yes'> + <enum name='features'> + <value>relaxed</value> + <value>vapic</value> + </enum> + </hyperv> </features> </domainCapabilities> @@ -733,3 +739,12 @@ document store. In order to use SGX with libvirt have a look at `SGX in domain X ``sections`` The sections of the SGX enclave page cache (called EPC). + + +Hyper-V Enlightenments +^^^^^^^^^^^^^^^^^^^^^^ + +Report which features improving behavior of guests running Microsoft Windows +are supported. The ``features`` enum corresponds to the ``<hyperv/>`` element +(well, its children) as documented in `Hypervisor features +<formatdomain.html#hypervisor-features>`__ diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index 01714e2270..82432b60a7 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -100,6 +100,7 @@ virDomainCapsDispose(void *obj) virCPUDefFree(caps->cpu.hostModel); virSEVCapabilitiesFree(caps->sev); virSGXCapabilitiesFree(caps->sgx); + g_free(caps->hyperv); values = &caps->os.loader.values; for (i = 0; i < values->nvalues; i++) @@ -678,6 +679,22 @@ virDomainCapsFeatureSGXFormat(virBuffer *buf, virBufferAddLit(buf, "</sgx>\n"); } +static void +virDomainCapsFeatureHypervFormat(virBuffer *buf, + const virDomainCapsFeatureHyperv *hyperv) +{ + if (!hyperv) { + virBufferAddLit(buf, "<hyperv supported='no'/>\n"); + return; + } + + FORMAT_PROLOGUE(hyperv); + + ENUM_PROCESS(hyperv, features, virDomainHypervTypeToString); + + FORMAT_EPILOGUE(hyperv); +} + static void virDomainCapsFormatFeatures(const virDomainCaps *caps, virBuffer *buf) @@ -698,6 +715,7 @@ virDomainCapsFormatFeatures(const virDomainCaps *caps, virDomainCapsFeatureSEVFormat(&childBuf, caps->sev); virDomainCapsFeatureSGXFormat(&childBuf, caps->sgx); + virDomainCapsFeatureHypervFormat(&childBuf, caps->hyperv); virXMLFormatElement(buf, "features", NULL, &childBuf); } diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h index 1d504a3506..770856bf53 100644 --- a/src/conf/domain_capabilities.h +++ b/src/conf/domain_capabilities.h @@ -158,6 +158,13 @@ struct _virDomainCapsFeatureGIC { virDomainCapsEnum version; /* Info about virGICVersion */ }; +STATIC_ASSERT_ENUM(VIR_DOMAIN_HYPERV_LAST); +typedef struct _virDomainCapsFeatureHyperv virDomainCapsFeatureHyperv; +struct _virDomainCapsFeatureHyperv { + virTristateBool supported; + virDomainCapsEnum features; /* Info about supported virDomainHyperv features */ +}; + typedef enum { VIR_DOMCAPS_CPU_USABLE_UNKNOWN, VIR_DOMCAPS_CPU_USABLE_YES, @@ -263,6 +270,7 @@ struct _virDomainCaps { virDomainCapsFeatureGIC gic; virSEVCapability *sev; virSGXCapability *sgx; + virDomainCapsFeatureHyperv *hyperv; /* add new domain features here */ virTristateBool features[VIR_DOMAIN_CAPS_FEATURE_LAST]; diff --git a/src/conf/schemas/domaincaps.rng b/src/conf/schemas/domaincaps.rng index b6408bca88..4b96e89dfa 100644 --- a/src/conf/schemas/domaincaps.rng +++ b/src/conf/schemas/domaincaps.rng @@ -296,6 +296,9 @@ <optional> <ref name="sgx"/> </optional> + <optional> + <ref name="hyperv"/> + </optional> </element> </define> @@ -396,6 +399,13 @@ </element> </define> + <define name="hyperv"> + <element name="hyperv"> + <ref name="supported"/> + <ref name="enum"/> + </element> + </define> + <define name="value"> <zeroOrMore> <element name="value"> diff --git a/tests/domaincapsdata/empty.xml b/tests/domaincapsdata/empty.xml index 97752ca04a..542522ed29 100644 --- a/tests/domaincapsdata/empty.xml +++ b/tests/domaincapsdata/empty.xml @@ -14,5 +14,6 @@ <features> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/libxl-xenfv.xml b/tests/domaincapsdata/libxl-xenfv.xml index c71d759517..d7e3424830 100644 --- a/tests/domaincapsdata/libxl-xenfv.xml +++ b/tests/domaincapsdata/libxl-xenfv.xml @@ -77,5 +77,6 @@ <genid supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/libxl-xenpv.xml b/tests/domaincapsdata/libxl-xenpv.xml index 8ae2370b7e..a3269f4909 100644 --- a/tests/domaincapsdata/libxl-xenpv.xml +++ b/tests/domaincapsdata/libxl-xenpv.xml @@ -67,5 +67,6 @@ <genid supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml index d0bf0bdc7b..49550e799f 100644 --- a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml @@ -238,5 +238,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml index 6a3818fb4e..a5a1eb71fb 100644 --- a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml @@ -253,5 +253,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml index 02aca3e448..e001128bf5 100644 --- a/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml @@ -185,5 +185,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_4.2.0.aarch64.xml b/tests/domaincapsdata/qemu_4.2.0.aarch64.xml index 676e1b0739..5aa9520fab 100644 --- a/tests/domaincapsdata/qemu_4.2.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_4.2.0.aarch64.xml @@ -179,5 +179,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml index bcc415d7de..2017a0cf44 100644 --- a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml @@ -152,5 +152,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_4.2.0.s390x.xml b/tests/domaincapsdata/qemu_4.2.0.s390x.xml index 4f176e2d37..e9c082244b 100644 --- a/tests/domaincapsdata/qemu_4.2.0.s390x.xml +++ b/tests/domaincapsdata/qemu_4.2.0.s390x.xml @@ -259,5 +259,6 @@ <s390-pv supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml index 36a4081764..c67217d4ac 100644 --- a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml @@ -238,5 +238,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml index 05884cdb86..bf8c6a5a54 100644 --- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml @@ -240,5 +240,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml index c53b84c140..ebab6a15f3 100644 --- a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml @@ -255,5 +255,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml index e74a3d9f5f..071187cfaf 100644 --- a/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml @@ -198,5 +198,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.0.0.aarch64.xml b/tests/domaincapsdata/qemu_5.0.0.aarch64.xml index 605575c793..05ba8f5a83 100644 --- a/tests/domaincapsdata/qemu_5.0.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_5.0.0.aarch64.xml @@ -192,5 +192,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.0.0.ppc64.xml b/tests/domaincapsdata/qemu_5.0.0.ppc64.xml index a5b718618b..35d6733d23 100644 --- a/tests/domaincapsdata/qemu_5.0.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_5.0.0.ppc64.xml @@ -159,5 +159,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml index fd1f42b555..c3ac6668af 100644 --- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml @@ -240,5 +240,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml index a04c3e7130..f8eeb3c097 100644 --- a/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml @@ -241,5 +241,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml index a7b2ff8d7d..5a6aee6bda 100644 --- a/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml @@ -255,5 +255,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.1.0.sparc.xml b/tests/domaincapsdata/qemu_5.1.0.sparc.xml index cde31462bc..f3ad4d43cb 100644 --- a/tests/domaincapsdata/qemu_5.1.0.sparc.xml +++ b/tests/domaincapsdata/qemu_5.1.0.sparc.xml @@ -126,5 +126,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.1.0.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0.x86_64.xml index 45b7dcf6e4..6cf741e7ea 100644 --- a/tests/domaincapsdata/qemu_5.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.1.0.x86_64.xml @@ -241,5 +241,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml index 61cfa7d449..bf642e4956 100644 --- a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml @@ -241,5 +241,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml index caced52187..8d1702b5e3 100644 --- a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml @@ -255,5 +255,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml index f19ad32693..43febfb61a 100644 --- a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml @@ -198,5 +198,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml index 605575c793..05ba8f5a83 100644 --- a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml @@ -192,5 +192,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml index 8ae7487c1e..87dd5cd28e 100644 --- a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml @@ -159,5 +159,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.2.0.s390x.xml b/tests/domaincapsdata/qemu_5.2.0.s390x.xml index 760f514d7b..7e7f58acd6 100644 --- a/tests/domaincapsdata/qemu_5.2.0.s390x.xml +++ b/tests/domaincapsdata/qemu_5.2.0.s390x.xml @@ -261,5 +261,6 @@ <s390-pv supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml index 67f8b0fd83..61969bcffd 100644 --- a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml @@ -241,5 +241,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml index 08585e6cb0..c9c5506536 100644 --- a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml @@ -248,5 +248,6 @@ <maxESGuests>450</maxESGuests> </sev> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml index 7536a42ad5..eb42eec406 100644 --- a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml @@ -263,5 +263,6 @@ <maxESGuests>450</maxESGuests> </sev> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml index 1235dd0ab7..def36192f5 100644 --- a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml @@ -200,5 +200,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml index 461e34f1d6..7177d16fa4 100644 --- a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml @@ -194,5 +194,6 @@ <backup supported='no'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.0.0.s390x.xml b/tests/domaincapsdata/qemu_6.0.0.s390x.xml index b1968668db..b977b494d4 100644 --- a/tests/domaincapsdata/qemu_6.0.0.s390x.xml +++ b/tests/domaincapsdata/qemu_6.0.0.s390x.xml @@ -262,5 +262,6 @@ <s390-pv supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml index 632f7c21d1..a5333e5293 100644 --- a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml @@ -248,5 +248,6 @@ <maxESGuests>450</maxESGuests> </sev> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml index 35d1014626..b0480cf625 100644 --- a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml @@ -244,5 +244,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml index 9d56f2dda7..5e89b5d17b 100644 --- a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml @@ -258,5 +258,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml index 591ca12d72..4a3cdbe758 100644 --- a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml @@ -244,5 +244,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml index 7558e78423..064d0014c6 100644 --- a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml @@ -244,5 +244,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml index c667b944da..194712f95c 100644 --- a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml @@ -260,5 +260,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml index 2c9ba98a0a..1da26e9c36 100644 --- a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml @@ -207,5 +207,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml index 9b546f59bc..2878c9d42e 100644 --- a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml @@ -201,5 +201,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml index fd7c9d8d5a..a2d6428c2f 100644 --- a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml @@ -158,5 +158,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml index a20d3722fd..1da12ba5f1 100644 --- a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml @@ -244,5 +244,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml index ac9d384bb3..7e24baf97f 100644 --- a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml @@ -254,5 +254,6 @@ <section node='1' size='262144' unit='KiB'/> </sections> </sgx> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml index 2419875474..1fe6b606fa 100644 --- a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml @@ -270,5 +270,6 @@ <section node='1' size='262144' unit='KiB'/> </sections> </sgx> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml index f4eb8a728b..e3f1b2d2c0 100644 --- a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml @@ -206,5 +206,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml index 053bec369b..6cae496a8e 100644 --- a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml @@ -200,5 +200,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml index 9c09174d77..f957e8167d 100644 --- a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml @@ -163,5 +163,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml index 886e14ea49..f8b9526831 100644 --- a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml @@ -254,5 +254,6 @@ <section node='1' size='262144' unit='KiB'/> </sections> </sgx> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml index 6b5e8a6820..77e015659d 100644 --- a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml @@ -244,5 +244,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml index e44804c21c..56ac94c8d7 100644 --- a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml @@ -259,5 +259,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml index 15cf6a9cf8..3ea6fa0943 100644 --- a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml @@ -156,5 +156,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml index d4069dd6f0..dc5f9d7148 100644 --- a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml @@ -244,5 +244,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml index e6997ccbc6..d58fafde51 100644 --- a/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml @@ -249,5 +249,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml index b9bf0b6a04..e5428beea1 100644 --- a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml @@ -248,5 +248,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_7.2.0.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0.x86_64.xml index 67ecdc0b12..fa1cb45d65 100644 --- a/tests/domaincapsdata/qemu_7.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.2.0.x86_64.xml @@ -249,5 +249,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> 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..eb18b5c696 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,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> 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..471a92693f 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,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> diff --git a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml index 2b17a409bd..436ca212a8 100644 --- a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml @@ -249,5 +249,6 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> + <hyperv supported='no'/> </features> </domainCapabilities> -- 2.38.2

On Thu, Jan 05, 2023 at 09:34:57 +0100, Michal Privoznik wrote:
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> ---
[....]
diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index 01714e2270..82432b60a7 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c
[...]
@@ -678,6 +679,22 @@ virDomainCapsFeatureSGXFormat(virBuffer *buf, virBufferAddLit(buf, "</sgx>\n"); }
+static void +virDomainCapsFeatureHypervFormat(virBuffer *buf, + const virDomainCapsFeatureHyperv *hyperv) +{ + if (!hyperv) { + virBufferAddLit(buf, "<hyperv supported='no'/>\n"); + return; + }
Since the hyperv features are properly expanded only starting with qemu-6.1, but I don't see a way of probing that given qemu does not support it (hv-passthrough feature is actually supported in qemu-4.2, but supposedly does nothing when expanding it) this would wrongly report that hyperv enlightenments are not supported with given qemu which is not true. Thus this should most likely completely avoid the 'hyperv' element in such case as we can't report reliable data and if this is run on x86/arm then 'no' certainly is a wrong answer as some of the hyperv enlightenments are supported for a very long time. 'no' is the right answer on other platforms though, but I don't think that it matters too much. The same then later comes when qemu doesn't report any of the features, because we know that on x86 with supported qemu versions that is simply not true.
+ + FORMAT_PROLOGUE(hyperv); + + ENUM_PROCESS(hyperv, features, virDomainHypervTypeToString); +
With appropriate changes: Reviewed-by: Peter Krempa <pkrempa@redhat.com>

Apart from setting @migratable prop to the query-cpu-model-expansion command, we will need @hv-passthrough so that we can query for expansion of Hyper-V Enlightenments supported on the current host. The idea is to run: { "execute": "query-cpu-model-expansion", "arguments": { "type": "full", "model": { "name": "host", "props": { "hv-passthrough": true } } } } Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_monitor_json.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 9822097bd7..f9928b0393 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -4921,7 +4921,8 @@ qemuMonitorJSONParseCPUModelProperty(const char *key, static virJSONValue * qemuMonitorJSONMakeCPUModel(virCPUDef *cpu, - bool migratable) + bool migratable, + bool hv_passthrough) { g_autoptr(virJSONValue) model = virJSONValueNewObject(); size_t i; @@ -4929,7 +4930,7 @@ qemuMonitorJSONMakeCPUModel(virCPUDef *cpu, if (virJSONValueObjectAppendString(model, "name", cpu->model) < 0) return NULL; - if (cpu->nfeatures || !migratable) { + if (cpu->nfeatures || !migratable || hv_passthrough) { g_autoptr(virJSONValue) props = virJSONValueNewObject(); for (i = 0; i < cpu->nfeatures; i++) { @@ -4951,6 +4952,11 @@ qemuMonitorJSONMakeCPUModel(virCPUDef *cpu, return NULL; } + if (hv_passthrough && + virJSONValueObjectAppendBoolean(props, "hv-passthrough", true) < 0) { + return NULL; + } + if (virJSONValueObjectAppend(model, "props", &props) < 0) return NULL; } @@ -5079,7 +5085,7 @@ qemuMonitorJSONGetCPUModelExpansion(qemuMonitor *mon, *model_info = NULL; - if (!(model = qemuMonitorJSONMakeCPUModel(cpu, migratable))) + if (!(model = qemuMonitorJSONMakeCPUModel(cpu, migratable, false))) return -1; if ((rc = qemuMonitorJSONQueryCPUModelExpansionOne(mon, type, &model, &data)) <= 0) @@ -5128,8 +5134,8 @@ qemuMonitorJSONGetCPUModelBaseline(qemuMonitor *mon, virJSONValue *cpu_props = NULL; const char *cpu_name = ""; - if (!(model_a = qemuMonitorJSONMakeCPUModel(cpu_a, true)) || - !(model_b = qemuMonitorJSONMakeCPUModel(cpu_b, true))) + if (!(model_a = qemuMonitorJSONMakeCPUModel(cpu_a, true, false)) || + !(model_b = qemuMonitorJSONMakeCPUModel(cpu_b, true, false))) return -1; if (!(cmd = qemuMonitorJSONMakeCommand("query-cpu-model-baseline", @@ -5166,8 +5172,8 @@ qemuMonitorJSONGetCPUModelComparison(qemuMonitor *mon, const char *data_result; virJSONValue *data; - if (!(model_a = qemuMonitorJSONMakeCPUModel(cpu_a, true)) || - !(model_b = qemuMonitorJSONMakeCPUModel(cpu_b, true))) + if (!(model_a = qemuMonitorJSONMakeCPUModel(cpu_a, true, false)) || + !(model_b = qemuMonitorJSONMakeCPUModel(cpu_b, true, false))) return -1; if (!(cmd = qemuMonitorJSONMakeCommand("query-cpu-model-comparison", -- 2.38.2

This continues and finishes propagation of the @hv_passthrough argument started in the previous commit. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 8 ++++---- src/qemu/qemu_driver.c | 3 ++- src/qemu/qemu_monitor.c | 5 +++-- src/qemu/qemu_monitor.h | 1 + src/qemu/qemu_monitor_json.c | 3 ++- src/qemu/qemu_monitor_json.h | 1 + tests/cputest.c | 2 +- 7 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 0c16366f21..4c75eea64e 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3069,15 +3069,15 @@ virQEMUCapsProbeQMPHostCPU(virQEMUCaps *qemuCaps, if (ARCH_IS_S390(qemuCaps->arch)) fail_no_props = false; - if (qemuMonitorGetCPUModelExpansion(mon, type, cpu, true, fail_no_props, - &modelInfo) < 0) + if (qemuMonitorGetCPUModelExpansion(mon, type, cpu, true, false, + fail_no_props, &modelInfo) < 0) return -1; /* Try to check migratability of each feature. */ if (modelInfo && ARCH_IS_X86(qemuCaps->arch) && - qemuMonitorGetCPUModelExpansion(mon, type, cpu, false, fail_no_props, - &nonMigratable) < 0) + qemuMonitorGetCPUModelExpansion(mon, type, cpu, false, false, + fail_no_props, &nonMigratable) < 0) return -1; if (nonMigratable) { diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d509582719..13ef9285fc 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -12210,7 +12210,8 @@ qemuConnectCPUModelBaseline(virQEMUCaps *qemuCaps, : QEMU_MONITOR_CPU_MODEL_EXPANSION_STATIC; if (qemuMonitorGetCPUModelExpansion(proc->mon, expansion_type, - baseline, true, false, &result) < 0) + baseline, true, + false, false, &result) < 0) return NULL; if (qemuConnectStealCPUModelFromInfo(baseline, &result) < 0) diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 734364e070..b2e4311ea9 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -3181,6 +3181,7 @@ qemuMonitorGetCPUModelExpansion(qemuMonitor *mon, qemuMonitorCPUModelExpansionType type, virCPUDef *cpu, bool migratable, + bool hv_passthrough, bool fail_no_props, qemuMonitorCPUModelInfo **model_info) { @@ -3189,8 +3190,8 @@ qemuMonitorGetCPUModelExpansion(qemuMonitor *mon, QEMU_CHECK_MONITOR(mon); return qemuMonitorJSONGetCPUModelExpansion(mon, type, cpu, - migratable, fail_no_props, - model_info); + migratable, hv_passthrough, + fail_no_props, model_info); } diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 906a919f52..0d4a52bf4a 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1140,6 +1140,7 @@ int qemuMonitorGetCPUModelExpansion(qemuMonitor *mon, qemuMonitorCPUModelExpansionType type, virCPUDef *cpu, bool migratable, + bool hv_passthrough, bool fail_no_props, qemuMonitorCPUModelInfo **model_info); diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index f9928b0393..3b96f4e037 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -5072,6 +5072,7 @@ qemuMonitorJSONGetCPUModelExpansion(qemuMonitor *mon, qemuMonitorCPUModelExpansionType type, virCPUDef *cpu, bool migratable, + bool hv_passthrough, bool fail_no_props, qemuMonitorCPUModelInfo **model_info) { @@ -5085,7 +5086,7 @@ qemuMonitorJSONGetCPUModelExpansion(qemuMonitor *mon, *model_info = NULL; - if (!(model = qemuMonitorJSONMakeCPUModel(cpu, migratable, false))) + if (!(model = qemuMonitorJSONMakeCPUModel(cpu, migratable, hv_passthrough))) return -1; if ((rc = qemuMonitorJSONQueryCPUModelExpansionOne(mon, type, &model, &data)) <= 0) diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index 484cb09830..a86f054b8b 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -449,6 +449,7 @@ qemuMonitorJSONGetCPUModelExpansion(qemuMonitor *mon, qemuMonitorCPUModelExpansionType type, virCPUDef *cpu, bool migratable, + bool hv_passthrough, bool fail_no_props, qemuMonitorCPUModelInfo **model_info) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(6); diff --git a/tests/cputest.c b/tests/cputest.c index 52e0022ac3..9b76cce2a8 100644 --- a/tests/cputest.c +++ b/tests/cputest.c @@ -455,7 +455,7 @@ cpuTestMakeQEMUCaps(const struct data *data) if (qemuMonitorGetCPUModelExpansion(qemuMonitorTestGetMonitor(testMon), QEMU_MONITOR_CPU_MODEL_EXPANSION_STATIC, - cpu, true, fail_no_props, &model) < 0) + cpu, true, false, fail_no_props, &model) < 0) return NULL; if (!(qemuCaps = virQEMUCapsNew())) -- 2.38.2

Now that we have qemuMonitorGetCPUModelExpansion() aware of Hyper-V Enlightenments, we can start querying it. Two conditions need to be met: 1) KVM is in use, 2) Arch is either x86 or arm. It may look like modifying the first call to qemuMonitorGetCPUModelExpansion() inside of virQEMUCapsProbeQMPHostCPU() would be sufficient but it is not. We really need to ask QEMU for full expansion and the first call does not guarantee that. For the test data, I've just copied whatever 'query-cpu-model-expansion' returned earlier, therefore there are no hv-* props. But that's okay - the full expansion is not stored in cache (and thus not formatted in tests/qemucapabilitiesdata/caps_*.replies files either). This is purely runtime thing. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_capabilities.c | 159 ++++++ .../caps_4.2.0.aarch64.replies | 45 ++ .../caps_4.2.0.aarch64.xml | 1 + .../caps_4.2.0.x86_64.replies | 317 ++++++++++++ .../caps_4.2.0.x86_64.xml | 1 + .../caps_5.0.0.aarch64.replies | 46 ++ .../caps_5.0.0.aarch64.xml | 1 + .../caps_5.0.0.x86_64.replies | 318 ++++++++++++ .../caps_5.0.0.x86_64.xml | 1 + .../caps_5.1.0.x86_64.replies | 323 ++++++++++++ .../caps_5.1.0.x86_64.xml | 1 + .../caps_5.2.0.aarch64.replies | 47 ++ .../caps_5.2.0.aarch64.xml | 1 + .../caps_5.2.0.x86_64.replies | 324 +++++++++++++ .../caps_5.2.0.x86_64.xml | 1 + .../caps_6.0.0.aarch64.replies | 47 ++ .../caps_6.0.0.aarch64.xml | 1 + .../caps_6.0.0.x86_64.replies | 336 +++++++++++++ .../caps_6.0.0.x86_64.xml | 1 + .../caps_6.1.0.x86_64.replies | 338 +++++++++++++ .../caps_6.1.0.x86_64.xml | 1 + .../caps_6.2.0.aarch64.replies | 47 ++ .../caps_6.2.0.aarch64.xml | 1 + .../caps_6.2.0.x86_64.replies | 348 +++++++++++++ .../caps_6.2.0.x86_64.xml | 1 + .../caps_7.0.0.aarch64.replies | 48 ++ .../caps_7.0.0.aarch64.xml | 1 + .../caps_7.0.0.x86_64.replies | 352 ++++++++++++++ .../caps_7.0.0.x86_64.xml | 1 + .../caps_7.1.0.x86_64.replies | 353 ++++++++++++++ .../caps_7.1.0.x86_64.xml | 1 + .../caps_7.2.0.x86_64.replies | 353 ++++++++++++++ .../caps_7.2.0.x86_64.xml | 1 + .../caps_8.0.0.x86_64.replies | 458 ++++++++++++++++++ .../caps_8.0.0.x86_64.xml | 16 + 35 files changed, 4291 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 4c75eea64e..93585f5af1 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -766,6 +766,8 @@ struct _virQEMUCaps { virSGXCapability *sgxCapabilities; + virDomainCapsFeatureHyperv *hypervCapabilities; + /* Capabilities which may differ depending on the accelerator. */ virQEMUCapsAccel kvm; virQEMUCapsAccel hvf; @@ -2019,6 +2021,9 @@ virQEMUCaps *virQEMUCapsNewCopy(virQEMUCaps *qemuCaps) qemuCaps->sgxCapabilities) < 0) return NULL; + ret->hypervCapabilities = g_memdup(qemuCaps->hypervCapabilities, + sizeof(virDomainCapsFeatureHyperv)); + return g_steal_pointer(&ret); } @@ -2059,6 +2064,8 @@ void virQEMUCapsDispose(void *obj) virSEVCapabilitiesFree(qemuCaps->sevCapabilities); virSGXCapabilitiesFree(qemuCaps->sgxCapabilities); + g_free(qemuCaps->hypervCapabilities); + virQEMUCapsAccelClear(&qemuCaps->kvm); virQEMUCapsAccelClear(&qemuCaps->hvf); virQEMUCapsAccelClear(&qemuCaps->tcg); @@ -3029,6 +3036,66 @@ virQEMUCapsProbeCPUDefinitionsTest(virQEMUCaps *qemuCaps, } +static int +virQEMUCapsProbeHypervCapabilities(virQEMUCaps *qemuCaps, + qemuMonitorCPUModelInfo *fullQEMU) +{ + g_autofree virDomainCapsFeatureHyperv *hvcaps = NULL; + size_t i; + + if (!fullQEMU) + return 0; + + hvcaps = g_new0(virDomainCapsFeatureHyperv, 1); + hvcaps->features.report = true; + + for (i = 0; i <fullQEMU->nprops; i++) { + qemuMonitorCPUProperty prop = fullQEMU->props[i]; + const char *name; + int hvprop; + + if (!(name = STRSKIP(prop.name, "hv-"))) + continue; + + hvprop = virDomainHypervTypeFromString(name); + + if (hvprop < 0) { + /* Some names are different. For instance QEMU reports hv-vendor-id + * but we have it as vendor_id (because of XML). Replace hyphens + * with underscores and try again. */ + g_autofree char *underscoreName = NULL; + + underscoreName = virStringReplace(name, "-", "_"); + + hvprop = virDomainHypervTypeFromString(underscoreName); + if (hvprop < 0) { + VIR_DEBUG("Not yet implement Hyper-V enlightenment: %s", + prop.name); + continue; + } + } + + if ((prop.type == QEMU_MONITOR_CPU_PROPERTY_BOOLEAN && + prop.value.boolean) || + (prop.type == QEMU_MONITOR_CPU_PROPERTY_NUMBER && + prop.value.number > 0) || + (prop.type == QEMU_MONITOR_CPU_PROPERTY_STRING && + prop.value.string)) + VIR_DOMAIN_CAPS_ENUM_SET(hvcaps->features, hvprop); + + } + + if (hvcaps->features.values) { + hvcaps->supported = VIR_TRISTATE_BOOL_YES; + } else { + hvcaps->supported = VIR_TRISTATE_BOOL_NO; + } + + qemuCaps->hypervCapabilities = g_steal_pointer(&hvcaps); + return 0; +} + + static int virQEMUCapsProbeQMPHostCPU(virQEMUCaps *qemuCaps, virQEMUCapsAccel *accel, @@ -3110,6 +3177,18 @@ virQEMUCapsProbeQMPHostCPU(virQEMUCaps *qemuCaps, modelInfo->migratability = true; } + if (virQEMUCapsTypeIsAccelerated(virtType) && + (ARCH_IS_X86(qemuCaps->arch) || ARCH_IS_ARM(qemuCaps->arch))) { + g_autoptr(qemuMonitorCPUModelInfo) fullQEMU = NULL; + + if (qemuMonitorGetCPUModelExpansion(mon, QEMU_MONITOR_CPU_MODEL_EXPANSION_FULL, + cpu, false, true, true, &fullQEMU) < 0) + return -1; + + if (virQEMUCapsProbeHypervCapabilities(qemuCaps, fullQEMU) < 0) + return -1; + } + accel->hostCPU.info = g_steal_pointer(&modelInfo); return 0; } @@ -4337,6 +4416,53 @@ virQEMUCapsParseSGXInfo(virQEMUCaps *qemuCaps, } +static int +virQEMUCapsParseHypervCapabilities(virQEMUCaps *qemuCaps, + xmlXPathContextPtr ctxt) +{ + g_autofree virDomainCapsFeatureHyperv *hvcaps = NULL; + xmlNodePtr n = NULL; + g_autofree xmlNodePtr *capNodes = NULL; + int ncapNodes; + size_t i; + + if (!(n = virXPathNode("./hypervCapabilities", ctxt))) + return 0; + + hvcaps = g_new0(virDomainCapsFeatureHyperv, 1); + if (virXMLPropTristateBool(n, "supported", VIR_XML_PROP_REQUIRED, + &hvcaps->supported) < 0) { + return -1; + } + + if ((ncapNodes = virXPathNodeSet("./hypervCapabilities/cap", + ctxt, &capNodes)) < 0) { + return -1; + } + + hvcaps->features.report = ncapNodes > 0; + for (i = 0; i < ncapNodes; i++) { + g_autofree char *name = virXMLPropStringRequired(capNodes[i], "name"); + int val; + + if (!name) + return -1; + + if ((val = virDomainHypervTypeFromString(name)) < 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unsupported HyperV Enlightenment feature: %s"), + name); + return -1; + } + + VIR_DOMAIN_CAPS_ENUM_SET(hvcaps->features, val); + } + + qemuCaps->hypervCapabilities = g_steal_pointer(&hvcaps); + return 0; +} + + static int virQEMUCapsParseFlags(virQEMUCaps *qemuCaps, xmlXPathContextPtr ctxt) { @@ -4628,6 +4754,9 @@ virQEMUCapsLoadCache(virArch hostArch, if (virQEMUCapsParseSGXInfo(qemuCaps, ctxt) < 0) return -1; + if (virQEMUCapsParseHypervCapabilities(qemuCaps, ctxt) < 0) + return -1; + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM)) virQEMUCapsInitHostCPUModel(qemuCaps, hostArch, VIR_DOMAIN_VIRT_KVM); if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_HVF)) @@ -4848,6 +4977,33 @@ virQEMUCapsFormatSGXInfo(virQEMUCaps *qemuCaps, } +static void +virQEMUCapsFormatHypervCapabilities(virQEMUCaps *qemuCaps, + virBuffer *buf) +{ + virDomainCapsFeatureHyperv *hvcaps = qemuCaps->hypervCapabilities; + virBuffer attrBuf = VIR_BUFFER_INITIALIZER; + virBuffer childBuf = VIR_BUFFER_INIT_CHILD(buf); + + virBufferAsprintf(&attrBuf, " supported='%s'", + virTristateBoolTypeToString(hvcaps->supported)); + + if (hvcaps->supported) { + size_t i; + + for (i = 0; i < sizeof(hvcaps->features.values) * CHAR_BIT; i++) { + if (!(hvcaps->features.values & (1U << i))) + continue; + + virBufferAsprintf(&childBuf, "<cap name='%s'/>\n", + virDomainHypervTypeToString(i)); + } + } + + return virXMLFormatElement(buf, "hypervCapabilities", &attrBuf, &childBuf); +} + + char * virQEMUCapsFormatCache(virQEMUCaps *qemuCaps) { @@ -4932,6 +5088,9 @@ virQEMUCapsFormatCache(virQEMUCaps *qemuCaps) if (qemuCaps->sgxCapabilities) virQEMUCapsFormatSGXInfo(qemuCaps, &buf); + if (qemuCaps->hypervCapabilities) + virQEMUCapsFormatHypervCapabilities(qemuCaps, &buf); + if (qemuCaps->kvmSupportsNesting) virBufferAddLit(&buf, "<kvmSupportsNesting/>\n"); diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.replies b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.replies index f947ce9aee..f8619d8843 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.replies +++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.replies @@ -21525,6 +21525,51 @@ "id": "libvirt-42" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-43" +} + +{ + "return": { + "model": { + "name": "host", + "props": { + "sve768": false, + "sve128": true, + "sve1024": false, + "sve1280": false, + "sve896": false, + "sve256": true, + "sve1536": false, + "sve1792": false, + "sve384": false, + "sve": true, + "sve2048": false, + "sve512": true, + "aarch64": true, + "pmu": true, + "sve1920": false, + "sve1152": false, + "sve640": false, + "sve1408": false, + "sve1664": false + } + } + }, + "id": "libvirt-43" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml index 1f42ff6cf9..22bf577a7d 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml @@ -379,4 +379,5 @@ <machine type='tcg' name='lm3s811evb' maxCpus='1' defaultCPU='cortex-m3-arm-cpu'/> <gic version='3' kernel='yes' emulated='yes'/> <gic version='2' kernel='no' emulated='yes'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.replies index 12ebc41e49..a45fd2f669 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.replies @@ -24185,6 +24185,323 @@ "id": "libvirt-47" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-48" +} + +{ + "return": { + "model": { + "name": "base", + "props": { + "vmx-entry-load-rtit-ctl": false, + "cmov": true, + "ia64": false, + "ssb-no": false, + "aes": true, + "vmx-apicv-xapic": true, + "mmx": true, + "rdpid": false, + "arat": true, + "vmx-page-walk-4": true, + "vmx-page-walk-5": false, + "gfni": false, + "ibrs-all": false, + "vmx-desc-exit": true, + "pause-filter": false, + "xsavec": true, + "intel-pt": false, + "vmx-cr8-store-exit": true, + "vmx-rdseed-exit": true, + "vmx-eptp-switching": true, + "kvm-asyncpf": true, + "perfctr-core": false, + "mpx": true, + "pbe": false, + "avx512cd": false, + "decodeassists": false, + "vmx-exit-load-efer": true, + "vmx-exit-clear-bndcfgs": false, + "sse4.1": true, + "family": 6, + "vmx-vmwrite-vmexit-fields": true, + "vmx-vnmi": true, + "vmx-true-ctls": true, + "vmx-ept-execonly": true, + "vmx-exit-save-efer": true, + "vmx-invept-all-context": true, + "wbnoinvd": false, + "avx512f": false, + "msr": true, + "mce": true, + "mca": true, + "xcrypt": false, + "vmx-exit-load-pat": true, + "vmx-intr-exit": true, + "min-level": 22, + "vmx-flexpriority": true, + "xgetbv1": true, + "cid": false, + "ds": false, + "fxsr": true, + "avx512-bf16": false, + "vmx-cr8-load-exit": true, + "xsaveopt": true, + "vmx-apicv-vid": false, + "vmx-exit-save-pat": true, + "xtpr": false, + "tsx-ctrl": false, + "vmx-ple": false, + "avx512vl": false, + "avx512-vpopcntdq": false, + "phe": false, + "extapic": false, + "3dnowprefetch": true, + "vmx-vmfunc": true, + "vmx-activity-shutdown": false, + "avx512vbmi2": false, + "cr8legacy": false, + "vmx-encls-exit": false, + "stibp": true, + "vmx-msr-bitmap": true, + "xcrypt-en": false, + "vmx-mwait-exit": true, + "vmx-pml": true, + "vmx-nmi-exit": true, + "vmx-invept-single-context-noglobals": true, + "pn": false, + "rsba": false, + "dca": false, + "vendor": "GenuineIntel", + "vmx-unrestricted-guest": true, + "vmx-cr3-store-noexit": true, + "pku": false, + "smx": false, + "cmp-legacy": false, + "avx512-4fmaps": false, + "vmcb-clean": false, + "hle": true, + "3dnowext": false, + "amd-no-ssb": false, + "npt": false, + "rdctl-no": false, + "vmx-invvpid": true, + "clwb": false, + "lbrv": false, + "adx": true, + "ss": true, + "pni": true, + "svm-lock": false, + "smep": true, + "smap": true, + "pfthreshold": false, + "vmx-invpcid-exit": true, + "x2apic": true, + "avx512vbmi": false, + "avx512vnni": false, + "vmx-apicv-x2apic": true, + "kvm-pv-sched-yield": true, + "vmx-invlpg-exit": true, + "vmx-invvpid-all-context": true, + "vmx-activity-hlt": true, + "flushbyasid": false, + "f16c": true, + "vmx-exit-ack-intr": true, + "ace2-en": false, + "pae": true, + "pat": true, + "sse": true, + "phe-en": false, + "vmx-tsc-offset": true, + "kvm-nopiodelay": true, + "tm": false, + "kvmclock-stable-bit": true, + "vmx-rdtsc-exit": true, + "hypervisor": true, + "vmx-rdtscp-exit": true, + "mds-no": false, + "pcommit": false, + "vmx-vpid": true, + "syscall": true, + "avx512dq": false, + "svm": false, + "invtsc": true, + "vmx-monitor-exit": true, + "sse2": true, + "ssbd": true, + "vmx-wbinvd-exit": true, + "est": false, + "kvm-poll-control": true, + "avx512ifma": false, + "tm2": false, + "kvm-pv-eoi": true, + "kvm-pv-ipi": true, + "cx8": true, + "vmx-invvpid-single-addr": true, + "waitpkg": false, + "cldemote": false, + "vmx-ept": true, + "kvm-mmu": false, + "sse4.2": true, + "pge": true, + "avx512bitalg": false, + "pdcm": false, + "vmx-entry-load-bndcfgs": false, + "vmx-exit-clear-rtit-ctl": false, + "model": 94, + "movbe": true, + "nrip-save": false, + "ssse3": true, + "sse4a": false, + "vmx-pause-exit": true, + "invpcid": true, + "pdpe1gb": true, + "tsc-deadline": true, + "skip-l1dfl-vmentry": true, + "vmx-exit-load-perf-global-ctrl": false, + "fma": true, + "cx16": true, + "de": true, + "stepping": 3, + "xsave": true, + "clflush": true, + "skinit": false, + "tsc": true, + "tce": false, + "fpu": true, + "ds-cpl": false, + "ibs": false, + "fma4": false, + "vmx-exit-nosave-debugctl": true, + "la57": false, + "vmx-invept": true, + "osvw": false, + "apic": true, + "pmm": false, + "vmx-entry-noload-debugctl": true, + "vmx-eptad": true, + "spec-ctrl": true, + "vmx-posted-intr": false, + "vmx-apicv-register": false, + "tsc-adjust": true, + "kvm-steal-time": true, + "kvmclock": true, + "vmx-zero-len-inject": false, + "pschange-mc-no": true, + "vmx-rdrand-exit": true, + "lwp": false, + "amd-ssbd": false, + "xop": false, + "ibpb": false, + "avx": true, + "core-capability": false, + "vmx-invept-single-context": true, + "movdiri": false, + "acpi": false, + "avx512bw": false, + "ace2": false, + "fsgsbase": true, + "vmx-ept-2mb": true, + "vmx-ept-1gb": true, + "ht": false, + "vmx-io-exit": true, + "nx": true, + "pclmulqdq": true, + "mmxext": false, + "popcnt": true, + "vaes": false, + "movdir64b": false, + "xsaves": true, + "vmx-shadow-vmcs": true, + "lm": true, + "vmx-exit-save-preemption-timer": true, + "vmx-entry-load-pat": true, + "vmx-entry-load-perf-global-ctrl": false, + "vmx-io-bitmap": true, + "umip": true, + "vmx-store-lma": true, + "vmx-movdr-exit": true, + "pse": true, + "avx2": true, + "sep": true, + "virt-ssbd": false, + "vmx-cr3-load-noexit": true, + "nodeid-msr": false, + "md-clear": true, + "misalignsse": false, + "split-lock-detect": false, + "min-xlevel": 2147483656, + "bmi1": true, + "bmi2": true, + "kvm-pv-unhalt": true, + "tsc-scale": false, + "topoext": false, + "vmx-preemption-timer": true, + "clflushopt": true, + "vmx-vnmi-pending": true, + "monitor": false, + "vmx-vintr-pending": true, + "avx512er": false, + "pmm-en": false, + "pcid": true, + "taa-no": false, + "arch-capabilities": true, + "vmx-secondary-ctls": true, + "vmx-xsaves": true, + "clzero": false, + "3dnow": false, + "erms": true, + "vmx-entry-ia32e-mode": true, + "lahf-lm": true, + "vpclmulqdq": false, + "vmx-ins-outs": true, + "fxsr-opt": false, + "xstore": false, + "rtm": true, + "kvm-hint-dedicated": false, + "lmce": true, + "perfctr-nb": false, + "rdrand": true, + "rdseed": true, + "avx512-4vnniw": false, + "vme": true, + "vmx": true, + "dtes64": false, + "mtrr": true, + "rdtscp": true, + "xsaveerptr": false, + "pse36": true, + "kvm-pv-tlb-flush": true, + "vmx-activity-wait-sipi": false, + "tbm": false, + "wdt": false, + "vmx-rdpmc-exit": true, + "vmx-mtf": true, + "vmx-entry-load-efer": true, + "model-id": "Intel(R) Xeon(R) CPU E3-1245 v5 @ 3.50GHz", + "sha-ni": false, + "abm": true, + "vmx-ept-advanced-exitinfo": false, + "avx512pf": false, + "vmx-hlt-exit": true, + "xstore-en": false + } + } + }, + "id": "libvirt-48" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml index 438927aad0..d716755e82 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml @@ -2538,4 +2538,5 @@ <machine type='tcg' name='pc-q35-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes'/> <machine type='tcg' name='pc-i440fx-3.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes'/> <machine type='tcg' name='pc-q35-2.11' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.replies b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.replies index 9f7d3da252..e63c9d5f0a 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.replies +++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.replies @@ -22879,6 +22879,52 @@ "id": "libvirt-43" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-44" +} + +{ + "return": { + "model": { + "name": "host", + "props": { + "sve768": false, + "sve128": false, + "sve1024": false, + "sve1280": false, + "sve896": false, + "sve256": false, + "sve1536": false, + "sve1792": false, + "sve384": false, + "sve": false, + "sve2048": false, + "kvm-no-adjvtime": false, + "sve512": false, + "aarch64": true, + "pmu": true, + "sve1920": false, + "sve1152": false, + "sve640": false, + "sve1408": false, + "sve1664": false + } + } + }, + "id": "libvirt-44" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml index ff989e0878..bfef83d4d4 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml @@ -403,4 +403,5 @@ <machine type='tcg' name='terrier' maxCpus='1' defaultCPU='pxa270-c5-arm-cpu'/> <gic version='3' kernel='yes' emulated='yes'/> <gic version='2' kernel='no' emulated='yes'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.replies index 81cfc70dc4..13b9b02e4c 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.replies @@ -25639,6 +25639,324 @@ "id": "libvirt-48" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-49" +} + +{ + "return": { + "model": { + "name": "base", + "props": { + "vmx-entry-load-rtit-ctl": false, + "cmov": true, + "ia64": false, + "ssb-no": false, + "aes": true, + "vmx-apicv-xapic": true, + "mmx": true, + "rdpid": false, + "arat": true, + "vmx-page-walk-4": true, + "vmx-page-walk-5": false, + "gfni": false, + "ibrs-all": false, + "vmx-desc-exit": true, + "pause-filter": false, + "xsavec": true, + "intel-pt": false, + "vmx-cr8-store-exit": true, + "vmx-rdseed-exit": true, + "vmx-eptp-switching": true, + "kvm-asyncpf": true, + "perfctr-core": false, + "mpx": true, + "pbe": false, + "avx512cd": false, + "decodeassists": false, + "vmx-exit-load-efer": true, + "vmx-exit-clear-bndcfgs": false, + "sse4.1": true, + "family": 6, + "vmx-vmwrite-vmexit-fields": true, + "vmx-vnmi": true, + "vmx-true-ctls": true, + "vmx-ept-execonly": true, + "vmx-exit-save-efer": true, + "vmx-invept-all-context": true, + "wbnoinvd": false, + "avx512f": false, + "msr": true, + "mce": true, + "mca": true, + "xcrypt": false, + "vmx-exit-load-pat": true, + "vmx-intr-exit": true, + "min-level": 22, + "vmx-flexpriority": true, + "xgetbv1": true, + "cid": false, + "ds": false, + "fxsr": true, + "avx512-bf16": false, + "vmx-cr8-load-exit": true, + "xsaveopt": true, + "vmx-apicv-vid": false, + "vmx-exit-save-pat": true, + "xtpr": false, + "tsx-ctrl": false, + "vmx-ple": false, + "avx512vl": false, + "avx512-vpopcntdq": false, + "phe": false, + "extapic": false, + "3dnowprefetch": true, + "vmx-vmfunc": true, + "vmx-activity-shutdown": false, + "avx512vbmi2": false, + "cr8legacy": false, + "vmx-encls-exit": false, + "stibp": true, + "vmx-msr-bitmap": true, + "xcrypt-en": false, + "vmx-mwait-exit": true, + "vmx-pml": true, + "vmx-nmi-exit": true, + "vmx-invept-single-context-noglobals": true, + "pn": false, + "rsba": false, + "dca": false, + "vendor": "GenuineIntel", + "vmx-unrestricted-guest": true, + "vmx-cr3-store-noexit": true, + "pku": false, + "smx": false, + "cmp-legacy": false, + "avx512-4fmaps": false, + "vmcb-clean": false, + "hle": true, + "3dnowext": false, + "amd-no-ssb": false, + "npt": false, + "rdctl-no": false, + "vmx-invvpid": true, + "clwb": false, + "lbrv": false, + "adx": true, + "ss": true, + "pni": true, + "svm-lock": false, + "smep": true, + "smap": true, + "pfthreshold": false, + "vmx-invpcid-exit": true, + "x2apic": true, + "avx512vbmi": false, + "avx512vnni": false, + "vmx-apicv-x2apic": true, + "kvm-pv-sched-yield": true, + "vmx-invlpg-exit": true, + "vmx-invvpid-all-context": true, + "vmx-activity-hlt": true, + "flushbyasid": false, + "f16c": true, + "vmx-exit-ack-intr": true, + "ace2-en": false, + "pae": true, + "pat": true, + "sse": true, + "phe-en": false, + "vmx-tsc-offset": true, + "kvm-nopiodelay": true, + "tm": false, + "kvmclock-stable-bit": true, + "vmx-rdtsc-exit": true, + "hypervisor": true, + "vmx-rdtscp-exit": true, + "mds-no": false, + "pcommit": false, + "vmx-vpid": true, + "syscall": true, + "avx512dq": false, + "svm": false, + "invtsc": true, + "vmx-monitor-exit": true, + "sse2": true, + "ssbd": true, + "vmx-wbinvd-exit": true, + "est": false, + "kvm-poll-control": true, + "avx512ifma": false, + "tm2": false, + "kvm-pv-eoi": true, + "kvm-pv-ipi": true, + "cx8": true, + "vmx-invvpid-single-addr": true, + "waitpkg": false, + "cldemote": false, + "vmx-ept": true, + "kvm-mmu": false, + "sse4.2": true, + "pge": true, + "avx512bitalg": false, + "pdcm": false, + "vmx-entry-load-bndcfgs": false, + "vmx-exit-clear-rtit-ctl": false, + "model": 94, + "movbe": true, + "nrip-save": false, + "ssse3": true, + "sse4a": false, + "vmx-pause-exit": true, + "invpcid": true, + "pdpe1gb": true, + "tsc-deadline": true, + "skip-l1dfl-vmentry": true, + "vmx-exit-load-perf-global-ctrl": false, + "fma": true, + "cx16": true, + "de": true, + "stepping": 3, + "xsave": true, + "clflush": true, + "skinit": false, + "tsc": true, + "tce": false, + "fpu": true, + "ds-cpl": false, + "ibs": false, + "fma4": false, + "vmx-exit-nosave-debugctl": true, + "la57": false, + "vmx-invept": true, + "osvw": false, + "apic": true, + "pmm": false, + "vmx-entry-noload-debugctl": true, + "vmx-eptad": true, + "spec-ctrl": true, + "vmx-posted-intr": false, + "vmx-apicv-register": false, + "tsc-adjust": true, + "kvm-steal-time": true, + "kvmclock": true, + "vmx-zero-len-inject": false, + "pschange-mc-no": true, + "vmx-rdrand-exit": true, + "lwp": false, + "amd-ssbd": false, + "xop": false, + "ibpb": false, + "avx": true, + "core-capability": false, + "vmx-invept-single-context": true, + "movdiri": false, + "acpi": false, + "avx512bw": false, + "ace2": false, + "fsgsbase": true, + "vmx-ept-2mb": true, + "vmx-ept-1gb": true, + "ht": false, + "vmx-io-exit": true, + "nx": true, + "pclmulqdq": true, + "mmxext": false, + "popcnt": true, + "vaes": false, + "movdir64b": false, + "xsaves": true, + "vmx-shadow-vmcs": true, + "lm": true, + "vmx-exit-save-preemption-timer": true, + "vmx-entry-load-pat": true, + "vmx-entry-load-perf-global-ctrl": false, + "vmx-io-bitmap": true, + "umip": true, + "vmx-store-lma": true, + "vmx-movdr-exit": true, + "pse": true, + "avx2": true, + "sep": true, + "virt-ssbd": false, + "vmx-cr3-load-noexit": true, + "nodeid-msr": false, + "md-clear": true, + "misalignsse": false, + "split-lock-detect": false, + "min-xlevel": 2147483656, + "bmi1": true, + "bmi2": true, + "kvm-pv-unhalt": true, + "tsc-scale": false, + "topoext": false, + "amd-stibp": false, + "vmx-preemption-timer": true, + "clflushopt": true, + "vmx-vnmi-pending": true, + "monitor": false, + "vmx-vintr-pending": true, + "avx512er": false, + "pmm-en": false, + "pcid": true, + "taa-no": false, + "arch-capabilities": true, + "vmx-secondary-ctls": true, + "vmx-xsaves": true, + "clzero": false, + "3dnow": false, + "erms": true, + "vmx-entry-ia32e-mode": true, + "lahf-lm": true, + "vpclmulqdq": false, + "vmx-ins-outs": true, + "fxsr-opt": false, + "xstore": false, + "rtm": true, + "kvm-hint-dedicated": false, + "lmce": true, + "perfctr-nb": false, + "rdrand": true, + "rdseed": true, + "avx512-4vnniw": false, + "vme": true, + "vmx": true, + "dtes64": false, + "mtrr": true, + "rdtscp": true, + "xsaveerptr": false, + "pse36": true, + "kvm-pv-tlb-flush": true, + "vmx-activity-wait-sipi": false, + "tbm": false, + "wdt": false, + "vmx-rdpmc-exit": true, + "vmx-mtf": true, + "vmx-entry-load-efer": true, + "model-id": "Intel(R) Xeon(R) CPU E3-1245 v5 @ 3.50GHz", + "sha-ni": false, + "abm": true, + "vmx-ept-advanced-exitinfo": false, + "avx512pf": false, + "vmx-hlt-exit": true, + "xstore-en": false + } + } + }, + "id": "libvirt-49" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml index bf32de2ee4..a7417187f6 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml @@ -2843,4 +2843,5 @@ <machine type='tcg' name='pc-q35-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes'/> <machine type='tcg' name='pc-i440fx-3.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes'/> <machine type='tcg' name='pc-q35-2.11' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.replies index 51e93819b0..d66583fa92 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.replies @@ -26601,6 +26601,329 @@ "id": "libvirt-49" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-50" +} + +{ + "return": { + "model": { + "name": "base", + "props": { + "vmx-entry-load-rtit-ctl": false, + "cmov": true, + "ia64": false, + "ssb-no": false, + "aes": true, + "vmx-apicv-xapic": false, + "mmx": true, + "rdpid": true, + "arat": true, + "vmx-page-walk-4": false, + "vmx-page-walk-5": false, + "gfni": false, + "ibrs-all": false, + "vmx-desc-exit": false, + "pause-filter": false, + "xsavec": true, + "intel-pt": false, + "vmx-cr8-store-exit": false, + "vmx-rdseed-exit": false, + "vmx-eptp-switching": false, + "kvm-asyncpf": true, + "perfctr-core": true, + "mpx": false, + "pbe": false, + "avx512cd": false, + "decodeassists": false, + "vmx-exit-load-efer": false, + "vmx-exit-clear-bndcfgs": false, + "sse4.1": true, + "family": 23, + "vmx-vmwrite-vmexit-fields": false, + "vmx-vnmi": false, + "vmx-true-ctls": false, + "vmx-ept-execonly": false, + "vmx-exit-save-efer": false, + "vmx-invept-all-context": false, + "wbnoinvd": true, + "avx512f": false, + "msr": true, + "mce": true, + "mca": true, + "xcrypt": false, + "vmx-exit-load-pat": false, + "vmx-intr-exit": false, + "min-level": 16, + "vmx-flexpriority": false, + "xgetbv1": true, + "cid": false, + "ds": false, + "fxsr": true, + "avx512-bf16": false, + "vmx-cr8-load-exit": false, + "xsaveopt": true, + "vmx-apicv-vid": false, + "vmx-exit-save-pat": false, + "xtpr": false, + "tsx-ctrl": false, + "vmx-ple": false, + "avx512vl": false, + "avx512-vpopcntdq": false, + "phe": false, + "extapic": false, + "3dnowprefetch": true, + "vmx-vmfunc": false, + "vmx-activity-shutdown": false, + "avx512vbmi2": false, + "cr8legacy": true, + "vmx-encls-exit": false, + "stibp": true, + "vmx-msr-bitmap": false, + "xcrypt-en": false, + "vmx-mwait-exit": false, + "vmx-pml": false, + "vmx-nmi-exit": false, + "vmx-invept-single-context-noglobals": false, + "pn": false, + "rsba": false, + "dca": false, + "vendor": "AuthenticAMD", + "vmx-unrestricted-guest": false, + "vmx-cr3-store-noexit": false, + "pku": false, + "smx": false, + "cmp-legacy": true, + "avx512-4fmaps": false, + "vmcb-clean": false, + "hle": false, + "3dnowext": false, + "amd-no-ssb": false, + "npt": true, + "rdctl-no": true, + "vmx-invvpid": false, + "clwb": true, + "lbrv": false, + "adx": true, + "ss": false, + "pni": true, + "tsx-ldtrk": false, + "svm-lock": false, + "smep": true, + "smap": true, + "pfthreshold": false, + "vmx-invpcid-exit": false, + "x2apic": true, + "avx512vbmi": false, + "avx512vnni": false, + "vmx-apicv-x2apic": false, + "kvm-pv-sched-yield": true, + "vmx-invlpg-exit": false, + "vmx-invvpid-all-context": false, + "vmx-activity-hlt": false, + "flushbyasid": false, + "f16c": true, + "vmx-exit-ack-intr": false, + "ace2-en": false, + "pae": true, + "pat": true, + "sse": true, + "phe-en": false, + "vmx-tsc-offset": false, + "kvm-nopiodelay": true, + "tm": false, + "kvmclock-stable-bit": true, + "vmx-rdtsc-exit": false, + "hypervisor": true, + "vmx-rdtscp-exit": false, + "mds-no": true, + "pcommit": false, + "vmx-vpid": false, + "syscall": true, + "avx512dq": false, + "svm": true, + "invtsc": true, + "vmx-monitor-exit": false, + "sse2": true, + "ssbd": true, + "vmx-wbinvd-exit": false, + "est": false, + "kvm-poll-control": true, + "avx512ifma": false, + "tm2": false, + "kvm-pv-eoi": true, + "kvm-pv-ipi": true, + "cx8": true, + "vmx-invvpid-single-addr": false, + "waitpkg": false, + "cldemote": false, + "vmx-ept": false, + "kvm-mmu": false, + "sse4.2": true, + "pge": true, + "avx512bitalg": false, + "pdcm": false, + "vmx-entry-load-bndcfgs": false, + "vmx-exit-clear-rtit-ctl": false, + "model": 113, + "movbe": true, + "nrip-save": true, + "ssse3": true, + "sse4a": true, + "vmx-pause-exit": false, + "invpcid": false, + "pdpe1gb": true, + "tsc-deadline": true, + "skip-l1dfl-vmentry": true, + "vmx-exit-load-perf-global-ctrl": false, + "fma": true, + "cx16": true, + "de": true, + "stepping": 0, + "xsave": true, + "clflush": true, + "skinit": false, + "tsc": true, + "tce": false, + "fpu": true, + "ds-cpl": false, + "ibs": false, + "fma4": false, + "vmx-exit-nosave-debugctl": false, + "la57": false, + "vmx-invept": false, + "osvw": true, + "apic": true, + "pmm": false, + "vmx-entry-noload-debugctl": false, + "vmx-eptad": false, + "spec-ctrl": false, + "vmx-posted-intr": false, + "vmx-apicv-register": false, + "tsc-adjust": true, + "kvm-steal-time": true, + "avx512-vp2intersect": false, + "kvmclock": true, + "vmx-zero-len-inject": false, + "pschange-mc-no": true, + "vmx-rdrand-exit": false, + "lwp": false, + "amd-ssbd": true, + "xop": false, + "ibpb": true, + "avx": true, + "core-capability": false, + "vmx-invept-single-context": false, + "movdiri": false, + "acpi": false, + "avx512bw": false, + "ace2": false, + "fsgsbase": true, + "vmx-ept-2mb": false, + "vmx-ept-1gb": false, + "ht": false, + "vmx-io-exit": false, + "nx": true, + "pclmulqdq": true, + "mmxext": true, + "popcnt": true, + "vaes": false, + "serialize": false, + "movdir64b": false, + "xsaves": true, + "vmx-shadow-vmcs": false, + "lm": true, + "vmx-exit-save-preemption-timer": false, + "vmx-entry-load-pat": false, + "fsrm": false, + "vmx-entry-load-perf-global-ctrl": false, + "vmx-io-bitmap": false, + "umip": true, + "vmx-store-lma": false, + "vmx-movdr-exit": false, + "pse": true, + "avx2": true, + "sep": true, + "virt-ssbd": true, + "vmx-cr3-load-noexit": false, + "nodeid-msr": false, + "md-clear": false, + "misalignsse": true, + "split-lock-detect": false, + "min-xlevel": 2147483679, + "bmi1": true, + "bmi2": true, + "kvm-pv-unhalt": true, + "tsc-scale": false, + "topoext": false, + "amd-stibp": true, + "vmx-preemption-timer": false, + "clflushopt": true, + "vmx-vnmi-pending": false, + "monitor": false, + "vmx-vintr-pending": false, + "avx512er": false, + "full-width-write": false, + "pmm-en": false, + "pcid": false, + "taa-no": false, + "arch-capabilities": true, + "vmx-secondary-ctls": false, + "vmx-xsaves": false, + "clzero": true, + "3dnow": false, + "erms": false, + "vmx-entry-ia32e-mode": false, + "lahf-lm": true, + "vpclmulqdq": false, + "vmx-ins-outs": false, + "fxsr-opt": true, + "xstore": false, + "rtm": false, + "kvm-hint-dedicated": false, + "lmce": false, + "perfctr-nb": false, + "rdrand": true, + "rdseed": true, + "avx512-4vnniw": false, + "vme": true, + "vmx": false, + "dtes64": false, + "mtrr": true, + "rdtscp": true, + "xsaveerptr": true, + "pse36": true, + "kvm-pv-tlb-flush": true, + "vmx-activity-wait-sipi": false, + "tbm": false, + "wdt": false, + "vmx-rdpmc-exit": false, + "vmx-mtf": false, + "vmx-entry-load-efer": false, + "model-id": "AMD Ryzen 9 3900X 12-Core Processor ", + "sha-ni": true, + "abm": true, + "vmx-ept-advanced-exitinfo": false, + "avx512pf": false, + "vmx-hlt-exit": false, + "xstore-en": false + } + } + }, + "id": "libvirt-50" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml index f8c64b4cc2..8e8abb35bb 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml @@ -3113,4 +3113,5 @@ <machine type='tcg' name='pc-q35-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes'/> <machine type='tcg' name='pc-i440fx-3.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes'/> <machine type='tcg' name='pc-q35-2.11' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.replies b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.replies index fc92caae54..8c78533719 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.replies +++ b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.replies @@ -24366,6 +24366,53 @@ "id": "libvirt-44" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-45" +} + +{ + "return": { + "model": { + "name": "host", + "props": { + "sve768": false, + "sve128": false, + "sve1024": false, + "sve1280": false, + "sve896": false, + "sve256": false, + "sve1536": false, + "sve1792": false, + "sve384": false, + "sve": false, + "sve2048": false, + "kvm-no-adjvtime": false, + "sve512": false, + "aarch64": true, + "pmu": true, + "sve1920": false, + "sve1152": false, + "kvm-steal-time": false, + "sve640": false, + "sve1408": false, + "sve1664": false + } + } + }, + "id": "libvirt-45" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml index 7c8b98b600..eb12d0dab9 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml @@ -433,4 +433,5 @@ <machine type='tcg' name='terrier' maxCpus='1' defaultCPU='pxa270-c5-arm-cpu'/> <gic version='3' kernel='yes' emulated='yes'/> <gic version='2' kernel='no' emulated='yes'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.replies index 7e96c37f80..f224bd2fee 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.replies @@ -27391,6 +27391,330 @@ "id": "libvirt-49" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-50" +} + +{ + "return": { + "model": { + "name": "base", + "props": { + "vmx-entry-load-rtit-ctl": false, + "cmov": true, + "ia64": false, + "ssb-no": false, + "aes": true, + "vmx-apicv-xapic": false, + "mmx": true, + "rdpid": true, + "arat": true, + "vmx-page-walk-4": false, + "vmx-page-walk-5": false, + "gfni": false, + "ibrs-all": false, + "vmx-desc-exit": false, + "pause-filter": false, + "xsavec": true, + "intel-pt": false, + "vmx-cr8-store-exit": false, + "vmx-rdseed-exit": false, + "vmx-eptp-switching": false, + "kvm-asyncpf": true, + "perfctr-core": true, + "mpx": false, + "pbe": false, + "avx512cd": false, + "decodeassists": false, + "vmx-exit-load-efer": false, + "vmx-exit-clear-bndcfgs": false, + "sse4.1": true, + "family": 23, + "vmx-vmwrite-vmexit-fields": false, + "kvm-asyncpf-int": true, + "vmx-vnmi": false, + "vmx-true-ctls": false, + "vmx-ept-execonly": false, + "vmx-exit-save-efer": false, + "vmx-invept-all-context": false, + "wbnoinvd": true, + "avx512f": false, + "msr": true, + "mce": true, + "mca": true, + "xcrypt": false, + "vmx-exit-load-pat": false, + "vmx-intr-exit": false, + "min-level": 16, + "vmx-flexpriority": false, + "xgetbv1": true, + "cid": false, + "ds": false, + "fxsr": true, + "avx512-bf16": false, + "vmx-cr8-load-exit": false, + "xsaveopt": true, + "vmx-apicv-vid": false, + "vmx-exit-save-pat": false, + "xtpr": false, + "tsx-ctrl": false, + "vmx-ple": false, + "avx512vl": false, + "avx512-vpopcntdq": false, + "phe": false, + "extapic": false, + "3dnowprefetch": true, + "vmx-vmfunc": false, + "vmx-activity-shutdown": false, + "avx512vbmi2": false, + "cr8legacy": true, + "vmx-encls-exit": false, + "stibp": true, + "vmx-msr-bitmap": false, + "xcrypt-en": false, + "vmx-mwait-exit": false, + "vmx-pml": false, + "vmx-nmi-exit": false, + "vmx-invept-single-context-noglobals": false, + "pn": false, + "rsba": false, + "dca": false, + "vendor": "AuthenticAMD", + "vmx-unrestricted-guest": false, + "vmx-cr3-store-noexit": false, + "pku": false, + "smx": false, + "cmp-legacy": true, + "avx512-4fmaps": false, + "vmcb-clean": false, + "hle": false, + "3dnowext": false, + "amd-no-ssb": false, + "npt": true, + "rdctl-no": true, + "vmx-invvpid": false, + "clwb": true, + "lbrv": false, + "adx": true, + "ss": false, + "pni": true, + "tsx-ldtrk": false, + "svm-lock": false, + "smep": true, + "smap": true, + "pfthreshold": false, + "vmx-invpcid-exit": false, + "x2apic": true, + "avx512vbmi": false, + "avx512vnni": false, + "vmx-apicv-x2apic": false, + "kvm-pv-sched-yield": true, + "vmx-invlpg-exit": false, + "vmx-invvpid-all-context": false, + "vmx-activity-hlt": false, + "flushbyasid": false, + "f16c": true, + "vmx-exit-ack-intr": false, + "ace2-en": false, + "pae": true, + "pat": true, + "sse": true, + "phe-en": false, + "vmx-tsc-offset": false, + "kvm-nopiodelay": true, + "tm": false, + "kvmclock-stable-bit": true, + "vmx-rdtsc-exit": false, + "hypervisor": true, + "vmx-rdtscp-exit": false, + "mds-no": true, + "pcommit": false, + "vmx-vpid": false, + "syscall": true, + "avx512dq": false, + "svm": true, + "invtsc": true, + "vmx-monitor-exit": false, + "sse2": true, + "ssbd": true, + "vmx-wbinvd-exit": false, + "est": false, + "kvm-poll-control": true, + "avx512ifma": false, + "tm2": false, + "kvm-pv-eoi": true, + "kvm-pv-ipi": true, + "cx8": true, + "vmx-invvpid-single-addr": false, + "waitpkg": false, + "cldemote": false, + "vmx-ept": false, + "kvm-mmu": false, + "sse4.2": true, + "pge": true, + "avx512bitalg": false, + "pdcm": false, + "vmx-entry-load-bndcfgs": false, + "vmx-exit-clear-rtit-ctl": false, + "model": 113, + "movbe": true, + "nrip-save": true, + "ssse3": true, + "sse4a": true, + "vmx-pause-exit": false, + "invpcid": false, + "pdpe1gb": true, + "tsc-deadline": true, + "skip-l1dfl-vmentry": true, + "vmx-exit-load-perf-global-ctrl": false, + "fma": true, + "cx16": true, + "de": true, + "stepping": 0, + "xsave": true, + "clflush": true, + "skinit": false, + "tsc": true, + "tce": false, + "fpu": true, + "ds-cpl": false, + "ibs": false, + "fma4": false, + "vmx-exit-nosave-debugctl": false, + "la57": false, + "vmx-invept": false, + "osvw": true, + "apic": true, + "pmm": false, + "vmx-entry-noload-debugctl": false, + "vmx-eptad": false, + "spec-ctrl": false, + "vmx-posted-intr": false, + "vmx-apicv-register": false, + "tsc-adjust": true, + "kvm-steal-time": true, + "avx512-vp2intersect": false, + "kvmclock": true, + "vmx-zero-len-inject": false, + "pschange-mc-no": true, + "vmx-rdrand-exit": false, + "lwp": false, + "amd-ssbd": true, + "xop": false, + "ibpb": true, + "avx": true, + "core-capability": false, + "vmx-invept-single-context": false, + "movdiri": false, + "acpi": false, + "avx512bw": false, + "ace2": false, + "fsgsbase": true, + "vmx-ept-2mb": false, + "vmx-ept-1gb": false, + "ht": false, + "vmx-io-exit": false, + "nx": true, + "pclmulqdq": true, + "mmxext": true, + "popcnt": true, + "vaes": false, + "serialize": false, + "movdir64b": false, + "xsaves": true, + "vmx-shadow-vmcs": false, + "lm": true, + "vmx-exit-save-preemption-timer": false, + "vmx-entry-load-pat": false, + "fsrm": false, + "vmx-entry-load-perf-global-ctrl": false, + "vmx-io-bitmap": false, + "umip": true, + "vmx-store-lma": false, + "vmx-movdr-exit": false, + "pse": true, + "avx2": true, + "sep": true, + "virt-ssbd": true, + "vmx-cr3-load-noexit": false, + "nodeid-msr": false, + "md-clear": false, + "misalignsse": true, + "split-lock-detect": false, + "min-xlevel": 2147483679, + "bmi1": true, + "bmi2": true, + "kvm-pv-unhalt": true, + "tsc-scale": false, + "topoext": false, + "amd-stibp": true, + "vmx-preemption-timer": false, + "clflushopt": true, + "vmx-vnmi-pending": false, + "monitor": false, + "vmx-vintr-pending": false, + "avx512er": false, + "full-width-write": false, + "pmm-en": false, + "pcid": false, + "taa-no": false, + "arch-capabilities": true, + "vmx-secondary-ctls": false, + "vmx-xsaves": false, + "clzero": true, + "3dnow": false, + "erms": false, + "vmx-entry-ia32e-mode": false, + "lahf-lm": true, + "vpclmulqdq": false, + "vmx-ins-outs": false, + "fxsr-opt": true, + "xstore": false, + "rtm": false, + "kvm-hint-dedicated": false, + "lmce": false, + "perfctr-nb": false, + "rdrand": true, + "rdseed": true, + "avx512-4vnniw": false, + "vme": true, + "vmx": false, + "dtes64": false, + "mtrr": true, + "rdtscp": true, + "xsaveerptr": true, + "pse36": true, + "kvm-pv-tlb-flush": true, + "vmx-activity-wait-sipi": false, + "tbm": false, + "wdt": false, + "vmx-rdpmc-exit": false, + "vmx-mtf": false, + "vmx-entry-load-efer": false, + "model-id": "AMD Ryzen 9 3900X 12-Core Processor ", + "sha-ni": true, + "abm": true, + "vmx-ept-advanced-exitinfo": false, + "avx512pf": false, + "vmx-hlt-exit": false, + "xstore-en": false + } + } + }, + "id": "libvirt-50" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml index 4c34fcef02..12cdf542e1 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml @@ -3123,4 +3123,5 @@ <machine type='tcg' name='pc-q35-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> <machine type='tcg' name='pc-i440fx-3.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> <machine type='tcg' name='pc-q35-2.11' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.replies b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.replies index 277180fa89..ed04553f29 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.replies +++ b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.replies @@ -26323,6 +26323,53 @@ "id": "libvirt-44" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-45" +} + +{ + "return": { + "model": { + "name": "host", + "props": { + "sve768": false, + "sve128": false, + "sve1024": false, + "sve1280": false, + "sve896": false, + "sve256": false, + "sve1536": false, + "sve1792": false, + "sve384": false, + "sve": false, + "sve2048": false, + "kvm-no-adjvtime": false, + "sve512": false, + "aarch64": true, + "pmu": true, + "sve1920": false, + "sve1152": false, + "kvm-steal-time": true, + "sve640": false, + "sve1408": false, + "sve1664": false + } + } + }, + "id": "libvirt-45" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml index 6f33a827b3..f8f7cafa23 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml @@ -456,4 +456,5 @@ <machine type='tcg' name='terrier' maxCpus='1' defaultCPU='pxa270-c5-arm-cpu'/> <gic version='3' kernel='yes' emulated='yes'/> <gic version='2' kernel='no' emulated='yes'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.replies index bccf12118a..d815a91f4c 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.replies @@ -29316,6 +29316,342 @@ "id": "libvirt-49" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-50" +} + +{ + "return": { + "model": { + "name": "base", + "props": { + "vmx-entry-load-rtit-ctl": false, + "svme-addr-chk": false, + "cmov": true, + "ia64": false, + "ssb-no": false, + "aes": true, + "vmx-apicv-xapic": false, + "mmx": true, + "rdpid": true, + "arat": true, + "vmx-page-walk-4": false, + "vmx-page-walk-5": false, + "gfni": false, + "ibrs-all": false, + "vmx-desc-exit": false, + "pause-filter": false, + "bus-lock-detect": false, + "xsavec": true, + "intel-pt": false, + "vmx-cr8-store-exit": false, + "vmx-rdseed-exit": false, + "vmx-eptp-switching": false, + "kvm-asyncpf": true, + "perfctr-core": true, + "mpx": false, + "pbe": false, + "avx512cd": false, + "decodeassists": false, + "vmx-exit-load-efer": false, + "vmx-exit-clear-bndcfgs": false, + "sse4.1": true, + "family": 23, + "intel-pt-lip": false, + "vmx-vmwrite-vmexit-fields": false, + "kvm-asyncpf-int": true, + "vmx-vnmi": false, + "vmx-true-ctls": false, + "vmx-ept-execonly": false, + "vmx-exit-save-efer": false, + "vmx-invept-all-context": false, + "wbnoinvd": true, + "avx512f": false, + "msr": true, + "mce": true, + "mca": true, + "xcrypt": false, + "vmx-exit-load-pat": false, + "vmx-intr-exit": false, + "min-level": 16, + "vmx-flexpriority": false, + "xgetbv1": true, + "cid": false, + "ds": false, + "fxsr": true, + "avx512-fp16": false, + "avx512-bf16": false, + "vmx-cr8-load-exit": false, + "xsaveopt": true, + "vmx-apicv-vid": false, + "vmx-exit-save-pat": false, + "xtpr": false, + "tsx-ctrl": false, + "vmx-ple": false, + "avx512vl": false, + "avx512-vpopcntdq": false, + "phe": false, + "extapic": false, + "3dnowprefetch": true, + "vmx-vmfunc": false, + "vmx-activity-shutdown": false, + "avx512vbmi2": false, + "cr8legacy": true, + "vmx-encls-exit": false, + "stibp": true, + "vmx-msr-bitmap": false, + "xcrypt-en": false, + "vmx-mwait-exit": false, + "vmx-pml": false, + "vmx-nmi-exit": false, + "vmx-invept-single-context-noglobals": false, + "pn": false, + "rsba": false, + "dca": false, + "vendor": "AuthenticAMD", + "vmx-unrestricted-guest": false, + "vmx-cr3-store-noexit": false, + "pku": false, + "pks": false, + "smx": false, + "cmp-legacy": true, + "avx512-4fmaps": false, + "vmcb-clean": false, + "hle": false, + "3dnowext": false, + "amd-no-ssb": false, + "npt": true, + "rdctl-no": true, + "vmx-invvpid": false, + "clwb": true, + "lbrv": false, + "adx": true, + "ss": false, + "pni": true, + "tsx-ldtrk": false, + "svm-lock": false, + "smep": true, + "smap": true, + "pfthreshold": false, + "vmx-invpcid-exit": false, + "x2apic": true, + "avx512vbmi": false, + "avx512vnni": false, + "vmx-apicv-x2apic": false, + "kvm-pv-sched-yield": true, + "vmx-invlpg-exit": false, + "vmx-invvpid-all-context": false, + "vmx-activity-hlt": false, + "flushbyasid": false, + "f16c": true, + "vmx-exit-ack-intr": false, + "ace2-en": false, + "pae": true, + "pat": true, + "sse": true, + "phe-en": false, + "vmx-tsc-offset": false, + "kvm-nopiodelay": true, + "tm": false, + "kvmclock-stable-bit": true, + "vmx-rdtsc-exit": false, + "hypervisor": true, + "vmx-rdtscp-exit": false, + "mds-no": true, + "pcommit": false, + "vmx-vpid": false, + "syscall": true, + "avx512dq": false, + "svm": true, + "invtsc": true, + "vmx-monitor-exit": false, + "sse2": true, + "ssbd": true, + "vmx-wbinvd-exit": false, + "est": false, + "kvm-poll-control": true, + "avx512ifma": false, + "tm2": false, + "kvm-pv-eoi": true, + "kvm-pv-ipi": true, + "cx8": true, + "vmx-invvpid-single-addr": false, + "waitpkg": false, + "cldemote": false, + "vmx-ept": false, + "kvm-mmu": false, + "sse4.2": true, + "pge": true, + "avx512bitalg": false, + "pdcm": false, + "vmx-entry-load-bndcfgs": false, + "vmx-exit-clear-rtit-ctl": false, + "model": 113, + "movbe": true, + "nrip-save": true, + "ssse3": true, + "sse4a": true, + "kvm-msi-ext-dest-id": false, + "vmx-pause-exit": false, + "invpcid": false, + "pdpe1gb": true, + "tsc-deadline": true, + "skip-l1dfl-vmentry": true, + "vmx-exit-load-perf-global-ctrl": false, + "fma": true, + "cx16": true, + "de": true, + "stepping": 0, + "xsave": true, + "clflush": true, + "skinit": false, + "tsc": true, + "tce": false, + "fpu": true, + "ds-cpl": false, + "ibs": false, + "fma4": false, + "vmx-exit-nosave-debugctl": false, + "la57": false, + "vmx-invept": false, + "osvw": true, + "apic": true, + "pmm": false, + "vmx-entry-noload-debugctl": false, + "vmx-eptad": false, + "spec-ctrl": false, + "vmx-posted-intr": false, + "vmx-apicv-register": false, + "tsc-adjust": true, + "kvm-steal-time": true, + "avx512-vp2intersect": false, + "kvmclock": true, + "vmx-zero-len-inject": false, + "pschange-mc-no": true, + "v-vmsave-vmload": false, + "vmx-rdrand-exit": false, + "lwp": false, + "amd-ssbd": true, + "xop": false, + "ibpb": true, + "ibrs": false, + "avx": true, + "core-capability": false, + "vmx-invept-single-context": false, + "movdiri": false, + "acpi": false, + "avx512bw": false, + "ace2": false, + "fsgsbase": true, + "vmx-ept-2mb": false, + "vmx-ept-1gb": false, + "ht": false, + "vmx-io-exit": false, + "nx": true, + "pclmulqdq": true, + "mmxext": true, + "popcnt": true, + "vaes": false, + "serialize": false, + "movdir64b": false, + "xsaves": true, + "vmx-shadow-vmcs": false, + "lm": true, + "vmx-exit-save-preemption-timer": false, + "vmx-entry-load-pat": false, + "fsrm": false, + "vmx-entry-load-perf-global-ctrl": false, + "vmx-io-bitmap": false, + "umip": true, + "vmx-store-lma": false, + "vmx-movdr-exit": false, + "pse": true, + "avx2": true, + "avic": false, + "sep": true, + "virt-ssbd": true, + "vmx-cr3-load-noexit": false, + "nodeid-msr": false, + "md-clear": false, + "misalignsse": true, + "split-lock-detect": false, + "min-xlevel": 2147483679, + "bmi1": true, + "bmi2": true, + "kvm-pv-unhalt": true, + "tsc-scale": false, + "topoext": false, + "amd-stibp": true, + "vmx-preemption-timer": false, + "clflushopt": true, + "vmx-entry-load-pkrs": false, + "vmx-vnmi-pending": false, + "monitor": false, + "vmx-vintr-pending": false, + "avx512er": false, + "full-width-write": false, + "pmm-en": false, + "pcid": false, + "taa-no": false, + "arch-capabilities": true, + "vgif": false, + "vmx-secondary-ctls": false, + "vmx-xsaves": false, + "clzero": true, + "3dnow": false, + "erms": false, + "vmx-entry-ia32e-mode": false, + "lahf-lm": true, + "vpclmulqdq": false, + "vmx-ins-outs": false, + "fxsr-opt": true, + "xstore": false, + "rtm": false, + "kvm-hint-dedicated": false, + "lmce": false, + "perfctr-nb": false, + "rdrand": true, + "rdseed": true, + "avx512-4vnniw": false, + "vme": true, + "vmx": false, + "dtes64": false, + "mtrr": true, + "rdtscp": true, + "xsaveerptr": true, + "pse36": true, + "kvm-pv-tlb-flush": true, + "vmx-activity-wait-sipi": false, + "tbm": false, + "wdt": false, + "vmx-rdpmc-exit": false, + "vmx-mtf": false, + "vmx-entry-load-efer": false, + "model-id": "AMD Ryzen 9 3900X 12-Core Processor ", + "sha-ni": true, + "vmx-exit-load-pkrs": false, + "abm": true, + "vmx-ept-advanced-exitinfo": false, + "avx512pf": false, + "vmx-hlt-exit": false, + "xstore-en": false + } + } + }, + "id": "libvirt-50" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml index ae511fdb96..6d61c0c1a1 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml @@ -3268,4 +3268,5 @@ <pdh>AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA</pdh> <certChain>AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA</certChain> </sev> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.replies index b7f1337edd..e55adfbe66 100644 --- a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.replies @@ -29797,6 +29797,344 @@ "id": "libvirt-49" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-50" +} + +{ + "return": { + "model": { + "name": "base", + "props": { + "vmx-entry-load-rtit-ctl": false, + "svme-addr-chk": true, + "cmov": true, + "ia64": false, + "ssb-no": false, + "aes": true, + "vmx-apicv-xapic": false, + "mmx": true, + "rdpid": true, + "arat": true, + "vmx-page-walk-4": false, + "vmx-page-walk-5": false, + "gfni": false, + "ibrs-all": false, + "vmx-desc-exit": false, + "pause-filter": false, + "bus-lock-detect": false, + "xsavec": true, + "intel-pt": false, + "vmx-tsc-scaling": false, + "vmx-cr8-store-exit": false, + "vmx-rdseed-exit": false, + "vmx-eptp-switching": false, + "kvm-asyncpf": true, + "perfctr-core": true, + "mpx": false, + "pbe": false, + "avx512cd": false, + "decodeassists": false, + "vmx-exit-load-efer": false, + "vmx-exit-clear-bndcfgs": false, + "sse4.1": true, + "family": 23, + "intel-pt-lip": false, + "vmx-vmwrite-vmexit-fields": false, + "kvm-asyncpf-int": true, + "vmx-vnmi": false, + "vmx-true-ctls": false, + "vmx-ept-execonly": false, + "vmx-exit-save-efer": false, + "vmx-invept-all-context": false, + "wbnoinvd": true, + "avx512f": false, + "msr": true, + "mce": true, + "mca": true, + "xcrypt": false, + "vmx-exit-load-pat": false, + "vmx-intr-exit": false, + "min-level": 16, + "vmx-flexpriority": false, + "xgetbv1": true, + "cid": false, + "ds": false, + "fxsr": true, + "avx512-fp16": false, + "avx512-bf16": false, + "vmx-cr8-load-exit": false, + "xsaveopt": true, + "vmx-apicv-vid": false, + "vmx-exit-save-pat": false, + "xtpr": false, + "tsx-ctrl": false, + "vmx-ple": false, + "avx512vl": false, + "avx512-vpopcntdq": false, + "phe": false, + "extapic": false, + "3dnowprefetch": true, + "vmx-vmfunc": false, + "vmx-activity-shutdown": false, + "avx512vbmi2": false, + "cr8legacy": true, + "vmx-encls-exit": false, + "stibp": true, + "vmx-msr-bitmap": false, + "xcrypt-en": false, + "vmx-mwait-exit": false, + "vmx-pml": false, + "vmx-nmi-exit": false, + "vmx-invept-single-context-noglobals": false, + "pn": false, + "rsba": false, + "dca": false, + "vendor": "AuthenticAMD", + "vmx-unrestricted-guest": false, + "vmx-cr3-store-noexit": false, + "pku": false, + "pks": false, + "smx": false, + "cmp-legacy": true, + "avx512-4fmaps": false, + "vmcb-clean": false, + "hle": false, + "avx-vnni": false, + "3dnowext": false, + "amd-no-ssb": false, + "npt": true, + "rdctl-no": true, + "vmx-invvpid": false, + "clwb": true, + "lbrv": false, + "adx": true, + "ss": false, + "pni": true, + "tsx-ldtrk": false, + "svm-lock": false, + "smep": true, + "smap": true, + "pfthreshold": false, + "vmx-invpcid-exit": false, + "x2apic": true, + "avx512vbmi": false, + "avx512vnni": false, + "vmx-apicv-x2apic": false, + "kvm-pv-sched-yield": true, + "vmx-invlpg-exit": false, + "vmx-invvpid-all-context": false, + "vmx-activity-hlt": false, + "flushbyasid": false, + "f16c": true, + "vmx-exit-ack-intr": false, + "ace2-en": false, + "pae": true, + "pat": true, + "sse": true, + "phe-en": false, + "vmx-tsc-offset": false, + "kvm-nopiodelay": true, + "tm": false, + "kvmclock-stable-bit": true, + "vmx-rdtsc-exit": false, + "hypervisor": true, + "vmx-rdtscp-exit": false, + "mds-no": true, + "pcommit": false, + "vmx-vpid": false, + "syscall": true, + "avx512dq": false, + "svm": true, + "invtsc": true, + "vmx-monitor-exit": false, + "sse2": true, + "ssbd": true, + "vmx-wbinvd-exit": false, + "est": false, + "kvm-poll-control": true, + "avx512ifma": false, + "tm2": false, + "kvm-pv-eoi": true, + "kvm-pv-ipi": true, + "cx8": true, + "vmx-invvpid-single-addr": false, + "waitpkg": false, + "cldemote": false, + "vmx-ept": false, + "kvm-mmu": false, + "sse4.2": true, + "pge": true, + "avx512bitalg": false, + "pdcm": false, + "vmx-entry-load-bndcfgs": false, + "vmx-exit-clear-rtit-ctl": false, + "model": 113, + "movbe": true, + "nrip-save": true, + "ssse3": true, + "sse4a": true, + "kvm-msi-ext-dest-id": false, + "vmx-pause-exit": false, + "invpcid": false, + "pdpe1gb": true, + "tsc-deadline": true, + "skip-l1dfl-vmentry": true, + "vmx-exit-load-perf-global-ctrl": false, + "fma": true, + "cx16": true, + "de": true, + "stepping": 0, + "xsave": true, + "clflush": true, + "skinit": false, + "tsc": true, + "tce": false, + "fpu": true, + "ds-cpl": false, + "ibs": false, + "fma4": false, + "vmx-exit-nosave-debugctl": false, + "la57": false, + "vmx-invept": false, + "osvw": true, + "apic": true, + "pmm": false, + "vmx-entry-noload-debugctl": false, + "vmx-eptad": false, + "spec-ctrl": false, + "vmx-posted-intr": false, + "vmx-apicv-register": false, + "tsc-adjust": true, + "kvm-steal-time": true, + "avx512-vp2intersect": false, + "kvmclock": true, + "vmx-zero-len-inject": false, + "pschange-mc-no": true, + "v-vmsave-vmload": false, + "vmx-rdrand-exit": false, + "lwp": false, + "amd-ssbd": true, + "xop": false, + "ibpb": true, + "ibrs": false, + "avx": true, + "core-capability": false, + "vmx-invept-single-context": false, + "movdiri": false, + "acpi": false, + "avx512bw": false, + "ace2": false, + "fsgsbase": true, + "vmx-ept-2mb": false, + "vmx-ept-1gb": false, + "ht": false, + "vmx-io-exit": false, + "nx": true, + "pclmulqdq": true, + "mmxext": true, + "popcnt": true, + "vaes": false, + "serialize": false, + "movdir64b": false, + "xsaves": true, + "vmx-shadow-vmcs": false, + "lm": true, + "vmx-exit-save-preemption-timer": false, + "vmx-entry-load-pat": false, + "fsrm": false, + "vmx-entry-load-perf-global-ctrl": false, + "vmx-io-bitmap": false, + "umip": true, + "vmx-store-lma": false, + "vmx-movdr-exit": false, + "pse": true, + "avx2": true, + "avic": false, + "sep": true, + "virt-ssbd": true, + "vmx-cr3-load-noexit": false, + "nodeid-msr": false, + "md-clear": false, + "misalignsse": true, + "split-lock-detect": false, + "min-xlevel": 2147483679, + "bmi1": true, + "bmi2": true, + "kvm-pv-unhalt": true, + "tsc-scale": false, + "topoext": false, + "amd-stibp": true, + "vmx-preemption-timer": false, + "clflushopt": true, + "vmx-entry-load-pkrs": false, + "vmx-vnmi-pending": false, + "monitor": false, + "vmx-vintr-pending": false, + "avx512er": false, + "full-width-write": false, + "pmm-en": false, + "pcid": false, + "taa-no": false, + "arch-capabilities": true, + "vgif": false, + "vmx-secondary-ctls": false, + "vmx-xsaves": false, + "clzero": true, + "3dnow": false, + "erms": false, + "vmx-entry-ia32e-mode": false, + "lahf-lm": true, + "vpclmulqdq": false, + "vmx-ins-outs": false, + "fxsr-opt": true, + "xstore": false, + "rtm": false, + "kvm-hint-dedicated": false, + "lmce": false, + "perfctr-nb": false, + "rdrand": true, + "rdseed": true, + "avx512-4vnniw": false, + "vme": true, + "vmx": false, + "dtes64": false, + "mtrr": true, + "rdtscp": true, + "xsaveerptr": true, + "pse36": true, + "kvm-pv-tlb-flush": true, + "vmx-activity-wait-sipi": false, + "tbm": false, + "wdt": false, + "vmx-rdpmc-exit": false, + "vmx-mtf": false, + "vmx-entry-load-efer": false, + "model-id": "AMD Ryzen 9 3900X 12-Core Processor ", + "sha-ni": true, + "vmx-exit-load-pkrs": false, + "abm": true, + "vmx-ept-advanced-exitinfo": false, + "avx512pf": false, + "vmx-hlt-exit": false, + "xstore-en": false + } + } + }, + "id": "libvirt-50" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml index 72af7d3f01..3709490efa 100644 --- a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml @@ -3615,4 +3615,5 @@ <machine type='tcg' name='pc-q35-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> <machine type='tcg' name='pc-i440fx-3.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> <machine type='tcg' name='pc-q35-2.11' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.replies b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.replies index 61118722a3..20d176e4b7 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.replies +++ b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.replies @@ -27411,6 +27411,53 @@ "id": "libvirt-45" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-46" +} + +{ + "return": { + "model": { + "name": "host", + "props": { + "sve768": false, + "sve128": false, + "sve1024": false, + "sve1280": false, + "sve896": false, + "sve256": false, + "sve1536": false, + "sve1792": false, + "sve384": false, + "sve": false, + "sve2048": false, + "kvm-no-adjvtime": false, + "sve512": false, + "aarch64": true, + "pmu": true, + "sve1920": false, + "sve1152": false, + "kvm-steal-time": true, + "sve640": false, + "sve1408": false, + "sve1664": false + } + } + }, + "id": "libvirt-46" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml index 10e67e4c5a..9dc6c58314 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml @@ -486,4 +486,5 @@ <machine type='tcg' name='terrier' maxCpus='1' defaultCPU='pxa270-c5-arm-cpu'/> <gic version='3' kernel='yes' emulated='yes'/> <gic version='2' kernel='no' emulated='yes'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.replies index fb32cb7a03..d7da5068b0 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.replies @@ -33123,6 +33123,354 @@ "id": "libvirt-50" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-51" +} + +{ + "return": { + "model": { + "name": "base", + "props": { + "vmx-entry-load-rtit-ctl": false, + "svme-addr-chk": true, + "cmov": true, + "ia64": false, + "ssb-no": false, + "aes": true, + "vmx-apicv-xapic": false, + "mmx": true, + "rdpid": true, + "arat": true, + "vmx-page-walk-4": false, + "vmx-page-walk-5": false, + "gfni": false, + "ibrs-all": false, + "vmx-desc-exit": false, + "pause-filter": false, + "bus-lock-detect": false, + "xsavec": true, + "intel-pt": false, + "vmx-tsc-scaling": false, + "vmx-cr8-store-exit": false, + "vmx-rdseed-exit": false, + "vmx-eptp-switching": false, + "kvm-asyncpf": true, + "perfctr-core": true, + "mpx": false, + "pbe": false, + "avx512cd": false, + "decodeassists": false, + "vmx-exit-load-efer": false, + "vmx-exit-clear-bndcfgs": false, + "sse4.1": true, + "family": 23, + "intel-pt-lip": false, + "vmx-vmwrite-vmexit-fields": false, + "kvm-asyncpf-int": true, + "vmx-vnmi": false, + "vmx-true-ctls": false, + "vmx-ept-execonly": false, + "vmx-exit-save-efer": false, + "vmx-invept-all-context": false, + "wbnoinvd": true, + "avx512f": false, + "msr": true, + "mce": true, + "mca": true, + "xcrypt": false, + "sgx": false, + "vmx-exit-load-pat": false, + "vmx-intr-exit": false, + "min-level": 16, + "vmx-flexpriority": false, + "xgetbv1": true, + "cid": false, + "sgx-exinfo": false, + "ds": false, + "fxsr": true, + "avx512-fp16": false, + "avx512-bf16": false, + "vmx-cr8-load-exit": false, + "xsaveopt": true, + "vmx-apicv-vid": false, + "vmx-exit-save-pat": false, + "xtpr": false, + "tsx-ctrl": false, + "vmx-ple": false, + "avx512vl": false, + "avx512-vpopcntdq": false, + "phe": false, + "extapic": false, + "3dnowprefetch": true, + "vmx-vmfunc": false, + "vmx-activity-shutdown": false, + "sgx1": false, + "sgx2": false, + "avx512vbmi2": false, + "cr8legacy": true, + "vmx-encls-exit": false, + "stibp": true, + "vmx-msr-bitmap": false, + "xcrypt-en": false, + "vmx-mwait-exit": false, + "vmx-pml": false, + "vmx-nmi-exit": false, + "vmx-invept-single-context-noglobals": false, + "pn": false, + "rsba": false, + "dca": false, + "vendor": "AuthenticAMD", + "vmx-unrestricted-guest": false, + "vmx-cr3-store-noexit": false, + "pku": false, + "pks": false, + "smx": false, + "cmp-legacy": true, + "avx512-4fmaps": false, + "vmcb-clean": false, + "hle": false, + "avx-vnni": false, + "3dnowext": false, + "amd-no-ssb": false, + "npt": true, + "sgxlc": false, + "rdctl-no": true, + "vmx-invvpid": false, + "clwb": true, + "lbrv": false, + "adx": true, + "ss": false, + "pni": true, + "tsx-ldtrk": false, + "svm-lock": false, + "smep": true, + "smap": true, + "pfthreshold": false, + "vmx-invpcid-exit": false, + "x2apic": true, + "avx512vbmi": false, + "avx512vnni": false, + "vmx-apicv-x2apic": false, + "kvm-pv-sched-yield": true, + "vmx-invlpg-exit": false, + "vmx-invvpid-all-context": false, + "vmx-activity-hlt": false, + "flushbyasid": false, + "f16c": true, + "vmx-exit-ack-intr": false, + "ace2-en": false, + "pae": true, + "pat": true, + "sse": true, + "phe-en": false, + "vmx-tsc-offset": false, + "kvm-nopiodelay": true, + "tm": false, + "kvmclock-stable-bit": true, + "vmx-rdtsc-exit": false, + "hypervisor": true, + "vmx-rdtscp-exit": false, + "mds-no": true, + "pcommit": false, + "vmx-vpid": false, + "syscall": true, + "avx512dq": false, + "svm": true, + "invtsc": true, + "vmx-monitor-exit": false, + "sse2": true, + "ssbd": true, + "vmx-wbinvd-exit": false, + "est": false, + "kvm-poll-control": true, + "avx512ifma": false, + "tm2": false, + "kvm-pv-eoi": true, + "kvm-pv-ipi": true, + "cx8": true, + "vmx-invvpid-single-addr": false, + "waitpkg": false, + "cldemote": false, + "sgx-tokenkey": false, + "vmx-ept": false, + "kvm-mmu": false, + "sse4.2": true, + "pge": true, + "avx512bitalg": false, + "pdcm": false, + "vmx-entry-load-bndcfgs": false, + "vmx-exit-clear-rtit-ctl": false, + "model": 113, + "movbe": true, + "nrip-save": true, + "ssse3": true, + "sse4a": true, + "kvm-msi-ext-dest-id": false, + "vmx-pause-exit": false, + "invpcid": false, + "sgx-debug": false, + "pdpe1gb": true, + "sgx-mode64": false, + "tsc-deadline": true, + "skip-l1dfl-vmentry": true, + "vmx-exit-load-perf-global-ctrl": false, + "fma": true, + "cx16": true, + "de": true, + "stepping": 0, + "xsave": true, + "clflush": true, + "skinit": false, + "tsc": true, + "tce": false, + "fpu": true, + "ds-cpl": false, + "ibs": false, + "fma4": false, + "vmx-exit-nosave-debugctl": false, + "sgx-kss": false, + "la57": false, + "vmx-invept": false, + "osvw": true, + "apic": true, + "pmm": false, + "vmx-entry-noload-debugctl": false, + "vmx-eptad": false, + "spec-ctrl": false, + "vmx-posted-intr": false, + "vmx-apicv-register": false, + "tsc-adjust": true, + "kvm-steal-time": true, + "avx512-vp2intersect": false, + "kvmclock": true, + "vmx-zero-len-inject": false, + "pschange-mc-no": true, + "v-vmsave-vmload": false, + "vmx-rdrand-exit": false, + "sgx-provisionkey": false, + "lwp": false, + "amd-ssbd": true, + "xop": false, + "ibpb": true, + "ibrs": false, + "avx": true, + "core-capability": false, + "vmx-invept-single-context": false, + "movdiri": false, + "acpi": false, + "avx512bw": false, + "ace2": false, + "fsgsbase": true, + "vmx-ept-2mb": false, + "vmx-ept-1gb": false, + "ht": false, + "vmx-io-exit": false, + "nx": true, + "pclmulqdq": true, + "mmxext": true, + "popcnt": true, + "vaes": false, + "serialize": false, + "movdir64b": false, + "xsaves": true, + "vmx-shadow-vmcs": false, + "lm": true, + "vmx-exit-save-preemption-timer": false, + "vmx-entry-load-pat": false, + "fsrm": false, + "vmx-entry-load-perf-global-ctrl": false, + "vmx-io-bitmap": false, + "umip": true, + "vmx-store-lma": false, + "vmx-movdr-exit": false, + "pse": true, + "avx2": true, + "avic": false, + "sep": true, + "virt-ssbd": true, + "vmx-cr3-load-noexit": false, + "nodeid-msr": false, + "md-clear": false, + "misalignsse": true, + "split-lock-detect": false, + "min-xlevel": 2147483679, + "bmi1": true, + "bmi2": true, + "kvm-pv-unhalt": true, + "tsc-scale": false, + "topoext": false, + "amd-stibp": true, + "vmx-preemption-timer": false, + "clflushopt": true, + "vmx-entry-load-pkrs": false, + "vmx-vnmi-pending": false, + "monitor": false, + "vmx-vintr-pending": false, + "avx512er": false, + "full-width-write": false, + "pmm-en": false, + "pcid": false, + "taa-no": false, + "arch-capabilities": true, + "vgif": false, + "vmx-secondary-ctls": false, + "vmx-xsaves": false, + "clzero": true, + "3dnow": false, + "erms": false, + "vmx-entry-ia32e-mode": false, + "lahf-lm": true, + "vpclmulqdq": false, + "vmx-ins-outs": false, + "fxsr-opt": true, + "xstore": false, + "rtm": false, + "kvm-hint-dedicated": false, + "lmce": false, + "perfctr-nb": false, + "rdrand": true, + "rdseed": true, + "avx512-4vnniw": false, + "vme": true, + "vmx": false, + "dtes64": false, + "mtrr": true, + "rdtscp": true, + "xsaveerptr": true, + "pse36": true, + "kvm-pv-tlb-flush": true, + "vmx-activity-wait-sipi": false, + "tbm": false, + "wdt": false, + "vmx-rdpmc-exit": false, + "vmx-mtf": false, + "vmx-entry-load-efer": false, + "model-id": "AMD Ryzen 9 3900X 12-Core Processor ", + "sha-ni": true, + "vmx-exit-load-pkrs": false, + "abm": true, + "vmx-ept-advanced-exitinfo": false, + "avx512pf": false, + "vmx-hlt-exit": false, + "xstore-en": false + } + } + }, + "id": "libvirt-51" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml index ef1c66a5d7..9233a4812b 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml @@ -3658,4 +3658,5 @@ <machine type='tcg' name='pc-q35-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> <machine type='tcg' name='pc-i440fx-3.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> <machine type='tcg' name='pc-q35-2.11' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.replies b/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.replies index 6626778f0f..b330e842c2 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.replies +++ b/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.replies @@ -31164,6 +31164,54 @@ "id": "libvirt-46" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-47" +} + +{ + "return": { + "model": { + "name": "host", + "props": { + "sve768": false, + "sve128": false, + "sve1024": false, + "sve1280": false, + "sve896": false, + "sve256": false, + "sve1536": false, + "sve1792": false, + "sve384": false, + "sve": false, + "sve2048": false, + "pauth": false, + "kvm-no-adjvtime": false, + "sve512": false, + "aarch64": true, + "pmu": true, + "sve1920": false, + "sve1152": false, + "kvm-steal-time": true, + "sve640": false, + "sve1408": false, + "sve1664": false + } + } + }, + "id": "libvirt-47" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml index a59a91a576..36dc74ff74 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.aarch64.xml @@ -501,4 +501,5 @@ <machine type='tcg' name='terrier' maxCpus='1' defaultCPU='pxa270-c5-arm-cpu'/> <gic version='3' kernel='yes' emulated='yes'/> <gic version='2' kernel='no' emulated='yes'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.replies index a331006289..a4b1a8490f 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.replies @@ -33754,6 +33754,358 @@ "id": "libvirt-50" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-51" +} + +{ + "return": { + "model": { + "name": "base", + "props": { + "vmx-entry-load-rtit-ctl": false, + "svme-addr-chk": true, + "cmov": true, + "ia64": false, + "ssb-no": false, + "aes": true, + "vmx-apicv-xapic": false, + "mmx": true, + "rdpid": true, + "arat": true, + "vmx-page-walk-4": false, + "vmx-page-walk-5": false, + "gfni": false, + "ibrs-all": false, + "vmx-desc-exit": false, + "pause-filter": false, + "bus-lock-detect": false, + "xsavec": true, + "intel-pt": false, + "vmx-tsc-scaling": false, + "vmx-cr8-store-exit": false, + "vmx-rdseed-exit": false, + "vmx-eptp-switching": false, + "kvm-asyncpf": true, + "perfctr-core": true, + "mpx": false, + "pbe": false, + "avx512cd": false, + "decodeassists": false, + "vmx-exit-load-efer": false, + "vmx-exit-clear-bndcfgs": false, + "sse4.1": true, + "family": 23, + "intel-pt-lip": false, + "vmx-vmwrite-vmexit-fields": false, + "kvm-asyncpf-int": true, + "vmx-vnmi": false, + "vmx-true-ctls": false, + "vmx-ept-execonly": false, + "vmx-exit-save-efer": false, + "vmx-invept-all-context": false, + "wbnoinvd": true, + "avx512f": false, + "msr": true, + "mce": true, + "mca": true, + "xcrypt": false, + "sgx": false, + "vmx-exit-load-pat": false, + "vmx-intr-exit": false, + "min-level": 16, + "vmx-flexpriority": false, + "xgetbv1": true, + "cid": false, + "sgx-exinfo": false, + "ds": false, + "fxsr": true, + "avx512-fp16": false, + "avx512-bf16": false, + "vmx-cr8-load-exit": false, + "xsaveopt": true, + "vmx-apicv-vid": false, + "vmx-exit-save-pat": false, + "xtpr": false, + "tsx-ctrl": false, + "vmx-ple": false, + "avx512vl": false, + "avx512-vpopcntdq": false, + "phe": false, + "extapic": false, + "3dnowprefetch": true, + "vmx-vmfunc": false, + "vmx-activity-shutdown": false, + "sgx1": false, + "sgx2": false, + "avx512vbmi2": false, + "cr8legacy": true, + "vmx-encls-exit": false, + "stibp": true, + "vmx-msr-bitmap": false, + "xcrypt-en": false, + "vmx-mwait-exit": false, + "vmx-pml": false, + "vmx-nmi-exit": false, + "amx-tile": false, + "vmx-invept-single-context-noglobals": false, + "pn": false, + "rsba": false, + "dca": false, + "vendor": "AuthenticAMD", + "vmx-unrestricted-guest": false, + "vmx-cr3-store-noexit": false, + "pku": false, + "pks": false, + "smx": false, + "cmp-legacy": true, + "avx512-4fmaps": false, + "vmcb-clean": false, + "hle": false, + "avx-vnni": false, + "3dnowext": false, + "amd-no-ssb": false, + "npt": true, + "sgxlc": false, + "rdctl-no": true, + "vmx-invvpid": false, + "clwb": true, + "lbrv": false, + "adx": true, + "ss": false, + "pni": true, + "tsx-ldtrk": false, + "svm-lock": false, + "smep": true, + "smap": true, + "pfthreshold": false, + "vmx-invpcid-exit": false, + "amx-int8": false, + "x2apic": true, + "avx512vbmi": false, + "avx512vnni": false, + "vmx-apicv-x2apic": false, + "kvm-pv-sched-yield": true, + "vmx-invlpg-exit": false, + "vmx-invvpid-all-context": false, + "vmx-activity-hlt": false, + "flushbyasid": false, + "f16c": true, + "vmx-exit-ack-intr": false, + "ace2-en": false, + "pae": true, + "pat": true, + "sse": true, + "phe-en": false, + "vmx-tsc-offset": false, + "kvm-nopiodelay": true, + "tm": false, + "kvmclock-stable-bit": true, + "vmx-rdtsc-exit": false, + "hypervisor": true, + "vmx-rdtscp-exit": false, + "mds-no": true, + "pcommit": false, + "vmx-vpid": false, + "syscall": true, + "avx512dq": false, + "svm": true, + "invtsc": true, + "vmx-monitor-exit": false, + "sse2": true, + "ssbd": true, + "vmx-wbinvd-exit": false, + "est": false, + "kvm-poll-control": true, + "avx512ifma": false, + "tm2": false, + "kvm-pv-eoi": true, + "kvm-pv-ipi": true, + "cx8": true, + "vmx-invvpid-single-addr": false, + "waitpkg": false, + "cldemote": false, + "sgx-tokenkey": false, + "vmx-ept": false, + "xfd": false, + "kvm-mmu": false, + "sse4.2": true, + "pge": true, + "avx512bitalg": false, + "pdcm": false, + "vmx-entry-load-bndcfgs": false, + "vmx-exit-clear-rtit-ctl": false, + "model": 113, + "movbe": true, + "nrip-save": true, + "ssse3": true, + "sse4a": true, + "kvm-msi-ext-dest-id": false, + "vmx-pause-exit": false, + "invpcid": false, + "sgx-debug": false, + "pdpe1gb": true, + "sgx-mode64": false, + "tsc-deadline": true, + "skip-l1dfl-vmentry": true, + "vmx-exit-load-perf-global-ctrl": false, + "fma": true, + "cx16": true, + "de": true, + "stepping": 0, + "xsave": true, + "clflush": true, + "skinit": false, + "tsc": true, + "tce": false, + "fpu": true, + "ds-cpl": false, + "ibs": false, + "fma4": false, + "vmx-exit-nosave-debugctl": false, + "sgx-kss": false, + "la57": false, + "vmx-invept": false, + "osvw": true, + "apic": true, + "pmm": false, + "vmx-entry-noload-debugctl": false, + "vmx-eptad": false, + "spec-ctrl": false, + "vmx-posted-intr": false, + "vmx-apicv-register": false, + "tsc-adjust": true, + "kvm-steal-time": true, + "avx512-vp2intersect": false, + "kvmclock": true, + "vmx-zero-len-inject": false, + "pschange-mc-no": true, + "v-vmsave-vmload": false, + "vmx-rdrand-exit": false, + "sgx-provisionkey": false, + "lwp": false, + "amd-ssbd": true, + "xop": false, + "ibpb": true, + "ibrs": false, + "avx": true, + "core-capability": false, + "vmx-invept-single-context": false, + "movdiri": false, + "acpi": false, + "avx512bw": false, + "ace2": false, + "fsgsbase": true, + "vmx-ept-2mb": false, + "vmx-ept-1gb": false, + "ht": false, + "vmx-io-exit": false, + "nx": true, + "pclmulqdq": true, + "mmxext": true, + "popcnt": true, + "vaes": false, + "serialize": false, + "movdir64b": false, + "xsaves": true, + "vmx-shadow-vmcs": false, + "lm": true, + "vmx-exit-save-preemption-timer": false, + "vmx-entry-load-pat": false, + "fsrm": false, + "vmx-entry-load-perf-global-ctrl": false, + "vmx-io-bitmap": false, + "umip": true, + "vmx-store-lma": false, + "vmx-movdr-exit": false, + "pse": true, + "avx2": true, + "avic": false, + "sep": true, + "virt-ssbd": true, + "vmx-cr3-load-noexit": false, + "nodeid-msr": false, + "md-clear": false, + "misalignsse": true, + "split-lock-detect": false, + "min-xlevel": 2147483679, + "bmi1": true, + "bmi2": true, + "kvm-pv-unhalt": true, + "tsc-scale": true, + "topoext": false, + "amd-stibp": true, + "vmx-preemption-timer": false, + "clflushopt": true, + "vmx-entry-load-pkrs": false, + "vmx-vnmi-pending": false, + "monitor": false, + "vmx-vintr-pending": false, + "avx512er": false, + "full-width-write": false, + "pmm-en": false, + "pcid": false, + "taa-no": false, + "arch-capabilities": true, + "vgif": false, + "vmx-secondary-ctls": false, + "vmx-xsaves": false, + "clzero": true, + "3dnow": false, + "erms": false, + "vmx-entry-ia32e-mode": false, + "lahf-lm": true, + "vpclmulqdq": false, + "vmx-ins-outs": false, + "fxsr-opt": true, + "xstore": false, + "rtm": false, + "kvm-hint-dedicated": false, + "amx-bf16": false, + "lmce": false, + "perfctr-nb": false, + "rdrand": true, + "rdseed": true, + "avx512-4vnniw": false, + "vme": true, + "vmx": false, + "dtes64": false, + "mtrr": true, + "rdtscp": true, + "xsaveerptr": true, + "pse36": true, + "kvm-pv-tlb-flush": true, + "vmx-activity-wait-sipi": false, + "tbm": false, + "wdt": false, + "vmx-rdpmc-exit": false, + "vmx-mtf": false, + "vmx-entry-load-efer": false, + "model-id": "AMD Ryzen 9 3900X 12-Core Processor ", + "sha-ni": true, + "vmx-exit-load-pkrs": false, + "abm": true, + "vmx-ept-advanced-exitinfo": false, + "avx512pf": false, + "vmx-hlt-exit": false, + "xstore-en": false + } + } + }, + "id": "libvirt-51" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml index d26d0c727a..20f5978946 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml @@ -3734,4 +3734,5 @@ <section node='1' size='262144' unit='KiB'/> </sections> </sgx> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.replies index 9eb851694f..1726cbc5f3 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.replies @@ -34436,6 +34436,359 @@ "id": "libvirt-50" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-51" +} + +{ + "return": { + "model": { + "name": "base", + "props": { + "vmx-entry-load-rtit-ctl": false, + "svme-addr-chk": true, + "cmov": true, + "ia64": false, + "ssb-no": false, + "aes": true, + "vmx-apicv-xapic": false, + "mmx": true, + "rdpid": true, + "arat": true, + "vmx-page-walk-4": false, + "vmx-page-walk-5": false, + "gfni": false, + "ibrs-all": false, + "vmx-desc-exit": false, + "pause-filter": false, + "bus-lock-detect": false, + "xsavec": true, + "intel-pt": false, + "vmx-tsc-scaling": false, + "vmx-cr8-store-exit": false, + "vmx-rdseed-exit": false, + "vmx-eptp-switching": false, + "kvm-asyncpf": true, + "perfctr-core": true, + "mpx": false, + "pbe": false, + "avx512cd": false, + "decodeassists": false, + "vmx-exit-load-efer": false, + "vmx-exit-clear-bndcfgs": false, + "sse4.1": true, + "family": 23, + "intel-pt-lip": false, + "vmx-vmwrite-vmexit-fields": false, + "kvm-asyncpf-int": true, + "vmx-vnmi": false, + "vmx-true-ctls": false, + "vmx-ept-execonly": false, + "vmx-exit-save-efer": false, + "vmx-invept-all-context": false, + "wbnoinvd": true, + "avx512f": false, + "msr": true, + "mce": true, + "mca": true, + "xcrypt": false, + "sgx": false, + "vmx-exit-load-pat": false, + "vmx-intr-exit": false, + "min-level": 16, + "vmx-flexpriority": false, + "xgetbv1": true, + "cid": false, + "sgx-exinfo": false, + "ds": false, + "fxsr": true, + "avx512-fp16": false, + "avx512-bf16": false, + "vmx-cr8-load-exit": false, + "xsaveopt": true, + "arch-lbr": false, + "vmx-apicv-vid": false, + "vmx-exit-save-pat": false, + "xtpr": false, + "tsx-ctrl": false, + "vmx-ple": false, + "avx512vl": false, + "avx512-vpopcntdq": false, + "phe": false, + "extapic": false, + "3dnowprefetch": true, + "vmx-vmfunc": false, + "vmx-activity-shutdown": false, + "sgx1": false, + "sgx2": false, + "avx512vbmi2": false, + "cr8legacy": true, + "vmx-encls-exit": false, + "stibp": true, + "vmx-msr-bitmap": false, + "xcrypt-en": false, + "vmx-mwait-exit": false, + "vmx-pml": false, + "vmx-nmi-exit": false, + "amx-tile": false, + "vmx-invept-single-context-noglobals": false, + "pn": false, + "rsba": false, + "dca": false, + "vendor": "AuthenticAMD", + "vmx-unrestricted-guest": false, + "vmx-cr3-store-noexit": false, + "pku": false, + "pks": false, + "smx": false, + "cmp-legacy": true, + "avx512-4fmaps": false, + "vmcb-clean": true, + "hle": false, + "avx-vnni": false, + "3dnowext": false, + "amd-no-ssb": false, + "npt": true, + "sgxlc": false, + "rdctl-no": true, + "vmx-invvpid": false, + "clwb": true, + "lbrv": false, + "adx": true, + "ss": false, + "pni": true, + "tsx-ldtrk": false, + "svm-lock": false, + "smep": true, + "smap": true, + "pfthreshold": false, + "vmx-invpcid-exit": false, + "amx-int8": false, + "x2apic": true, + "avx512vbmi": false, + "avx512vnni": false, + "vmx-apicv-x2apic": false, + "kvm-pv-sched-yield": true, + "vmx-invlpg-exit": false, + "vmx-invvpid-all-context": false, + "vmx-activity-hlt": false, + "flushbyasid": false, + "f16c": true, + "vmx-exit-ack-intr": false, + "ace2-en": false, + "pae": true, + "pat": true, + "sse": true, + "phe-en": false, + "vmx-tsc-offset": false, + "kvm-nopiodelay": true, + "tm": false, + "kvmclock-stable-bit": true, + "vmx-rdtsc-exit": false, + "hypervisor": true, + "vmx-rdtscp-exit": false, + "mds-no": true, + "pcommit": false, + "vmx-vpid": false, + "syscall": true, + "avx512dq": false, + "svm": true, + "invtsc": true, + "vmx-monitor-exit": false, + "sse2": true, + "ssbd": true, + "vmx-wbinvd-exit": false, + "est": false, + "kvm-poll-control": true, + "avx512ifma": false, + "tm2": false, + "kvm-pv-eoi": true, + "kvm-pv-ipi": true, + "cx8": true, + "vmx-invvpid-single-addr": false, + "waitpkg": false, + "cldemote": false, + "sgx-tokenkey": false, + "vmx-ept": false, + "xfd": false, + "kvm-mmu": false, + "sse4.2": true, + "pge": true, + "avx512bitalg": false, + "pdcm": false, + "vmx-entry-load-bndcfgs": false, + "vmx-exit-clear-rtit-ctl": false, + "model": 113, + "movbe": true, + "nrip-save": true, + "ssse3": true, + "sse4a": true, + "kvm-msi-ext-dest-id": false, + "vmx-pause-exit": false, + "invpcid": false, + "sgx-debug": false, + "pdpe1gb": true, + "sgx-mode64": false, + "tsc-deadline": true, + "skip-l1dfl-vmentry": true, + "vmx-exit-load-perf-global-ctrl": false, + "fma": true, + "cx16": true, + "de": true, + "stepping": 0, + "xsave": true, + "clflush": true, + "skinit": false, + "tsc": true, + "tce": false, + "fpu": true, + "ds-cpl": false, + "ibs": false, + "fma4": false, + "vmx-exit-nosave-debugctl": false, + "sgx-kss": false, + "la57": false, + "vmx-invept": false, + "osvw": true, + "apic": true, + "pmm": false, + "vmx-entry-noload-debugctl": false, + "vmx-eptad": false, + "spec-ctrl": false, + "vmx-posted-intr": false, + "vmx-apicv-register": false, + "tsc-adjust": true, + "kvm-steal-time": true, + "avx512-vp2intersect": false, + "kvmclock": true, + "vmx-zero-len-inject": false, + "pschange-mc-no": true, + "v-vmsave-vmload": false, + "vmx-rdrand-exit": false, + "sgx-provisionkey": false, + "lwp": false, + "amd-ssbd": true, + "xop": false, + "ibpb": true, + "ibrs": false, + "avx": true, + "core-capability": false, + "vmx-invept-single-context": false, + "movdiri": false, + "acpi": false, + "avx512bw": false, + "ace2": false, + "fsgsbase": true, + "vmx-ept-2mb": false, + "vmx-ept-1gb": false, + "ht": false, + "vmx-io-exit": false, + "nx": true, + "pclmulqdq": true, + "mmxext": true, + "popcnt": true, + "vaes": false, + "serialize": false, + "movdir64b": false, + "xsaves": true, + "vmx-shadow-vmcs": false, + "lm": true, + "vmx-exit-save-preemption-timer": false, + "vmx-entry-load-pat": false, + "fsrm": false, + "vmx-entry-load-perf-global-ctrl": false, + "vmx-io-bitmap": false, + "umip": true, + "vmx-store-lma": false, + "vmx-movdr-exit": false, + "pse": true, + "avx2": true, + "avic": false, + "sep": true, + "virt-ssbd": true, + "vmx-cr3-load-noexit": false, + "nodeid-msr": false, + "md-clear": false, + "misalignsse": true, + "split-lock-detect": false, + "min-xlevel": 2147483681, + "bmi1": true, + "bmi2": true, + "kvm-pv-unhalt": true, + "tsc-scale": true, + "topoext": false, + "amd-stibp": true, + "vmx-preemption-timer": false, + "clflushopt": true, + "vmx-entry-load-pkrs": false, + "vmx-vnmi-pending": false, + "monitor": false, + "vmx-vintr-pending": false, + "avx512er": false, + "full-width-write": false, + "pmm-en": false, + "pcid": false, + "taa-no": false, + "arch-capabilities": true, + "vgif": false, + "vmx-secondary-ctls": false, + "vmx-xsaves": false, + "clzero": true, + "3dnow": false, + "erms": false, + "vmx-entry-ia32e-mode": false, + "lahf-lm": true, + "vpclmulqdq": false, + "vmx-ins-outs": false, + "fxsr-opt": true, + "xstore": false, + "rtm": false, + "kvm-hint-dedicated": false, + "amx-bf16": false, + "lmce": false, + "perfctr-nb": false, + "rdrand": true, + "rdseed": true, + "avx512-4vnniw": false, + "vme": true, + "vmx": false, + "dtes64": false, + "mtrr": true, + "rdtscp": true, + "xsaveerptr": true, + "pse36": true, + "kvm-pv-tlb-flush": true, + "vmx-activity-wait-sipi": false, + "tbm": false, + "wdt": false, + "vmx-rdpmc-exit": false, + "vmx-mtf": false, + "vmx-entry-load-efer": false, + "model-id": "AMD Ryzen 9 3900X 12-Core Processor ", + "sha-ni": true, + "vmx-exit-load-pkrs": false, + "abm": true, + "vmx-ept-advanced-exitinfo": false, + "avx512pf": false, + "vmx-hlt-exit": false, + "xstore-en": false + } + } + }, + "id": "libvirt-51" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml index 8a2ed2236a..76eb84de1e 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml @@ -3524,4 +3524,5 @@ <machine type='tcg' name='pc-q35-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> <machine type='tcg' name='pc-i440fx-3.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> <machine type='tcg' name='pc-q35-2.11' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.replies index 18f70a5a3f..6a465f6856 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.replies @@ -35451,6 +35451,359 @@ "id": "libvirt-50" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-51" +} + +{ + "return": { + "model": { + "name": "base", + "props": { + "vmx-entry-load-rtit-ctl": false, + "svme-addr-chk": true, + "cmov": true, + "ia64": false, + "ssb-no": false, + "aes": true, + "vmx-apicv-xapic": false, + "mmx": true, + "rdpid": true, + "arat": true, + "vmx-page-walk-4": false, + "vmx-page-walk-5": false, + "gfni": false, + "ibrs-all": false, + "vmx-desc-exit": false, + "pause-filter": true, + "bus-lock-detect": false, + "xsavec": true, + "intel-pt": false, + "vmx-tsc-scaling": false, + "vmx-cr8-store-exit": false, + "vmx-rdseed-exit": false, + "vmx-eptp-switching": false, + "kvm-asyncpf": true, + "perfctr-core": true, + "mpx": false, + "pbe": false, + "avx512cd": false, + "decodeassists": false, + "vmx-exit-load-efer": false, + "vmx-exit-clear-bndcfgs": false, + "sse4.1": true, + "family": 23, + "intel-pt-lip": false, + "vmx-vmwrite-vmexit-fields": false, + "kvm-asyncpf-int": true, + "vmx-vnmi": false, + "vmx-true-ctls": false, + "vmx-ept-execonly": false, + "vmx-exit-save-efer": false, + "vmx-invept-all-context": false, + "wbnoinvd": true, + "avx512f": false, + "msr": true, + "mce": true, + "mca": true, + "xcrypt": false, + "sgx": false, + "vmx-exit-load-pat": false, + "vmx-intr-exit": false, + "min-level": 16, + "vmx-flexpriority": false, + "xgetbv1": true, + "cid": false, + "sgx-exinfo": false, + "ds": false, + "fxsr": true, + "avx512-fp16": false, + "avx512-bf16": false, + "vmx-cr8-load-exit": false, + "xsaveopt": true, + "arch-lbr": false, + "vmx-apicv-vid": false, + "vmx-exit-save-pat": false, + "xtpr": false, + "tsx-ctrl": false, + "vmx-ple": false, + "avx512vl": false, + "avx512-vpopcntdq": false, + "phe": false, + "extapic": false, + "3dnowprefetch": true, + "vmx-vmfunc": false, + "vmx-activity-shutdown": false, + "sgx1": false, + "sgx2": false, + "avx512vbmi2": false, + "cr8legacy": true, + "vmx-encls-exit": false, + "stibp": true, + "vmx-msr-bitmap": false, + "xcrypt-en": false, + "vmx-mwait-exit": false, + "vmx-pml": false, + "vmx-nmi-exit": false, + "amx-tile": false, + "vmx-invept-single-context-noglobals": false, + "pn": false, + "rsba": false, + "dca": false, + "vendor": "AuthenticAMD", + "vmx-unrestricted-guest": false, + "vmx-cr3-store-noexit": false, + "pku": false, + "pks": false, + "smx": false, + "cmp-legacy": true, + "avx512-4fmaps": false, + "vmcb-clean": true, + "hle": false, + "avx-vnni": false, + "3dnowext": false, + "amd-no-ssb": false, + "npt": true, + "sgxlc": false, + "rdctl-no": true, + "vmx-invvpid": false, + "clwb": true, + "lbrv": true, + "adx": true, + "ss": false, + "pni": true, + "tsx-ldtrk": false, + "svm-lock": false, + "smep": true, + "smap": true, + "pfthreshold": true, + "vmx-invpcid-exit": false, + "amx-int8": false, + "x2apic": true, + "avx512vbmi": false, + "avx512vnni": false, + "vmx-apicv-x2apic": false, + "kvm-pv-sched-yield": true, + "vmx-invlpg-exit": false, + "vmx-invvpid-all-context": false, + "vmx-activity-hlt": false, + "flushbyasid": false, + "f16c": true, + "vmx-exit-ack-intr": false, + "ace2-en": false, + "pae": true, + "pat": true, + "sse": true, + "phe-en": false, + "vmx-tsc-offset": false, + "kvm-nopiodelay": true, + "tm": false, + "kvmclock-stable-bit": true, + "vmx-rdtsc-exit": false, + "hypervisor": true, + "vmx-rdtscp-exit": false, + "mds-no": true, + "pcommit": false, + "vmx-vpid": false, + "syscall": true, + "avx512dq": false, + "svm": true, + "invtsc": true, + "vmx-monitor-exit": false, + "sse2": true, + "ssbd": true, + "vmx-wbinvd-exit": false, + "est": false, + "kvm-poll-control": true, + "avx512ifma": false, + "tm2": false, + "kvm-pv-eoi": true, + "kvm-pv-ipi": true, + "cx8": true, + "vmx-invvpid-single-addr": false, + "waitpkg": false, + "cldemote": false, + "sgx-tokenkey": false, + "vmx-ept": false, + "xfd": false, + "kvm-mmu": false, + "sse4.2": true, + "pge": true, + "avx512bitalg": false, + "pdcm": false, + "vmx-entry-load-bndcfgs": false, + "vmx-exit-clear-rtit-ctl": false, + "model": 113, + "movbe": true, + "nrip-save": true, + "ssse3": true, + "sse4a": true, + "kvm-msi-ext-dest-id": false, + "vmx-pause-exit": false, + "invpcid": false, + "sgx-debug": false, + "pdpe1gb": true, + "sgx-mode64": false, + "tsc-deadline": true, + "skip-l1dfl-vmentry": true, + "vmx-exit-load-perf-global-ctrl": false, + "fma": true, + "cx16": true, + "de": true, + "stepping": 0, + "xsave": true, + "clflush": true, + "skinit": false, + "tsc": true, + "tce": false, + "fpu": true, + "ds-cpl": false, + "ibs": false, + "fma4": false, + "vmx-exit-nosave-debugctl": false, + "sgx-kss": false, + "la57": false, + "vmx-invept": false, + "osvw": true, + "apic": true, + "pmm": false, + "vmx-entry-noload-debugctl": false, + "vmx-eptad": false, + "spec-ctrl": false, + "vmx-posted-intr": false, + "vmx-apicv-register": false, + "tsc-adjust": true, + "kvm-steal-time": true, + "avx512-vp2intersect": false, + "kvmclock": true, + "vmx-zero-len-inject": false, + "pschange-mc-no": true, + "v-vmsave-vmload": true, + "vmx-rdrand-exit": false, + "sgx-provisionkey": false, + "lwp": false, + "amd-ssbd": true, + "xop": false, + "ibpb": true, + "ibrs": false, + "avx": true, + "core-capability": false, + "vmx-invept-single-context": false, + "movdiri": false, + "acpi": false, + "avx512bw": false, + "ace2": false, + "fsgsbase": true, + "vmx-ept-2mb": false, + "vmx-ept-1gb": false, + "ht": false, + "vmx-io-exit": false, + "nx": true, + "pclmulqdq": true, + "mmxext": true, + "popcnt": true, + "vaes": false, + "serialize": false, + "movdir64b": false, + "xsaves": true, + "vmx-shadow-vmcs": false, + "lm": true, + "vmx-exit-save-preemption-timer": false, + "vmx-entry-load-pat": false, + "fsrm": false, + "vmx-entry-load-perf-global-ctrl": false, + "vmx-io-bitmap": false, + "umip": true, + "vmx-store-lma": false, + "vmx-movdr-exit": false, + "pse": true, + "avx2": true, + "avic": false, + "sep": true, + "virt-ssbd": true, + "vmx-cr3-load-noexit": false, + "nodeid-msr": false, + "md-clear": false, + "misalignsse": true, + "split-lock-detect": false, + "min-xlevel": 2147483681, + "bmi1": true, + "bmi2": true, + "kvm-pv-unhalt": true, + "tsc-scale": true, + "topoext": false, + "amd-stibp": true, + "vmx-preemption-timer": false, + "clflushopt": true, + "vmx-entry-load-pkrs": false, + "vmx-vnmi-pending": false, + "monitor": false, + "vmx-vintr-pending": false, + "avx512er": false, + "full-width-write": false, + "pmm-en": false, + "pcid": false, + "taa-no": false, + "arch-capabilities": true, + "vgif": true, + "vmx-secondary-ctls": false, + "vmx-xsaves": false, + "clzero": true, + "3dnow": false, + "erms": false, + "vmx-entry-ia32e-mode": false, + "lahf-lm": true, + "vpclmulqdq": false, + "vmx-ins-outs": false, + "fxsr-opt": true, + "xstore": false, + "rtm": false, + "kvm-hint-dedicated": false, + "amx-bf16": false, + "lmce": false, + "perfctr-nb": false, + "rdrand": true, + "rdseed": true, + "avx512-4vnniw": false, + "vme": true, + "vmx": false, + "dtes64": false, + "mtrr": true, + "rdtscp": true, + "xsaveerptr": true, + "pse36": true, + "kvm-pv-tlb-flush": true, + "vmx-activity-wait-sipi": false, + "tbm": false, + "wdt": false, + "vmx-rdpmc-exit": false, + "vmx-mtf": false, + "vmx-entry-load-efer": false, + "model-id": "AMD Ryzen 9 3900X 12-Core Processor ", + "sha-ni": true, + "vmx-exit-load-pkrs": false, + "abm": true, + "vmx-ept-advanced-exitinfo": false, + "avx512pf": false, + "vmx-hlt-exit": false, + "xstore-en": false + } + } + }, + "id": "libvirt-51" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml index 821fcd3199..af8247e23b 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml @@ -3246,4 +3246,5 @@ <machine type='tcg' name='pc-q35-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> <machine type='tcg' name='pc-i440fx-3.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> <machine type='tcg' name='pc-q35-2.11' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> + <hypervCapabilities supported='no'/> </qemuCaps> diff --git a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.replies index 4cc3ca19a5..c3525f1bf8 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.replies @@ -35614,6 +35614,464 @@ "id": "libvirt-50" } +{ + "execute": "query-cpu-model-expansion", + "arguments": { + "type": "full", + "model": { + "name": "host", + "props": { + "migratable": false, + "hv-passthrough": true + } + } + }, + "id": "libvirt-51" +} + +{ + "return": { + "model": { + "name": "host", + "props": { + "vmx-entry-load-rtit-ctl": false, + "phys-bits": 0, + "core-id": -1, + "svme-addr-chk": true, + "xlevel": 2147483681, + "cmov": true, + "ia64": false, + "hv-version-id-minor": 0, + "ssb-no": false, + "aes": true, + "vmx-apicv-xapic": false, + "kvm-pv-enforce-cpuid": false, + "mmx": true, + "arat": true, + "rdpid": true, + "vmx-page-walk-5": false, + "vmx-page-walk-4": false, + "vmx-desc-exit": false, + "gfni": false, + "ibrs-all": false, + "pause-filter": true, + "bus-lock-detect": false, + "xsavec": true, + "intel-pt": false, + "vmx-tsc-scaling": false, + "vmx-cr8-store-exit": false, + "hv-xmm-input": true, + "hv-frequencies": true, + "tsc-frequency": 0, + "vmx-rdseed-exit": false, + "xd": true, + "x-intel-pt-auto-level": true, + "hv-vendor-id": "Linux KVM Hv", + "vmx-eptp-switching": false, + "hv-syndbg": true, + "kvm-asyncpf": true, + "kvm_asyncpf": true, + "perfctr-core": true, + "perfctr_core": true, + "mpx": false, + "avx512cd": false, + "pbe": false, + "decodeassists": false, + "vmx-exit-load-efer": false, + "vmx-exit-clear-bndcfgs": false, + "sse4.1": true, + "sse4-1": true, + "sse4_1": true, + "family": 23, + "legacy-cache": true, + "intel-pt-lip": false, + "vmx-vmwrite-vmexit-fields": false, + "vmx-vnmi": false, + "kvm-asyncpf-int": true, + "vmx-true-ctls": false, + "host-phys-bits-limit": 0, + "vmx-ept-execonly": false, + "vmx-exit-save-efer": false, + "vmx-invept-all-context": false, + "vmware-cpuid-freq": true, + "wbnoinvd": true, + "avx512f": false, + "xcrypt": false, + "hv-runtime": true, + "hv-stimer-direct": true, + "mce": true, + "mca": true, + "msr": true, + "sgx": false, + "thread-id": -1, + "vmx-exit-load-pat": false, + "vmx-intr-exit": false, + "min-level": 16, + "vmx-flexpriority": false, + "xgetbv1": true, + "cid": false, + "hv-relaxed": true, + "sgx-exinfo": false, + "avx512-bf16": false, + "avx512-fp16": false, + "ds": false, + "hv-crash": true, + "fxsr": true, + "vmx-cr8-load-exit": false, + "hv-version-id-sbranch": 0, + "hv-version-id-snumber": 0, + "xsaveopt": true, + "arch-lbr": false, + "vmx-apicv-vid": false, + "vmx-exit-save-pat": false, + "tsx-ctrl": false, + "xtpr": false, + "vmx-ple": false, + "hv-evmcs": false, + "avx512-vpopcntdq": false, + "hv-version-id-spack": 0, + "phe": false, + "avx512vl": false, + "extapic": false, + "vmx-vmfunc": false, + "3dnowprefetch": true, + "vmx-activity-shutdown": false, + "sgx1": false, + "sgx2": false, + "avx512vbmi2": false, + "cr8legacy": true, + "vmx-encls-exit": false, + "stibp": true, + "vmx-msr-bitmap": false, + "cpuid-0xb": true, + "xcrypt-en": false, + "vmx-mwait-exit": false, + "kvm_pv_eoi": true, + "vmx-pml": false, + "apic-id": 4294967295, + "vmx-nmi-exit": false, + "vmx-invept-single-context-noglobals": false, + "amx-tile": false, + "pn": false, + "rsba": false, + "dca": false, + "vmx-unrestricted-guest": false, + "vendor": "AuthenticAMD", + "hv-ipi": true, + "vmx-cr3-store-noexit": false, + "pku": false, + "pks": false, + "smx": false, + "cmp-legacy": true, + "cmp_legacy": true, + "node-id": -1, + "avx512-4fmaps": false, + "vmcb-clean": true, + "vmcb_clean": true, + "hle": false, + "amd-no-ssb": false, + "3dnowext": false, + "avx-vnni": false, + "npt": true, + "sgxlc": false, + "rdctl-no": true, + "vmx-invvpid": false, + "memory": "/machine/unattached/system[0]", + "clwb": true, + "lbrv": true, + "adx": true, + "ss": false, + "pni": true, + "tsx-ldtrk": false, + "host-cache-info": false, + "svm-lock": false, + "svm_lock": false, + "pfthreshold": true, + "smap": true, + "smep": true, + "vmx-invpcid-exit": false, + "amx-int8": false, + "x2apic": true, + "avx512vnni": false, + "avx512vbmi": false, + "vmx-apicv-x2apic": false, + "hv-stimer": true, + "kvm-pv-sched-yield": true, + "vmx-invlpg-exit": false, + "x-hv-synic-kvm-only": false, + "vmx-invvpid-all-context": false, + "i64": true, + "vmx-activity-hlt": false, + "flushbyasid": false, + "f16c": true, + "vmx-exit-ack-intr": false, + "ace2-en": false, + "pae": true, + "pat": true, + "sse": true, + "die-id": -1, + "vmx-tsc-offset": false, + "phe-en": false, + "kvm-nopiodelay": true, + "kvm_nopiodelay": true, + "tm": false, + "hv-enforce-cpuid": false, + "kvmclock-stable-bit": true, + "vmx-rdtsc-exit": false, + "hypervisor": true, + "vmx-rdtscp-exit": false, + "socket-id": -1, + "mds-no": true, + "pcommit": false, + "vmx-vpid": false, + "syscall": true, + "level": 16, + "avx512dq": false, + "x-migrate-smi-count": true, + "svm": true, + "full-cpuid-auto-level": true, + "hv-avic": true, + "hv-reset": true, + "invtsc": true, + "vmx-monitor-exit": false, + "sse2": true, + "vmx-wbinvd-exit": false, + "ssbd": true, + "sse3": true, + "est": false, + "kvm-poll-control": true, + "kvm_poll_control": true, + "avx512ifma": false, + "tm2": false, + "start-powered-off": false, + "kvm-pv-eoi": true, + "kvm-pv-ipi": true, + "hv-emsr-bitmap": true, + "cx8": true, + "vmx-invvpid-single-addr": false, + "waitpkg": false, + "sgx-tokenkey": false, + "cldemote": false, + "vmx-ept": false, + "hv-tlbflush-direct": false, + "xfd": false, + "hv-reenlightenment": true, + "kvm-mmu": false, + "kvm_mmu": false, + "sse4.2": true, + "sse4-2": true, + "sse4_2": true, + "pge": true, + "fill-mtrr-mask": true, + "avx512bitalg": false, + "vmx-entry-load-bndcfgs": false, + "pdcm": false, + "nodeid_msr": false, + "vmx-exit-clear-rtit-ctl": false, + "hv-apicv": true, + "model": 113, + "movbe": true, + "nrip-save": true, + "nrip_save": true, + "vmx-pause-exit": false, + "ssse3": true, + "sse4a": true, + "kvm-msi-ext-dest-id": false, + "kvm_pv_unhalt": true, + "sgx-debug": false, + "invpcid": false, + "pdpe1gb": true, + "sgx-mode64": false, + "tsc-deadline": true, + "skip-l1dfl-vmentry": true, + "vmx-exit-load-perf-global-ctrl": false, + "fma": true, + "cx16": true, + "de": true, + "hv-version-id-build": 14393, + "enforce": false, + "stepping": 0, + "xsave": true, + "lbr-fmt": 18446744073709551552, + "lbr_fmt": 18446744073709551552, + "clflush": true, + "skinit": false, + "tsc": true, + "tce": false, + "kvm_asyncpf_int": true, + "fpu": true, + "ds-cpl": false, + "ibs": false, + "ds_cpl": false, + "fma4": false, + "host-phys-bits": true, + "sgx-kss": false, + "vmx-exit-nosave-debugctl": false, + "hv-version-id-major": 10, + "vmx-invept": false, + "la57": false, + "osvw": true, + "migratable": false, + "check": true, + "hv-spinlocks": 4095, + "vmx-eptad": false, + "pmu": true, + "vmx-entry-noload-debugctl": false, + "pmm": false, + "apic": true, + "spec-ctrl": false, + "vmx-posted-intr": false, + "vmx-apicv-register": false, + "min-xlevel2": 0, + "tsc-adjust": true, + "tsc_adjust": true, + "kvm-steal-time": true, + "kvm_steal_time": true, + "avx512-vp2intersect": false, + "kvmclock": true, + "vmx-zero-len-inject": false, + "l3-cache": true, + "pschange-mc-no": true, + "v-vmsave-vmload": true, + "sgx-provisionkey": false, + "vmx-rdrand-exit": false, + "lwp": false, + "hv-passthrough": true, + "amd-ssbd": true, + "ibpb": true, + "ibrs": false, + "xop": false, + "core-capability": false, + "avx": true, + "vmx-invept-single-context": false, + "movdiri": false, + "avx512bw": false, + "acpi": false, + "ace2": false, + "fsgsbase": true, + "hv-vapic": true, + "vmx-ept-2mb": false, + "vmx-ept-1gb": false, + "ht": false, + "vmx-io-exit": false, + "nx": true, + "pclmulqdq": true, + "mmxext": true, + "popcnt": true, + "vaes": false, + "serialize": false, + "xsaves": true, + "movdir64b": false, + "vmx-shadow-vmcs": false, + "tcg-cpuid": true, + "lm": true, + "vmx-exit-save-preemption-timer": false, + "vmx-entry-load-pat": false, + "fsrm": false, + "vmx-entry-load-perf-global-ctrl": false, + "vmx-io-bitmap": false, + "vmx-store-lma": false, + "umip": true, + "vmx-movdr-exit": false, + "avx2": true, + "pse": true, + "avic": false, + "sep": true, + "pclmuldq": true, + "vmx-cr3-load-noexit": false, + "virt-ssbd": true, + "x-hv-max-vps": 1024, + "nodeid-msr": false, + "md-clear": false, + "split-lock-detect": false, + "kvm": true, + "misalignsse": true, + "min-xlevel": 2147483681, + "realized": false, + "kvm-pv-unhalt": true, + "bmi2": true, + "bmi1": true, + "tsc-scale": true, + "tsc_scale": true, + "topoext": false, + "amd-stibp": true, + "hv-vpindex": true, + "hv-no-nonarch-coresharing": "off", + "ucode-rev": 0, + "vmx-preemption-timer": false, + "xlevel2": 0, + "vmx-entry-load-pkrs": false, + "clflushopt": true, + "vmx-vnmi-pending": false, + "kvm-no-smi-migration": false, + "monitor": false, + "vmx-vintr-pending": false, + "avx512er": false, + "full-width-write": false, + "pmm-en": false, + "taa-no": false, + "pcid": false, + "vgif": true, + "vmx-secondary-ctls": false, + "vmx-xsaves": false, + "arch-capabilities": true, + "x-vendor-cpuid-only": true, + "clzero": true, + "3dnow": false, + "erms": false, + "x-force-features": false, + "vmx-entry-ia32e-mode": false, + "lahf-lm": true, + "lahf_lm": true, + "vmx-ins-outs": false, + "vpclmulqdq": false, + "xstore": false, + "fxsr-opt": true, + "hv-synic": true, + "fxsr_opt": true, + "rtm": false, + "kvm-hint-dedicated": false, + "amx-bf16": false, + "lmce": false, + "hv-time": true, + "perfctr-nb": false, + "perfctr_nb": false, + "hv-tlbflush": true, + "ffxsr": true, + "rdrand": true, + "rdseed": true, + "avx512-4vnniw": false, + "vme": true, + "vmx": false, + "dtes64": false, + "mtrr": true, + "rdtscp": true, + "xsaveerptr": true, + "pse36": true, + "kvm-pv-tlb-flush": true, + "vmx-activity-wait-sipi": false, + "tbm": false, + "vmx-rdpmc-exit": false, + "wdt": false, + "vmx-entry-load-efer": false, + "level-func7": 0, + "vmx-mtf": false, + "hv-tlbflush-ext": false, + "pause_filter": true, + "model-id": "AMD Ryzen 9 3900X 12-Core Processor ", + "sha-ni": true, + "vmx-exit-load-pkrs": false, + "abm": true, + "vmx-ept-advanced-exitinfo": false, + "avx512pf": false, + "vmx-hlt-exit": false, + "xstore-en": false + } + } + }, + "id": "libvirt-51" +} + { "execute": "qmp_capabilities", "id": "libvirt-1" diff --git a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml index 860ad2860a..cbade3b579 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml @@ -3250,4 +3250,20 @@ <machine type='tcg' name='pc-i440fx-3.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> <machine type='tcg' name='pc-i440fx-7.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram'/> <machine type='tcg' name='pc-q35-2.11' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/> + <hypervCapabilities supported='yes'> + <cap name='relaxed'/> + <cap name='vapic'/> + <cap name='spinlocks'/> + <cap name='vpindex'/> + <cap name='runtime'/> + <cap name='synic'/> + <cap name='stimer'/> + <cap name='reset'/> + <cap name='vendor_id'/> + <cap name='frequencies'/> + <cap name='reenlightenment'/> + <cap name='tlbflush'/> + <cap name='ipi'/> + <cap name='avic'/> + </hypervCapabilities> </qemuCaps> -- 2.38.2

On Thu, Jan 05, 2023 at 09:35:00 +0100, Michal Privoznik wrote:
Now that we have qemuMonitorGetCPUModelExpansion() aware of Hyper-V Enlightenments, we can start querying it. Two conditions need to be met:
1) KVM is in use, 2) Arch is either x86 or arm.
It may look like modifying the first call to qemuMonitorGetCPUModelExpansion() inside of virQEMUCapsProbeQMPHostCPU() would be sufficient but it is not. We really need to ask QEMU for full expansion and the first call does not guarantee that.
For the test data, I've just copied whatever 'query-cpu-model-expansion' returned earlier, therefore there are no hv-* props. But that's okay - the full expansion is not stored in cache (and thus not formatted in tests/qemucapabilitiesdata/caps_*.replies files either). This is purely runtime thing.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> ---
[...]
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 4c75eea64e..93585f5af1 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c
[...]
@@ -3029,6 +3036,66 @@ virQEMUCapsProbeCPUDefinitionsTest(virQEMUCaps *qemuCaps, }
+static int +virQEMUCapsProbeHypervCapabilities(virQEMUCaps *qemuCaps, + qemuMonitorCPUModelInfo *fullQEMU) +{ + g_autofree virDomainCapsFeatureHyperv *hvcaps = NULL; + size_t i; + + if (!fullQEMU) + return 0; + + hvcaps = g_new0(virDomainCapsFeatureHyperv, 1); + hvcaps->features.report = true; + + for (i = 0; i <fullQEMU->nprops; i++) {
Space after <
+ qemuMonitorCPUProperty prop = fullQEMU->props[i]; + const char *name; + int hvprop; + + if (!(name = STRSKIP(prop.name, "hv-"))) + continue; + + hvprop = virDomainHypervTypeFromString(name); + + if (hvprop < 0) { + /* Some names are different. For instance QEMU reports hv-vendor-id + * but we have it as vendor_id (because of XML). Replace hyphens + * with underscores and try again. */ + g_autofree char *underscoreName = NULL; + + underscoreName = virStringReplace(name, "-", "_"); + + hvprop = virDomainHypervTypeFromString(underscoreName); + if (hvprop < 0) { + VIR_DEBUG("Not yet implement Hyper-V enlightenment: %s", + prop.name); + continue; + } + } + + if ((prop.type == QEMU_MONITOR_CPU_PROPERTY_BOOLEAN && + prop.value.boolean) || + (prop.type == QEMU_MONITOR_CPU_PROPERTY_NUMBER && + prop.value.number > 0) || + (prop.type == QEMU_MONITOR_CPU_PROPERTY_STRING && + prop.value.string)) + VIR_DOMAIN_CAPS_ENUM_SET(hvcaps->features, hvprop); + + } + + if (hvcaps->features.values) { + hvcaps->supported = VIR_TRISTATE_BOOL_YES; + } else { + hvcaps->supported = VIR_TRISTATE_BOOL_NO;
After some testing with older qemus I've noticed that old qemu is reporting an incomplete list of the hyperv features it supports. Thus even with qemu-4.2 I get: <hyperv supported='yes'> <enum name='features'> <value>spinlocks</value> <value>vendor_id</value> </enum> </hyperv> So I think the best course of actions will be to document that with older qemus the list may be incomplete. The problem will fix itself once we drop support for old qemus. Still, if the data is not present we can't claim that hyperv is not supported though, so the assignment below should be skipped in such case.
+ } + + qemuCaps->hypervCapabilities = g_steal_pointer(&hvcaps); + return 0; +} + + static int virQEMUCapsProbeQMPHostCPU(virQEMUCaps *qemuCaps, virQEMUCapsAccel *accel,
[...]
@@ -4848,6 +4977,33 @@ virQEMUCapsFormatSGXInfo(virQEMUCaps *qemuCaps, }
+static void +virQEMUCapsFormatHypervCapabilities(virQEMUCaps *qemuCaps, + virBuffer *buf) +{ + virDomainCapsFeatureHyperv *hvcaps = qemuCaps->hypervCapabilities; + virBuffer attrBuf = VIR_BUFFER_INITIALIZER; + virBuffer childBuf = VIR_BUFFER_INIT_CHILD(buf);
g_auto()
+ + virBufferAsprintf(&attrBuf, " supported='%s'", + virTristateBoolTypeToString(hvcaps->supported)); + + if (hvcaps->supported) { + size_t i; + + for (i = 0; i < sizeof(hvcaps->features.values) * CHAR_BIT; i++) { + if (!(hvcaps->features.values & (1U << i))) + continue; + + virBufferAsprintf(&childBuf, "<cap name='%s'/>\n", + virDomainHypervTypeToString(i)); + } + } + + return virXMLFormatElement(buf, "hypervCapabilities", &attrBuf, &childBuf); +} + + char * virQEMUCapsFormatCache(virQEMUCaps *qemuCaps) {
Reviewed-by: Peter Krempa <pkrempa@redhat.com>

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> --- src/qemu/qemu_capabilities.c | 11 +++++++++++ .../domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 19 ++++++++++++++++++- .../domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 19 ++++++++++++++++++- tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 19 ++++++++++++++++++- 4 files changed, 65 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 93585f5af1..b557c737f0 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -6821,6 +6821,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, @@ -6877,6 +6887,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 eb18b5c696..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,6 +249,23 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> - <hyperv 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> 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 471a92693f..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,6 +248,23 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> - <hyperv 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> diff --git a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml index 436ca212a8..fac8033f76 100644 --- a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml @@ -249,6 +249,23 @@ <backup supported='yes'/> <sev supported='no'/> <sgx supported='no'/> - <hyperv 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> -- 2.38.2

On Thu, Jan 05, 2023 at 09:35:01 +0100, Michal Privoznik wrote:
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> --- src/qemu/qemu_capabilities.c | 11 +++++++++++ .../domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 19 ++++++++++++++++++- .../domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 19 ++++++++++++++++++- tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 19 ++++++++++++++++++- 4 files changed, 65 insertions(+), 3 deletions(-)
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
participants (2)
-
Michal Privoznik
-
Peter Krempa