[libvirt] [PATCH v4 0/5] Enable memory-backend-file.discard-data

v4 of: https://www.redhat.com/archives/libvir-list/2018-April/msg01897.html diff to v3: - patches 1 and 2 from the original set are pushed, - patch 3 is split into two (1 and 2 in this series), - Introduced new QEMU_CAPS_QOM_LIST_PROPERTIES - virQEMUCapsProbeQMPGenericProps is called iff the capability is set Michal Privoznik (5): qemuMonitorJSONGetDeviceProps: Separate props processing qemu_monitor: Introduce qemuMonitorGetObjectProps qemu_capabilities: Introduce QEMU_CAPS_QOM_LIST_PROPERTIES qemu_capabilities: Introduce QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD qemu: Introduce memoryBacking/discard docs/formatdomain.html.in | 34 +- docs/schemas/cputypes.rng | 5 + docs/schemas/domaincommon.rng | 10 + src/conf/domain_conf.c | 39 +- src/conf/domain_conf.h | 3 + src/conf/numa_conf.c | 27 + src/conf/numa_conf.h | 3 + src/libvirt_private.syms | 1 + src/qemu/qemu_capabilities.c | 20 + src/qemu/qemu_capabilities.h | 2 + src/qemu/qemu_command.c | 27 +- src/qemu/qemu_monitor.c | 13 + src/qemu/qemu_monitor.h | 3 + src/qemu/qemu_monitor_json.c | 89 +- src/qemu/qemu_monitor_json.h | 4 + .../caps_2.12.0.aarch64.replies | 416 +- tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 4 +- .../qemucapabilitiesdata/caps_2.12.0.ppc64.replies | 4454 ++++++++++---------- tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 4 +- .../qemucapabilitiesdata/caps_2.12.0.s390x.replies | 78 +- tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 2 + .../caps_2.12.0.x86_64.replies | 804 ++-- tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 4 +- tests/qemuxml2argvdata/hugepages-pages7.args | 3 +- tests/qemuxml2argvdata/hugepages-pages7.xml | 4 +- tests/qemuxml2argvtest.c | 3 +- 26 files changed, 3252 insertions(+), 2804 deletions(-) -- 2.16.1

The code that processes list of device properties is going to be reused. Therefore put it into a separate function. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_monitor_json.c | 59 +++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 24d37eb41d..95b9d60aff 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6053,35 +6053,19 @@ int qemuMonitorJSONSetObjectProperty(qemuMonitorPtr mon, #undef MAKE_SET_CMD -int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon, - const char *device, - char ***props) +static int +qemuMonitorJSONParsePropsList(virJSONValuePtr cmd, + virJSONValuePtr reply, + char ***props) { - int ret = -1; - virJSONValuePtr cmd; - virJSONValuePtr reply = NULL; virJSONValuePtr data; char **proplist = NULL; ssize_t n = 0; size_t i; - - *props = NULL; - - if (!(cmd = qemuMonitorJSONMakeCommand("device-list-properties", - "s:typename", device, - NULL))) - return -1; - - if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) - goto cleanup; - - if (qemuMonitorJSONHasError(reply, "DeviceNotFound")) { - ret = 0; - goto cleanup; - } + int ret = -1; if (qemuMonitorJSONCheckReply(cmd, reply, VIR_JSON_TYPE_ARRAY) < 0) - goto cleanup; + return ret; data = virJSONValueObjectGetArray(reply, "return"); n = virJSONValueArraySize(data); @@ -6110,8 +6094,37 @@ int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon, cleanup: virStringListFree(proplist); - virJSONValueFree(cmd); + return ret; +} + + +int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon, + const char *device, + char ***props) +{ + int ret = -1; + virJSONValuePtr cmd; + virJSONValuePtr reply = NULL; + + *props = NULL; + + if (!(cmd = qemuMonitorJSONMakeCommand("device-list-properties", + "s:typename", device, + NULL))) + return -1; + + if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) + goto cleanup; + + if (qemuMonitorJSONHasError(reply, "DeviceNotFound")) { + ret = 0; + goto cleanup; + } + + ret = qemuMonitorJSONParsePropsList(cmd, reply, props); + cleanup: virJSONValueFree(reply); + virJSONValueFree(cmd); return ret; } -- 2.16.1

On Fri, Apr 20, 2018 at 11:09:27AM +0200, Michal Privoznik wrote:
The code that processes list of device properties is going to be reused. Therefore put it into a separate function.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_monitor_json.c | 59 +++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 23 deletions(-)
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 24d37eb41d..95b9d60aff 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6053,35 +6053,19 @@ int qemuMonitorJSONSetObjectProperty(qemuMonitorPtr mon, #undef MAKE_SET_CMD
-int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon, - const char *device, - char ***props) +static int +qemuMonitorJSONParsePropsList(virJSONValuePtr cmd, + virJSONValuePtr reply, + char ***props) { - int ret = -1; - virJSONValuePtr cmd; - virJSONValuePtr reply = NULL; virJSONValuePtr data; char **proplist = NULL; ssize_t n = 0; size_t i; - - *props = NULL; - - if (!(cmd = qemuMonitorJSONMakeCommand("device-list-properties", - "s:typename", device, - NULL))) - return -1; - - if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) - goto cleanup; - - if (qemuMonitorJSONHasError(reply, "DeviceNotFound")) { - ret = 0; - goto cleanup; - } + int ret = -1;
if (qemuMonitorJSONCheckReply(cmd, reply, VIR_JSON_TYPE_ARRAY) < 0) - goto cleanup; + return ret;
Here I'd prefer either 'return -1' or 'goto cleanup', to avoid the impression that the value in 'ret' can possibly be significant here. More importantly, there is another mention of device-list-properties in the error message below: if (!(tmp = virJSONValueObjectGetString(child, "name"))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("device-list-properties reply data was missing 'name'")); goto cleanup; } Personally, I'd just s/device-list-properties //, because the error is unlikely. Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Now that we've gotten rid of misleading names we can introduce qemuMonitorGetObjectProps() function which queries -object properties. Again, some parts of code can be reused. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_monitor.c | 13 +++++++++++++ src/qemu/qemu_monitor.h | 3 +++ src/qemu/qemu_monitor_json.c | 32 ++++++++++++++++++++++++++++++++ src/qemu/qemu_monitor_json.h | 4 ++++ 4 files changed, 52 insertions(+) diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index f642d9a51a..a1e2e40d0f 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -3932,6 +3932,19 @@ qemuMonitorGetDeviceProps(qemuMonitorPtr mon, } +int +qemuMonitorGetObjectProps(qemuMonitorPtr mon, + const char *object, + char ***props) +{ + VIR_DEBUG("object=%s props=%p", object, props); + + QEMU_CHECK_MONITOR_JSON(mon); + + return qemuMonitorJSONGetObjectProps(mon, object, props); +} + + char * qemuMonitorGetTargetArch(qemuMonitorPtr mon) { diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index d6b68b44ca..0f648ce27c 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1048,6 +1048,9 @@ int qemuMonitorGetObjectTypes(qemuMonitorPtr mon, int qemuMonitorGetDeviceProps(qemuMonitorPtr mon, const char *device, char ***props); +int qemuMonitorGetObjectProps(qemuMonitorPtr mon, + const char *object, + char ***props); char *qemuMonitorGetTargetArch(qemuMonitorPtr mon); int qemuMonitorNBDServerStart(qemuMonitorPtr mon, diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 95b9d60aff..c6b9ccce39 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6129,6 +6129,38 @@ int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon, } +int +qemuMonitorJSONGetObjectProps(qemuMonitorPtr mon, + const char *object, + char ***props) +{ + int ret = -1; + virJSONValuePtr cmd; + virJSONValuePtr reply = NULL; + + *props = NULL; + + if (!(cmd = qemuMonitorJSONMakeCommand("qom-list-properties", + "s:typename", object, + NULL))) + return -1; + + if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) + goto cleanup; + + if (qemuMonitorJSONHasError(reply, "DeviceNotFound")) { + ret = 0; + goto cleanup; + } + + ret = qemuMonitorJSONParsePropsList(cmd, reply, props); + cleanup: + virJSONValueFree(reply); + virJSONValueFree(cmd); + return ret; +} + + char * qemuMonitorJSONGetTargetArch(qemuMonitorPtr mon) { diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index 665da27d6d..b4863a454a 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -445,6 +445,10 @@ int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon, const char *device, char ***props) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); +int qemuMonitorJSONGetObjectProps(qemuMonitorPtr mon, + const char *object, + char ***props) + ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); char *qemuMonitorJSONGetTargetArch(qemuMonitorPtr mon); int qemuMonitorJSONNBDServerStart(qemuMonitorPtr mon, -- 2.16.1

On Fri, Apr 20, 2018 at 11:09:28AM +0200, Michal Privoznik wrote:
Now that we've gotten rid of misleading names we can introduce qemuMonitorGetObjectProps() function which queries -object properties. Again, some parts of code can be reused.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_monitor.c | 13 +++++++++++++ src/qemu/qemu_monitor.h | 3 +++ src/qemu/qemu_monitor_json.c | 32 ++++++++++++++++++++++++++++++++ src/qemu/qemu_monitor_json.h | 4 ++++ 4 files changed, 52 insertions(+)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

This capability tracks if qemu has "qom-list-properties" monitor command. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 + 6 files changed, 7 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 833c75514c..5b9ada81dd 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -473,6 +473,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, /* 290 */ "query-cpus-fast", "disk-write-cache", + "qom-list-properties", ); @@ -981,6 +982,7 @@ struct virQEMUCapsStringFlags virQEMUCapsCommands[] = { { "query-cpu-definitions", QEMU_CAPS_QUERY_CPU_DEFINITIONS }, { "query-named-block-nodes", QEMU_CAPS_QUERY_NAMED_BLOCK_NODES }, { "query-cpus-fast", QEMU_CAPS_QUERY_CPUS_FAST }, + { "qom-list-properties", QEMU_CAPS_QOM_LIST_PROPERTIES }, }; struct virQEMUCapsStringFlags virQEMUCapsMigration[] = { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index f08cfc2611..e3f749a026 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -457,6 +457,7 @@ typedef enum { /* 290 */ QEMU_CAPS_QUERY_CPUS_FAST, /* query-cpus-fast command */ QEMU_CAPS_DISK_WRITE_CACHE, /* qemu block frontends support write-cache param */ + QEMU_CAPS_QOM_LIST_PROPERTIES, /* qom-list-properties monitor command */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml index 31c5d0dd23..f85cab6f64 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml @@ -157,6 +157,7 @@ <flag name='seccomp-blacklist'/> <flag name='query-cpus-fast'/> <flag name='disk-write-cache'/> + <flag name='qom-list-properties'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>342346</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml index 7dead4a1f4..4fb1205162 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -154,6 +154,7 @@ <flag name='seccomp-blacklist'/> <flag name='query-cpus-fast'/> <flag name='disk-write-cache'/> + <flag name='qom-list-properties'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>419215</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml index 70ae8f91c7..cb4f0d0d5b 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -119,6 +119,7 @@ <flag name='seccomp-blacklist'/> <flag name='query-cpus-fast'/> <flag name='disk-write-cache'/> + <flag name='qom-list-properties'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml index d809a78380..f7c394a218 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -195,6 +195,7 @@ <flag name='seccomp-blacklist'/> <flag name='query-cpus-fast'/> <flag name='disk-write-cache'/> + <flag name='qom-list-properties'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>390060</microcodeVersion> -- 2.16.1

On Fri, Apr 20, 2018 at 11:09:29AM +0200, Michal Privoznik wrote:
This capability tracks if qemu has "qom-list-properties" monitor command.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 + 6 files changed, 7 insertions(+)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

This capability tracks if memory-backend-file has discard-data attribute or not. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_capabilities.c | 18 + src/qemu/qemu_capabilities.h | 1 + .../caps_2.12.0.aarch64.replies | 416 +- tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 3 +- .../qemucapabilitiesdata/caps_2.12.0.ppc64.replies | 4454 ++++++++++---------- tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 3 +- .../qemucapabilitiesdata/caps_2.12.0.s390x.replies | 78 +- tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 + .../caps_2.12.0.x86_64.replies | 804 ++-- tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 3 +- 10 files changed, 3010 insertions(+), 2771 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 5b9ada81dd..ea2402ba81 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -474,6 +474,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "query-cpus-fast", "disk-write-cache", "qom-list-properties", + "memory-backend-file.discard-data", ); @@ -1368,6 +1369,15 @@ static virQEMUCapsObjectTypeProps virQEMUCapsDeviceProps[] = { QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW }, }; +static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsMemoryBackendFile[] = { + { "discard-data", QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD }, +}; + +static virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = { + { "memory-backend-file", virQEMUCapsObjectPropsMemoryBackendFile, + ARRAY_CARDINALITY(virQEMUCapsObjectPropsMemoryBackendFile), + QEMU_CAPS_OBJECT_MEMORY_FILE }, +}; static void virQEMUCapsProcessStringFlags(virQEMUCapsPtr qemuCaps, @@ -2125,6 +2135,14 @@ virQEMUCapsProbeQMPDevices(virQEMUCapsPtr qemuCaps, qemuMonitorGetDeviceProps) < 0) return -1; + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QOM_LIST_PROPERTIES) && + virQEMUCapsProbeQMPGenericProps(qemuCaps, + mon, + virQEMUCapsObjectProps, + ARRAY_CARDINALITY(virQEMUCapsObjectProps), + qemuMonitorGetObjectProps) < 0) + return -1; + return 0; } diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index e3f749a026..daf60a3a1d 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -458,6 +458,7 @@ typedef enum { QEMU_CAPS_QUERY_CPUS_FAST, /* query-cpus-fast command */ QEMU_CAPS_DISK_WRITE_CACHE, /* qemu block frontends support write-cache param */ QEMU_CAPS_QOM_LIST_PROPERTIES, /* qom-list-properties monitor command */ + QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD, /* -object memory-backend-dile,discard-data= */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.replies b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.replies index 3512d88b67..3ca0ea13fa 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.replies +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.replies @@ -5275,6 +5275,60 @@ "id": "libvirt-35" } +{ + "return": [ + { + "name": "policy", + "type": "HostMemPolicy" + }, + { + "name": "dump", + "type": "bool" + }, + { + "name": "share", + "type": "bool" + }, + { + "name": "prealloc", + "type": "bool" + }, + { + "name": "size", + "type": "int" + }, + { + "name": "host-nodes", + "type": "int" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "merge", + "type": "bool" + }, + { + "name": "align", + "type": "int" + }, + { + "name": "mem-path", + "type": "string" + }, + { + "name": "discard-data", + "type": "bool" + }, + { + "name": "type", + "type": "string" + } + ], + "id": "libvirt-36" +} + { "return": [ { @@ -5569,198 +5623,198 @@ "cpu-max": 1 } ], - "id": "libvirt-36" -} - -{ - "return": [ - { - "name": "pxa262", - "typename": "pxa262-arm-cpu", - "static": false - }, - { - "name": "pxa270-a0", - "typename": "pxa270-a0-arm-cpu", - "static": false - }, - { - "name": "arm1136", - "typename": "arm1136-arm-cpu", - "static": false - }, - { - "name": "cortex-a15", - "typename": "cortex-a15-arm-cpu", - "static": false - }, - { - "name": "pxa260", - "typename": "pxa260-arm-cpu", - "static": false - }, - { - "name": "arm1136-r2", - "typename": "arm1136-r2-arm-cpu", - "static": false - }, - { - "name": "pxa261", - "typename": "pxa261-arm-cpu", - "static": false - }, - { - "name": "pxa255", - "typename": "pxa255-arm-cpu", - "static": false - }, - { - "name": "cortex-m33", - "typename": "cortex-m33-arm-cpu", - "static": false - }, - { - "name": "arm926", - "typename": "arm926-arm-cpu", - "static": false - }, - { - "name": "arm11mpcore", - "typename": "arm11mpcore-arm-cpu", - "static": false - }, - { - "name": "pxa250", - "typename": "pxa250-arm-cpu", - "static": false - }, - { - "name": "ti925t", - "typename": "ti925t-arm-cpu", - "static": false - }, - { - "name": "cortex-a57", - "typename": "cortex-a57-arm-cpu", - "static": false - }, - { - "name": "sa1110", - "typename": "sa1110-arm-cpu", - "static": false - }, - { - "name": "host", - "typename": "host-arm-cpu", - "static": false - }, - { - "name": "arm1176", - "typename": "arm1176-arm-cpu", - "static": false - }, - { - "name": "cortex-a53", - "typename": "cortex-a53-arm-cpu", - "static": false - }, - { - "name": "sa1100", - "typename": "sa1100-arm-cpu", - "static": false - }, - { - "name": "pxa270-c5", - "typename": "pxa270-c5-arm-cpu", - "static": false - }, - { - "name": "cortex-a9", - "typename": "cortex-a9-arm-cpu", - "static": false - }, - { - "name": "cortex-a8", - "typename": "cortex-a8-arm-cpu", - "static": false - }, - { - "name": "cortex-a7", - "typename": "cortex-a7-arm-cpu", - "static": false - }, - { - "name": "pxa270-c0", - "typename": "pxa270-c0-arm-cpu", - "static": false - }, - { - "name": "arm1026", - "typename": "arm1026-arm-cpu", - "static": false - }, - { - "name": "pxa270-b1", - "typename": "pxa270-b1-arm-cpu", - "static": false - }, - { - "name": "cortex-m3", - "typename": "cortex-m3-arm-cpu", - "static": false - }, - { - "name": "max", - "typename": "max-arm-cpu", - "static": false - }, - { - "name": "cortex-m4", - "typename": "cortex-m4-arm-cpu", - "static": false - }, - { - "name": "pxa270-b0", - "typename": "pxa270-b0-arm-cpu", - "static": false - }, - { - "name": "arm946", - "typename": "arm946-arm-cpu", - "static": false - }, - { - "name": "cortex-r5", - "typename": "cortex-r5-arm-cpu", - "static": false - }, - { - "name": "pxa270-a1", - "typename": "pxa270-a1-arm-cpu", - "static": false - }, - { - "name": "pxa270", - "typename": "pxa270-arm-cpu", - "static": false - } - ], "id": "libvirt-37" } { "return": [ + { + "name": "pxa262", + "typename": "pxa262-arm-cpu", + "static": false + }, + { + "name": "pxa270-a0", + "typename": "pxa270-a0-arm-cpu", + "static": false + }, + { + "name": "arm1136", + "typename": "arm1136-arm-cpu", + "static": false + }, + { + "name": "cortex-a15", + "typename": "cortex-a15-arm-cpu", + "static": false + }, + { + "name": "pxa260", + "typename": "pxa260-arm-cpu", + "static": false + }, + { + "name": "arm1136-r2", + "typename": "arm1136-r2-arm-cpu", + "static": false + }, + { + "name": "pxa261", + "typename": "pxa261-arm-cpu", + "static": false + }, + { + "name": "pxa255", + "typename": "pxa255-arm-cpu", + "static": false + }, + { + "name": "cortex-m33", + "typename": "cortex-m33-arm-cpu", + "static": false + }, + { + "name": "arm926", + "typename": "arm926-arm-cpu", + "static": false + }, + { + "name": "arm11mpcore", + "typename": "arm11mpcore-arm-cpu", + "static": false + }, + { + "name": "pxa250", + "typename": "pxa250-arm-cpu", + "static": false + }, + { + "name": "ti925t", + "typename": "ti925t-arm-cpu", + "static": false + }, + { + "name": "cortex-a57", + "typename": "cortex-a57-arm-cpu", + "static": false + }, + { + "name": "sa1110", + "typename": "sa1110-arm-cpu", + "static": false + }, + { + "name": "host", + "typename": "host-arm-cpu", + "static": false + }, + { + "name": "arm1176", + "typename": "arm1176-arm-cpu", + "static": false + }, + { + "name": "cortex-a53", + "typename": "cortex-a53-arm-cpu", + "static": false + }, + { + "name": "sa1100", + "typename": "sa1100-arm-cpu", + "static": false + }, + { + "name": "pxa270-c5", + "typename": "pxa270-c5-arm-cpu", + "static": false + }, + { + "name": "cortex-a9", + "typename": "cortex-a9-arm-cpu", + "static": false + }, + { + "name": "cortex-a8", + "typename": "cortex-a8-arm-cpu", + "static": false + }, + { + "name": "cortex-a7", + "typename": "cortex-a7-arm-cpu", + "static": false + }, + { + "name": "pxa270-c0", + "typename": "pxa270-c0-arm-cpu", + "static": false + }, + { + "name": "arm1026", + "typename": "arm1026-arm-cpu", + "static": false + }, + { + "name": "pxa270-b1", + "typename": "pxa270-b1-arm-cpu", + "static": false + }, + { + "name": "cortex-m3", + "typename": "cortex-m3-arm-cpu", + "static": false + }, + { + "name": "max", + "typename": "max-arm-cpu", + "static": false + }, + { + "name": "cortex-m4", + "typename": "cortex-m4-arm-cpu", + "static": false + }, + { + "name": "pxa270-b0", + "typename": "pxa270-b0-arm-cpu", + "static": false + }, + { + "name": "arm946", + "typename": "arm946-arm-cpu", + "static": false + }, + { + "name": "cortex-r5", + "typename": "cortex-r5-arm-cpu", + "static": false + }, + { + "name": "pxa270-a1", + "typename": "pxa270-a1-arm-cpu", + "static": false + }, + { + "name": "pxa270", + "typename": "pxa270-arm-cpu", + "static": false + } ], "id": "libvirt-38" } { "return": [ - "emulator" ], "id": "libvirt-39" } +{ + "return": [ + "emulator" + ], + "id": "libvirt-40" +} + { "return": [ { @@ -6919,7 +6973,7 @@ "option": "drive" } ], - "id": "libvirt-40" + "id": "libvirt-41" } { @@ -6981,7 +7035,7 @@ "capability": "dirty-bitmaps" } ], - "id": "libvirt-41" + "id": "libvirt-42" } { @@ -18349,7 +18403,7 @@ "meta-type": "object" } ], - "id": "libvirt-42" + "id": "libvirt-43" } { @@ -18365,7 +18419,7 @@ "kernel": false } ], - "id": "libvirt-43" + "id": "libvirt-44" } { diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml index f85cab6f64..c7b476d862 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml @@ -158,9 +158,10 @@ <flag name='query-cpus-fast'/> <flag name='disk-write-cache'/> <flag name='qom-list-properties'/> + <flag name='memory-backend-file.discard-data'/> <version>2011090</version> <kvmVersion>0</kvmVersion> - <microcodeVersion>342346</microcodeVersion> + <microcodeVersion>343099</microcodeVersion> <package>v2.12.0-rc0</package> <arch>aarch64</arch> <cpu type='kvm' name='pxa262'/> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.replies b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.replies index 2166b34973..1e93cd6dca 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.replies +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.replies @@ -5322,6 +5322,60 @@ "id": "libvirt-36" } +{ + "return": [ + { + "name": "policy", + "type": "HostMemPolicy" + }, + { + "name": "dump", + "type": "bool" + }, + { + "name": "share", + "type": "bool" + }, + { + "name": "prealloc", + "type": "bool" + }, + { + "name": "size", + "type": "int" + }, + { + "name": "host-nodes", + "type": "int" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "merge", + "type": "bool" + }, + { + "name": "align", + "type": "int" + }, + { + "name": "mem-path", + "type": "string" + }, + { + "name": "discard-data", + "type": "bool" + }, + { + "name": "type", + "type": "string" + } + ], + "id": "libvirt-37" +} + { "return": [ { @@ -5457,2218 +5511,2218 @@ "cpu-max": 1 } ], - "id": "libvirt-37" -} - -{ - "return": [ - { - "name": "default", - "typename": "604-powerpc64-cpu", - "static": false - }, - { - "name": "ppc", - "typename": "604-powerpc64-cpu", - "static": false - }, - { - "name": "ppc32", - "typename": "604-powerpc64-cpu", - "static": false - }, - { - "name": "ppc64", - "typename": "970fx_v3.1-powerpc64-cpu", - "static": false - }, - { - "name": "970mp", - "typename": "970mp_v1.1-powerpc64-cpu", - "static": false - }, - { - "name": "970fx", - "typename": "970fx_v3.1-powerpc64-cpu", - "static": false - }, - { - "name": "970", - "typename": "970_v2.2-powerpc64-cpu", - "static": false - }, - { - "name": "power9", - "typename": "power9_v2.0-powerpc64-cpu", - "static": false - }, - { - "name": "power8nvl", - "typename": "power8nvl_v1.0-powerpc64-cpu", - "static": false - }, - { - "name": "power8", - "typename": "host-powerpc64-cpu", - "static": false - }, - { - "name": "power8e", - "typename": "power8e_v2.1-powerpc64-cpu", - "static": false - }, - { - "name": "power7+", - "typename": "power7+_v2.1-powerpc64-cpu", - "static": false - }, - { - "name": "power7", - "typename": "power7_v2.3-powerpc64-cpu", - "static": false - }, - { - "name": "power5gs", - "typename": "power5+_v2.1-powerpc64-cpu", - "static": false - }, - { - "name": "power5+", - "typename": "power5+_v2.1-powerpc64-cpu", - "static": false - }, - { - "name": "apollo7pm", - "typename": "7457a_v1.0-powerpc64-cpu", - "static": false - }, - { - "name": "7457a", - "typename": "7457a_v1.2-powerpc64-cpu", - "static": false - }, - { - "name": "7447a", - "typename": "7447a_v1.2-powerpc64-cpu", - "static": false - }, - { - "name": "apollo7", - "typename": "7457_v1.2-powerpc64-cpu", - "static": false - }, - { - "name": "7457", - "typename": "7457_v1.2-powerpc64-cpu", - "static": false - }, - { - "name": "7447", - "typename": "7447_v1.1-powerpc64-cpu", - "static": false - }, - { - "name": "apollo6", - "typename": "7455_v3.2-powerpc64-cpu", - "static": false - }, - { - "name": "7455", - "typename": "7455_v3.2-powerpc64-cpu", - "static": false - }, - { - "name": "7445", - "typename": "7445_v3.2-powerpc64-cpu", - "static": false - }, - { - "name": "7451", - "typename": "7451_v2.3-powerpc64-cpu", - "static": false - }, - { - "name": "7441", - "typename": "7441_v2.3-powerpc64-cpu", - "static": false - }, - { - "name": "vger", - "typename": "7450_v2.1-powerpc64-cpu", - "static": false - }, - { - "name": "7450", - "typename": "7450_v2.1-powerpc64-cpu", - "static": false - }, - { - "name": "7448", - "typename": "7448_v2.1-powerpc64-cpu", - "static": false - }, - { - "name": "nitro", - "typename": "7410_v1.4-powerpc64-cpu", - "static": false - }, - { - "name": "7410", - "typename": "7410_v1.4-powerpc64-cpu", - "static": false - }, - { - "name": "g4", - "typename": "7400_v2.9-powerpc64-cpu", - "static": false - }, - { - "name": "max", - "typename": "7400_v2.9-powerpc64-cpu", - "static": false - }, - { - "name": "7400", - "typename": "7400_v2.9-powerpc64-cpu", - "static": false - }, - { - "name": "goldfinger", - "typename": "755_v2.8-powerpc64-cpu", - "static": false - }, - { - "name": "755", - "typename": "755_v2.8-powerpc64-cpu", - "static": false - }, - { - "name": "745", - "typename": "745_v2.8-powerpc64-cpu", - "static": false - }, - { - "name": "lonestar", - "typename": "750l_v3.2-powerpc64-cpu", - "static": false - }, - { - "name": "750l", - "typename": "750l_v3.2-powerpc64-cpu", - "static": false - }, - { - "name": "750gx", - "typename": "750gx_v1.2-powerpc64-cpu", - "static": false - }, - { - "name": "750fx", - "typename": "750fx_v2.3-powerpc64-cpu", - "static": false - }, - { - "name": "750cxe", - "typename": "750cxe_v3.1b-powerpc64-cpu", - "static": false - }, - { - "name": "750cx", - "typename": "750cx_v2.2-powerpc64-cpu", - "static": false - }, - { - "name": "750cl", - "typename": "750cl_v2.0-powerpc64-cpu", - "static": false - }, - { - "name": "conan/doyle", - "typename": "750p-powerpc64-cpu", - "static": false - }, - { - "name": "g3", - "typename": "750_v3.1-powerpc64-cpu", - "static": false - }, - { - "name": "typhoon", - "typename": "750_v3.1-powerpc64-cpu", - "static": false - }, - { - "name": "750", - "typename": "750_v3.1-powerpc64-cpu", - "static": false - }, - { - "name": "arthur", - "typename": "740_v3.1-powerpc64-cpu", - "static": false - }, - { - "name": "740", - "typename": "740_v3.1-powerpc64-cpu", - "static": false - }, - { - "name": "mach5", - "typename": "604r-powerpc64-cpu", - "static": false - }, - { - "name": "sirocco", - "typename": "604e_v2.4-powerpc64-cpu", - "static": false - }, - { - "name": "604e", - "typename": "604e_v2.4-powerpc64-cpu", - "static": false - }, - { - "name": "goldeneye", - "typename": "603e7t-powerpc64-cpu", - "static": false - }, - { - "name": "603r", - "typename": "603e7t-powerpc64-cpu", - "static": false - }, - { - "name": "vaillant", - "typename": "603e7v-powerpc64-cpu", - "static": false - }, - { - "name": "stretch", - "typename": "603e_v4.1-powerpc64-cpu", - "static": false - }, - { - "name": "603e", - "typename": "603e_v4.1-powerpc64-cpu", - "static": false - }, - { - "name": "vanilla", - "typename": "603-powerpc64-cpu", - "static": false - }, - { - "name": "601v", - "typename": "601_v2-powerpc64-cpu", - "static": false - }, - { - "name": "601", - "typename": "601_v2-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8560", - "typename": "mpc8560_v21-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8555e", - "typename": "mpc8555e_v11-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8555", - "typename": "mpc8555_v11-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8548e", - "typename": "mpc8548e_v21-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8548", - "typename": "mpc8548_v21-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8547e", - "typename": "mpc8547e_v21-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8545e", - "typename": "mpc8545e_v21-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8545", - "typename": "mpc8545_v21-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8544e", - "typename": "mpc8544e_v11-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8544", - "typename": "mpc8544_v11-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8543e", - "typename": "mpc8543e_v21-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8543", - "typename": "mpc8543_v21-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8541e", - "typename": "mpc8541e_v11-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8541", - "typename": "mpc8541_v11-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8540", - "typename": "mpc8540_v21-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8533e", - "typename": "mpc8533e_v11-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8533", - "typename": "mpc8533_v11-powerpc64-cpu", - "static": false - }, - { - "name": "e500v2", - "typename": "e500v2_v22-powerpc64-cpu", - "static": false - }, - { - "name": "e500v1", - "typename": "e500_v20-powerpc64-cpu", - "static": false - }, - { - "name": "e500", - "typename": "e500v2_v22-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8347ea", - "typename": "mpc8347eat-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8347e", - "typename": "mpc8347et-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8347a", - "typename": "mpc8347at-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8347", - "typename": "mpc8347t-powerpc64-cpu", - "static": false - }, - { - "name": "e300", - "typename": "e300c3-powerpc64-cpu", - "static": false - }, - { - "name": "e200", - "typename": "e200z6-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8280", - "typename": "g2legp3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8275", - "typename": "g2legp3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8272", - "typename": "g2legp3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8271", - "typename": "g2legp3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8270", - "typename": "g2legp3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8266_hip4", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8266_hip3", - "typename": "g2hip3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8266", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8265_hip4", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8265_hip3", - "typename": "g2hip3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8265", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8264_hip4", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8264_hip3", - "typename": "g2hip3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8264", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8260_hip4", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8260_hip3", - "typename": "g2hip3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8260", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8255_hip4", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8255_hip3", - "typename": "g2hip3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8255", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8250_hip4", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8250_hip3", - "typename": "g2hip3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8250", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8248", - "typename": "g2legp3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8247", - "typename": "g2legp3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8245", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8241", - "typename": "g2hip4-powerpc64-cpu", - "static": false - }, - { - "name": "powerquicc-ii", - "typename": "g2legp3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc82xx", - "typename": "g2legp3-powerpc64-cpu", - "static": false - }, - { - "name": "mpc5200b", - "typename": "mpc5200b_v21-powerpc64-cpu", - "static": false - }, - { - "name": "mpc5200", - "typename": "mpc5200_v12-powerpc64-cpu", - "static": false - }, - { - "name": "mpc52xx", - "typename": "mpc5200_v12-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8240", - "typename": "603-powerpc64-cpu", - "static": false - }, - { - "name": "460ex", - "typename": "460exb-powerpc64-cpu", - "static": false - }, - { - "name": "440ep", - "typename": "440epb-powerpc64-cpu", - "static": false - }, - { - "name": "x2vp50", - "typename": "x2vp20-powerpc64-cpu", - "static": false - }, - { - "name": "x2vp7", - "typename": "x2vp4-powerpc64-cpu", - "static": false - }, - { - "name": "405gpe", - "typename": "405crc-powerpc64-cpu", - "static": false - }, - { - "name": "405gp", - "typename": "405gpd-powerpc64-cpu", - "static": false - }, - { - "name": "405cr", - "typename": "405crc-powerpc64-cpu", - "static": false - }, - { - "name": "405", - "typename": "405d4-powerpc64-cpu", - "static": false - }, - { - "name": "403", - "typename": "403gc-powerpc64-cpu", - "static": false - }, - { - "name": "mpc8547e_v21", - "typename": "", - "static": false - }, - { - "name": "750cl_v1.0", - "typename": "", - "static": false - }, - { - "name": "7457a_v1.1", - "typename": "", - "static": false - }, - { - "name": "g2gp", - "typename": "", - "static": false - }, - { - "name": "750cxe_v2.1", - "typename": "", - "static": false - }, - { - "name": "755_v2.7", - "typename": "", - "static": false - }, - { - "name": "750_v2.1", - "typename": "", - "static": false - }, - { - "name": "755_v2.2", - "typename": "", - "static": false - }, - { - "name": "745_v2.0", - "typename": "", - "static": false - }, - { - "name": "mpc8377", - "typename": "", - "static": false - }, - { - "name": "7455_v1.0", - "typename": "", - "static": false - }, - { - "name": "mpc8545_v21", - "typename": "", - "static": false - }, - { - "name": "mpc8548_v11", - "typename": "", - "static": false - }, - { - "name": "405d4", - "typename": "", - "static": false - }, - { - "name": "g2le", - "typename": "", - "static": false - }, - { - "name": "g2hip3", - "typename": "", - "static": false - }, - { - "name": "750e", - "typename": "", - "static": false - }, - { - "name": "mpc8572", - "typename": "", - "static": false - }, - { - "name": "970fx_v2.0", - "typename": "", - "static": false - }, - { - "name": "750fx_v2.0", - "typename": "", - "static": false - }, - { - "name": "603p", - "typename": "", - "static": false - }, - { - "name": "405gpb", - "typename": "", - "static": false - }, - { - "name": "7400_v2.7", - "typename": "", - "static": false - }, - { - "name": "mpc8544e_v10", - "typename": "", - "static": false - }, - { - "name": "e500v2_v10", - "typename": "", - "static": false - }, - { - "name": "e500mc", - "typename": "", - "static": false - }, - { - "name": "603e7v1", - "typename": "", - "static": false - }, - { - "name": "970mp_v1.0", - "typename": "", - "static": false - }, - { - "name": "740e", - "typename": "", - "static": false - }, - { - "name": "405crc", - "typename": "", - "static": false - }, - { - "name": "403ga", - "typename": "", - "static": false - }, - { - "name": "7447a_v1.0", - "typename": "", - "static": false - }, - { - "name": "7400_v2.2", - "typename": "", - "static": false - }, - { - "name": "e300c1", - "typename": "", - "static": false - }, - { - "name": "mpc8572e", - "typename": "", - "static": false - }, - { - "name": "e500v2_v21", - "typename": "", - "static": false - }, - { - "name": "970fx_v1.0", - "typename": "", - "static": false - }, - { - "name": "750gx_v1.2", - "typename": "", - "static": false - }, - { - "name": "750fx_v1.0", - "typename": "", - "static": false - }, - { - "name": "7457_v1.1", - "typename": "", - "static": false - }, - { - "name": "970fx_v3.0", - "typename": "", - "static": false - }, - { - "name": "604e_v2.2", - "typename": "", - "static": false - }, - { - "name": "755_v2.6", - "typename": "", - "static": false - }, - { - "name": "401a1", - "typename": "", - "static": false - }, - { - "name": "power9_v1.0", - "typename": "", - "static": false - }, - { - "name": "npe405h", - "typename": "", - "static": false - }, - { - "name": "7410_v1.4", - "typename": "", - "static": false - }, - { - "name": "g2ls", - "typename": "", - "static": false - }, - { - "name": "750_v2.0", - "typename": "", - "static": false - }, - { - "name": "401b2", - "typename": "", - "static": false - }, - { - "name": "mpc8349", - "typename": "", - "static": false - }, - { - "name": "mpc8347ep", - "typename": "", - "static": false - }, - { - "name": "7445_v3.2", - "typename": "", - "static": false - }, - { - "name": "mpc8540_v21", - "typename": "", - "static": false - }, - { - "name": "mpc8543_v11", - "typename": "", - "static": false - }, - { - "name": "403gcx", - "typename": "", - "static": false - }, - { - "name": "745_v2.4", - "typename": "", - "static": false - }, - { - "name": "mpc8548_v21", - "typename": "", - "static": false - }, - { - "name": "750l_v3.2", - "typename": "", - "static": false - }, - { - "name": "750_v1.0", - "typename": "", - "static": false - }, - { - "name": "755_v1.1", - "typename": "", - "static": false - }, - { - "name": "e500_v10", - "typename": "", - "static": false - }, - { - "name": "750cxe_v3.0", - "typename": "", - "static": false - }, - { - "name": "mpc8541e_v10", - "typename": "", - "static": false - }, - { - "name": "mpc8347p", - "typename": "", - "static": false - }, - { - "name": "mpc8555e_v10", - "typename": "", - "static": false - }, - { - "name": "power9_v2.0", - "typename": "", - "static": false - }, - { - "name": "power7_v2.3", - "typename": "", - "static": false - }, - { - "name": "603e7v", - "typename": "", - "static": false - }, - { - "name": "mpc8543e_v11", - "typename": "", - "static": false - }, - { - "name": "750_v3.0", - "typename": "", - "static": false - }, - { - "name": "7400_v2.6", - "typename": "", - "static": false - }, - { - "name": "405gpa", - "typename": "", - "static": false - }, - { - "name": "440epx", - "typename": "", - "static": false - }, - { - "name": "750l_v2.2", - "typename": "", - "static": false - }, - { - "name": "e200z6", - "typename": "", - "static": false - }, - { - "name": "mpc8547e_v20", - "typename": "", - "static": false - }, - { - "name": "7457a_v1.0", - "typename": "", - "static": false - }, - { - "name": "mpc8349ea", - "typename": "", - "static": false - }, - { - "name": "e500v2_v20", - "typename": "", - "static": false - }, - { - "name": "power8nvl_v1.0", - "typename": "", - "static": false - }, - { - "name": "mpc8540_v10", - "typename": "", - "static": false - }, - { - "name": "755_v2.1", - "typename": "", - "static": false - }, - { - "name": "745_v2.8", - "typename": "", - "static": false - }, - { - "name": "npe405l", - "typename": "", - "static": false - }, - { - "name": "mpc8343ea", - "typename": "", - "static": false - }, - { - "name": "mpc8545_v20", - "typename": "", - "static": false - }, - { - "name": "mpc8548_v10", - "typename": "", - "static": false - }, - { - "name": "7448_v1.1", - "typename": "", - "static": false - }, - { - "name": "7455_v3.4", - "typename": "", - "static": false - }, - { - "name": "740_v2.2", - "typename": "", - "static": false - }, - { - "name": "7400_v1.1", - "typename": "", - "static": false - }, - { - "name": "mpc8347et", - "typename": "", - "static": false - }, - { - "name": "7441_v2.10", - "typename": "", - "static": false - }, - { - "name": "603e_v1.4", - "typename": "", - "static": false - }, - { - "name": "mpc8543_v10", - "typename": "", - "static": false - }, - { - "name": "401c2", - "typename": "", - "static": false - }, - { - "name": "7451_v2.10", - "typename": "", - "static": false - }, - { - "name": "750cx_v2.2", - "typename": "", - "static": false - }, - { - "name": "mpc8543_v21", - "typename": "", - "static": false - }, - { - "name": "603e7", - "typename": "", - "static": false - }, - { - "name": "7448_v2.1", - "typename": "", - "static": false - }, - { - "name": "7441_v2.3", - "typename": "", - "static": false - }, - { - "name": "405crb", - "typename": "", - "static": false - }, - { - "name": "604", - "typename": "", - "static": false - }, - { - "name": "7400_v2.1", - "typename": "", - "static": false - }, - { - "name": "440-xilinx-w-dfpu", - "typename": "", - "static": false - }, - { - "name": "7445_v2.1", - "typename": "", - "static": false - }, - { - "name": "cobra", - "typename": "", - "static": false - }, - { - "name": "e500_v20", - "typename": "", - "static": false - }, - { - "name": "mpc8541_v11", - "typename": "", - "static": false - }, - { - "name": "750gx_v1.1", - "typename": "", - "static": false - }, - { - "name": "750cxe_v2.4", - "typename": "", - "static": false - }, - { - "name": "mpc8641d", - "typename": "", - "static": false - }, - { - "name": "mpc8543e_v21", - "typename": "", - "static": false - }, - { - "name": "750l_v2.1", - "typename": "", - "static": false - }, - { - "name": "7457_v1.0", - "typename": "", - "static": false - }, - { - "name": "7450_v1.2", - "typename": "", - "static": false - }, - { - "name": "755_v2.5", - "typename": "", - "static": false - }, - { - "name": "7410_v1.3", - "typename": "", - "static": false - }, - { - "name": "745_v2.3", - "typename": "", - "static": false - }, - { - "name": "755_v2.0", - "typename": "", - "static": false - }, - { - "name": "e500v2_v30", - "typename": "", - "static": false - }, - { - "name": "7455_v3.3", - "typename": "", - "static": false - }, - { - "name": "mpc8540_v20", - "typename": "", - "static": false - }, - { - "name": "405d2", - "typename": "", - "static": false - }, - { - "name": "mpc8560_v21", - "typename": "", - "static": false - }, - { - "name": "mpc8343", - "typename": "", - "static": false - }, - { - "name": "mpc8548_v20", - "typename": "", - "static": false - }, - { - "name": "mpc8347t", - "typename": "", - "static": false - }, - { - "name": "755_v1.0", - "typename": "", - "static": false - }, - { - "name": "603e_v1.3", - "typename": "", - "static": false - }, - { - "name": "host", - "typename": "", - "static": false - }, - { - "name": "mpc8543e_v10", - "typename": "", - "static": false - }, - { - "name": "mpc8347eap", - "typename": "", - "static": false - }, - { - "name": "mpc8548e_v11", - "typename": "", - "static": false - }, - { - "name": "mpc8543_v20", - "typename": "", - "static": false - }, - { - "name": "401d2", - "typename": "", - "static": false - }, - { - "name": "power8_v2.0", - "typename": "", - "static": false - }, - { - "name": "740_v3.1", - "typename": "", - "static": false - }, - { - "name": "e200z5", - "typename": "", - "static": false - }, - { - "name": "405cra", - "typename": "", - "static": false - }, - { - "name": "7400_v2.0", - "typename": "", - "static": false - }, - { - "name": "750cxe_v2.3", - "typename": "", - "static": false - }, - { - "name": "745_v2.7", - "typename": "", - "static": false - }, - { - "name": "mpc8560_v10", - "typename": "", - "static": false - }, - { - "name": "e5500", - "typename": "", - "static": false - }, - { - "name": "mpc8544_v11", - "typename": "", - "static": false - }, - { - "name": "7448_v1.0", - "typename": "", - "static": false - }, - { - "name": "401e2", - "typename": "", - "static": false - }, - { - "name": "740_v2.1", - "typename": "", - "static": false - }, - { - "name": "745_v2.2", - "typename": "", - "static": false - }, - { - "name": "7400_v1.0", - "typename": "", - "static": false - }, - { - "name": "7410_v1.2", - "typename": "", - "static": false - }, - { - "name": "x2vp4", - "typename": "", - "static": false - }, - { - "name": "mpc8347ap", - "typename": "", - "static": false - }, - { - "name": "mpc8533_v11", - "typename": "", - "static": false - }, - { - "name": "mpc5200b_v21", - "typename": "", - "static": false - }, - { - "name": "750fx_v2.3", - "typename": "", - "static": false - }, - { - "name": "601_v2", - "typename": "", - "static": false - }, - { - "name": "g2legp3", - "typename": "", - "static": false - }, - { - "name": "604e_v1.0", - "typename": "", - "static": false - }, - { - "name": "750cx_v2.1", - "typename": "", - "static": false - }, - { - "name": "mpc8610", - "typename": "", - "static": false - }, - { - "name": "g2h4", - "typename": "", - "static": false - }, - { - "name": "750l_v3.0", - "typename": "", - "static": false - }, - { - "name": "mpc8377e", - "typename": "", - "static": false - }, - { - "name": "e300c4", - "typename": "", - "static": false - }, - { - "name": "mpc5200_v12", - "typename": "", - "static": false - }, - { - "name": "7448_v2.0", - "typename": "", - "static": false - }, - { - "name": "7450_v2.1", - "typename": "", - "static": false - }, - { - "name": "750cxe_v3.1b", - "typename": "", - "static": false - }, - { - "name": "g2", - "typename": "", - "static": false - }, - { - "name": "7400_v2.9", - "typename": "", - "static": false - }, - { - "name": "405gpd", - "typename": "", - "static": false - }, - { - "name": "603", - "typename": "", - "static": false - }, - { - "name": "603e7t", - "typename": "", - "static": false - }, - { - "name": "mpc8555_v11", - "typename": "", - "static": false - }, - { - "name": "750gx_v1.0", - "typename": "", - "static": false - }, - { - "name": "mpc8541_v10", - "typename": "", - "static": false - }, - { - "name": "mpc8543e_v20", - "typename": "", - "static": false - }, - { - "name": "750fl", - "typename": "", - "static": false - }, - { - "name": "750l_v2.0", - "typename": "", - "static": false - }, - { - "name": "stb04", - "typename": "", - "static": false - }, - { - "name": "mpc8548e_v21", - "typename": "", - "static": false - }, - { - "name": "x2vp20", - "typename": "", - "static": false - }, - { - "name": "405ez", - "typename": "", - "static": false - }, - { - "name": "e600", - "typename": "", - "static": false - }, - { - "name": "7450_v1.1", - "typename": "", - "static": false - }, - { - "name": "755_v2.4", - "typename": "", - "static": false - }, - { - "name": "mpc8379", - "typename": "", - "static": false - }, - { - "name": "7445_v1.0", - "typename": "", - "static": false - }, - { - "name": "7447_v1.1", - "typename": "", - "static": false - }, - { - "name": "603e_v2.2", - "typename": "", - "static": false - }, - { - "name": "603e_v4", - "typename": "", - "static": false - }, - { - "name": "g2legp", - "typename": "", - "static": false - }, - { - "name": "7455_v3.2", - "typename": "", - "static": false - }, - { - "name": "740_v2.0", - "typename": "", - "static": false - }, - { - "name": "mpc8560_v20", - "typename": "", - "static": false - }, - { - "name": "440-xilinx", - "typename": "", - "static": false - }, - { - "name": "401f2", - "typename": "", - "static": false - }, - { - "name": "mpc8533_v10", - "typename": "", - "static": false - }, - { - "name": "405gpr", - "typename": "", - "static": false - }, - { - "name": "mpc8349a", - "typename": "", - "static": false - }, - { - "name": "stb25", - "typename": "", - "static": false - }, - { - "name": "603e_v1.2", - "typename": "", - "static": false - }, - { - "name": "mpc5200b_v20", - "typename": "", - "static": false - }, - { - "name": "750fx_v2.2", - "typename": "", - "static": false - }, - { - "name": "mpc8347eat", - "typename": "", - "static": false - }, - { - "name": "740_v1.0", - "typename": "", - "static": false - }, - { - "name": "601_v1", - "typename": "", - "static": false - }, - { - "name": "745_v1.1", - "typename": "", - "static": false - }, - { - "name": "750cx_v2.0", - "typename": "", - "static": false - }, - { - "name": "mpc8548e_v10", - "typename": "", - "static": false - }, - { - "name": "7447a_v1.2", - "typename": "", - "static": false - }, - { - "name": "403gc", - "typename": "", - "static": false - }, - { - "name": "e300c3", - "typename": "", - "static": false - }, - { - "name": "mpc5200_v11", - "typename": "", - "static": false - }, - { - "name": "7441_v2.1", - "typename": "", - "static": false - }, - { - "name": "740_v3.0", - "typename": "", - "static": false - }, - { - "name": "mpc8545e_v21", - "typename": "", - "static": false - }, - { - "name": "602", - "typename": "", - "static": false - }, - { - "name": "mpc8378e", - "typename": "", - "static": false - }, - { - "name": "mpc8343a", - "typename": "", - "static": false - }, - { - "name": "460exb", - "typename": "", - "static": false - }, - { - "name": "mpc8555_v10", - "typename": "", - "static": false - }, - { - "name": "mpc8568", - "typename": "", - "static": false - }, - { - "name": "7457a_v1.2", - "typename": "", - "static": false - }, - { - "name": "750cx_v1.0", - "typename": "", - "static": false - }, - { - "name": "750cxe_v2.2", - "typename": "", - "static": false - }, - { - "name": "604e_v2.4", - "typename": "", - "static": false - }, - { - "name": "755_v2.8", - "typename": "", - "static": false - }, - { - "name": "405lp", - "typename": "", - "static": false - }, - { - "name": "745_v2.6", - "typename": "", - "static": false - }, - { - "name": "stb03", - "typename": "", - "static": false - }, - { - "name": "405ep", - "typename": "", - "static": false - }, - { - "name": "mpc8544_v10", - "typename": "", - "static": false - }, - { - "name": "mpc8347at", - "typename": "", - "static": false - }, - { - "name": "750_v2.2", - "typename": "", - "static": false - }, - { - "name": "7450_v1.0", - "typename": "", - "static": false - }, - { - "name": "755_v2.3", - "typename": "", - "static": false - }, - { - "name": "7410_v1.1", - "typename": "", - "static": false - }, - { - "name": "745_v2.1", - "typename": "", - "static": false - }, - { - "name": "750gl", - "typename": "", - "static": false - }, - { - "name": "e6500", - "typename": "", - "static": false - }, - { - "name": "750p", - "typename": "", - "static": false - }, - { - "name": "7445_v3.4", - "typename": "", - "static": false - }, - { - "name": "440epb", - "typename": "", - "static": false - }, - { - "name": "npe4gs3", - "typename": "", - "static": false - }, - { - "name": "603e_v3", - "typename": "", - "static": false - }, - { - "name": "mpc8349e", - "typename": "", - "static": false - }, - { - "name": "970_v2.2", - "typename": "", - "static": false - }, - { - "name": "g2lels", - "typename": "", - "static": false - }, - { - "name": "g2hip4", - "typename": "", - "static": false - }, - { - "name": "740p", - "typename": "", - "static": false - }, - { - "name": "mpc8567e", - "typename": "", - "static": false - }, - { - "name": "mpc8533e_v11", - "typename": "", - "static": false - }, - { - "name": "7451_v2.3", - "typename": "", - "static": false - }, - { - "name": "603e_v1.1", - "typename": "", - "static": false - }, - { - "name": "401g2", - "typename": "", - "static": false - }, - { - "name": "7400_v2.8", - "typename": "", - "static": false - }, - { - "name": "7455_v2.1", - "typename": "", - "static": false - }, - { - "name": "405gpc", - "typename": "", - "static": false - }, - { - "name": "power7+_v2.1", - "typename": "", - "static": false - }, - { - "name": "mpc8544e_v11", - "typename": "", - "static": false - }, - { - "name": "7450_v2.0", - "typename": "", - "static": false - }, - { - "name": "970mp_v1.1", - "typename": "", - "static": false - }, - { - "name": "603e7v2", - "typename": "", - "static": false - }, - { - "name": "604r", - "typename": "", - "static": false - }, - { - "name": "e500v2_v22", - "typename": "", - "static": false - }, - { - "name": "mpc8548e_v20", - "typename": "", - "static": false - }, - { - "name": "mpc8545e_v20", - "typename": "", - "static": false - }, - { - "name": "mpc8378", - "typename": "", - "static": false - }, - { - "name": "mpc8567", - "typename": "", - "static": false - }, - { - "name": "7457_v1.2", - "typename": "", - "static": false - }, - { - "name": "7447_v1.0", - "typename": "", - "static": false - }, - { - "name": "970fx_v3.1", - "typename": "", - "static": false - }, - { - "name": "745_v2.5", - "typename": "", - "static": false - }, - { - "name": "mpc8379e", - "typename": "", - "static": false - }, - { - "name": "mpc8641", - "typename": "", - "static": false - }, - { - "name": "750cxe_v2.4b", - "typename": "", - "static": false - }, - { - "name": "7410_v1.0", - "typename": "", - "static": false - }, - { - "name": "mpc603", - "typename": "", - "static": false - }, - { - "name": "603e_v4.1", - "typename": "", - "static": false - }, - { - "name": "7445_v3.3", - "typename": "", - "static": false - }, - { - "name": "440epa", - "typename": "", - "static": false - }, - { - "name": "970fx_v2.1", - "typename": "", - "static": false - }, - { - "name": "iop480", - "typename": "", - "static": false - }, - { - "name": "750fx_v2.1", - "typename": "", - "static": false - }, - { - "name": "601_v0", - "typename": "", - "static": false - }, - { - "name": "g2legp1", - "typename": "", - "static": false - }, - { - "name": "745_v1.0", - "typename": "", - "static": false - }, - { - "name": "750cl_v2.0", - "typename": "", - "static": false - }, - { - "name": "750cxr", - "typename": "", - "static": false - }, - { - "name": "401", - "typename": "", - "static": false - }, - { - "name": "mpc8541e_v11", - "typename": "", - "static": false - }, - { - "name": "750cxe_v3.1", - "typename": "", - "static": false - }, - { - "name": "mpc8555e_v11", - "typename": "", - "static": false - }, - { - "name": "power5+_v2.1", - "typename": "", - "static": false - }, - { - "name": "7447a_v1.1", - "typename": "", - "static": false - }, - { - "name": "403gb", - "typename": "", - "static": false - }, - { - "name": "e300c2", - "typename": "", - "static": false - }, - { - "name": "npe405h2", - "typename": "", - "static": false - }, - { - "name": "mpc8343e", - "typename": "", - "static": false - }, - { - "name": "mpc8533e_v10", - "typename": "", - "static": false - }, - { - "name": "mpc5200_v10", - "typename": "", - "static": false - }, - { - "name": "750_v3.1", - "typename": "", - "static": false - }, - { - "name": "power8e_v2.1", - "typename": "", - "static": false - }, - { - "name": "mpc8568e", - "typename": "", - "static": false - } - ], "id": "libvirt-38" } { "return": [ + { + "name": "default", + "typename": "604-powerpc64-cpu", + "static": false + }, + { + "name": "ppc", + "typename": "604-powerpc64-cpu", + "static": false + }, + { + "name": "ppc32", + "typename": "604-powerpc64-cpu", + "static": false + }, + { + "name": "ppc64", + "typename": "970fx_v3.1-powerpc64-cpu", + "static": false + }, + { + "name": "970mp", + "typename": "970mp_v1.1-powerpc64-cpu", + "static": false + }, + { + "name": "970fx", + "typename": "970fx_v3.1-powerpc64-cpu", + "static": false + }, + { + "name": "970", + "typename": "970_v2.2-powerpc64-cpu", + "static": false + }, + { + "name": "power9", + "typename": "power9_v2.0-powerpc64-cpu", + "static": false + }, + { + "name": "power8nvl", + "typename": "power8nvl_v1.0-powerpc64-cpu", + "static": false + }, + { + "name": "power8", + "typename": "host-powerpc64-cpu", + "static": false + }, + { + "name": "power8e", + "typename": "power8e_v2.1-powerpc64-cpu", + "static": false + }, + { + "name": "power7+", + "typename": "power7+_v2.1-powerpc64-cpu", + "static": false + }, + { + "name": "power7", + "typename": "power7_v2.3-powerpc64-cpu", + "static": false + }, + { + "name": "power5gs", + "typename": "power5+_v2.1-powerpc64-cpu", + "static": false + }, + { + "name": "power5+", + "typename": "power5+_v2.1-powerpc64-cpu", + "static": false + }, + { + "name": "apollo7pm", + "typename": "7457a_v1.0-powerpc64-cpu", + "static": false + }, + { + "name": "7457a", + "typename": "7457a_v1.2-powerpc64-cpu", + "static": false + }, + { + "name": "7447a", + "typename": "7447a_v1.2-powerpc64-cpu", + "static": false + }, + { + "name": "apollo7", + "typename": "7457_v1.2-powerpc64-cpu", + "static": false + }, + { + "name": "7457", + "typename": "7457_v1.2-powerpc64-cpu", + "static": false + }, + { + "name": "7447", + "typename": "7447_v1.1-powerpc64-cpu", + "static": false + }, + { + "name": "apollo6", + "typename": "7455_v3.2-powerpc64-cpu", + "static": false + }, + { + "name": "7455", + "typename": "7455_v3.2-powerpc64-cpu", + "static": false + }, + { + "name": "7445", + "typename": "7445_v3.2-powerpc64-cpu", + "static": false + }, + { + "name": "7451", + "typename": "7451_v2.3-powerpc64-cpu", + "static": false + }, + { + "name": "7441", + "typename": "7441_v2.3-powerpc64-cpu", + "static": false + }, + { + "name": "vger", + "typename": "7450_v2.1-powerpc64-cpu", + "static": false + }, + { + "name": "7450", + "typename": "7450_v2.1-powerpc64-cpu", + "static": false + }, + { + "name": "7448", + "typename": "7448_v2.1-powerpc64-cpu", + "static": false + }, + { + "name": "nitro", + "typename": "7410_v1.4-powerpc64-cpu", + "static": false + }, + { + "name": "7410", + "typename": "7410_v1.4-powerpc64-cpu", + "static": false + }, + { + "name": "g4", + "typename": "7400_v2.9-powerpc64-cpu", + "static": false + }, + { + "name": "max", + "typename": "7400_v2.9-powerpc64-cpu", + "static": false + }, + { + "name": "7400", + "typename": "7400_v2.9-powerpc64-cpu", + "static": false + }, + { + "name": "goldfinger", + "typename": "755_v2.8-powerpc64-cpu", + "static": false + }, + { + "name": "755", + "typename": "755_v2.8-powerpc64-cpu", + "static": false + }, + { + "name": "745", + "typename": "745_v2.8-powerpc64-cpu", + "static": false + }, + { + "name": "lonestar", + "typename": "750l_v3.2-powerpc64-cpu", + "static": false + }, + { + "name": "750l", + "typename": "750l_v3.2-powerpc64-cpu", + "static": false + }, + { + "name": "750gx", + "typename": "750gx_v1.2-powerpc64-cpu", + "static": false + }, + { + "name": "750fx", + "typename": "750fx_v2.3-powerpc64-cpu", + "static": false + }, + { + "name": "750cxe", + "typename": "750cxe_v3.1b-powerpc64-cpu", + "static": false + }, + { + "name": "750cx", + "typename": "750cx_v2.2-powerpc64-cpu", + "static": false + }, + { + "name": "750cl", + "typename": "750cl_v2.0-powerpc64-cpu", + "static": false + }, + { + "name": "conan/doyle", + "typename": "750p-powerpc64-cpu", + "static": false + }, + { + "name": "g3", + "typename": "750_v3.1-powerpc64-cpu", + "static": false + }, + { + "name": "typhoon", + "typename": "750_v3.1-powerpc64-cpu", + "static": false + }, + { + "name": "750", + "typename": "750_v3.1-powerpc64-cpu", + "static": false + }, + { + "name": "arthur", + "typename": "740_v3.1-powerpc64-cpu", + "static": false + }, + { + "name": "740", + "typename": "740_v3.1-powerpc64-cpu", + "static": false + }, + { + "name": "mach5", + "typename": "604r-powerpc64-cpu", + "static": false + }, + { + "name": "sirocco", + "typename": "604e_v2.4-powerpc64-cpu", + "static": false + }, + { + "name": "604e", + "typename": "604e_v2.4-powerpc64-cpu", + "static": false + }, + { + "name": "goldeneye", + "typename": "603e7t-powerpc64-cpu", + "static": false + }, + { + "name": "603r", + "typename": "603e7t-powerpc64-cpu", + "static": false + }, + { + "name": "vaillant", + "typename": "603e7v-powerpc64-cpu", + "static": false + }, + { + "name": "stretch", + "typename": "603e_v4.1-powerpc64-cpu", + "static": false + }, + { + "name": "603e", + "typename": "603e_v4.1-powerpc64-cpu", + "static": false + }, + { + "name": "vanilla", + "typename": "603-powerpc64-cpu", + "static": false + }, + { + "name": "601v", + "typename": "601_v2-powerpc64-cpu", + "static": false + }, + { + "name": "601", + "typename": "601_v2-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8560", + "typename": "mpc8560_v21-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8555e", + "typename": "mpc8555e_v11-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8555", + "typename": "mpc8555_v11-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8548e", + "typename": "mpc8548e_v21-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8548", + "typename": "mpc8548_v21-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8547e", + "typename": "mpc8547e_v21-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8545e", + "typename": "mpc8545e_v21-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8545", + "typename": "mpc8545_v21-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8544e", + "typename": "mpc8544e_v11-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8544", + "typename": "mpc8544_v11-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8543e", + "typename": "mpc8543e_v21-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8543", + "typename": "mpc8543_v21-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8541e", + "typename": "mpc8541e_v11-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8541", + "typename": "mpc8541_v11-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8540", + "typename": "mpc8540_v21-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8533e", + "typename": "mpc8533e_v11-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8533", + "typename": "mpc8533_v11-powerpc64-cpu", + "static": false + }, + { + "name": "e500v2", + "typename": "e500v2_v22-powerpc64-cpu", + "static": false + }, + { + "name": "e500v1", + "typename": "e500_v20-powerpc64-cpu", + "static": false + }, + { + "name": "e500", + "typename": "e500v2_v22-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8347ea", + "typename": "mpc8347eat-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8347e", + "typename": "mpc8347et-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8347a", + "typename": "mpc8347at-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8347", + "typename": "mpc8347t-powerpc64-cpu", + "static": false + }, + { + "name": "e300", + "typename": "e300c3-powerpc64-cpu", + "static": false + }, + { + "name": "e200", + "typename": "e200z6-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8280", + "typename": "g2legp3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8275", + "typename": "g2legp3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8272", + "typename": "g2legp3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8271", + "typename": "g2legp3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8270", + "typename": "g2legp3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8266_hip4", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8266_hip3", + "typename": "g2hip3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8266", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8265_hip4", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8265_hip3", + "typename": "g2hip3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8265", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8264_hip4", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8264_hip3", + "typename": "g2hip3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8264", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8260_hip4", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8260_hip3", + "typename": "g2hip3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8260", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8255_hip4", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8255_hip3", + "typename": "g2hip3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8255", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8250_hip4", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8250_hip3", + "typename": "g2hip3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8250", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8248", + "typename": "g2legp3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8247", + "typename": "g2legp3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8245", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8241", + "typename": "g2hip4-powerpc64-cpu", + "static": false + }, + { + "name": "powerquicc-ii", + "typename": "g2legp3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc82xx", + "typename": "g2legp3-powerpc64-cpu", + "static": false + }, + { + "name": "mpc5200b", + "typename": "mpc5200b_v21-powerpc64-cpu", + "static": false + }, + { + "name": "mpc5200", + "typename": "mpc5200_v12-powerpc64-cpu", + "static": false + }, + { + "name": "mpc52xx", + "typename": "mpc5200_v12-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8240", + "typename": "603-powerpc64-cpu", + "static": false + }, + { + "name": "460ex", + "typename": "460exb-powerpc64-cpu", + "static": false + }, + { + "name": "440ep", + "typename": "440epb-powerpc64-cpu", + "static": false + }, + { + "name": "x2vp50", + "typename": "x2vp20-powerpc64-cpu", + "static": false + }, + { + "name": "x2vp7", + "typename": "x2vp4-powerpc64-cpu", + "static": false + }, + { + "name": "405gpe", + "typename": "405crc-powerpc64-cpu", + "static": false + }, + { + "name": "405gp", + "typename": "405gpd-powerpc64-cpu", + "static": false + }, + { + "name": "405cr", + "typename": "405crc-powerpc64-cpu", + "static": false + }, + { + "name": "405", + "typename": "405d4-powerpc64-cpu", + "static": false + }, + { + "name": "403", + "typename": "403gc-powerpc64-cpu", + "static": false + }, + { + "name": "mpc8547e_v21", + "typename": "", + "static": false + }, + { + "name": "750cl_v1.0", + "typename": "", + "static": false + }, + { + "name": "7457a_v1.1", + "typename": "", + "static": false + }, + { + "name": "g2gp", + "typename": "", + "static": false + }, + { + "name": "750cxe_v2.1", + "typename": "", + "static": false + }, + { + "name": "755_v2.7", + "typename": "", + "static": false + }, + { + "name": "750_v2.1", + "typename": "", + "static": false + }, + { + "name": "755_v2.2", + "typename": "", + "static": false + }, + { + "name": "745_v2.0", + "typename": "", + "static": false + }, + { + "name": "mpc8377", + "typename": "", + "static": false + }, + { + "name": "7455_v1.0", + "typename": "", + "static": false + }, + { + "name": "mpc8545_v21", + "typename": "", + "static": false + }, + { + "name": "mpc8548_v11", + "typename": "", + "static": false + }, + { + "name": "405d4", + "typename": "", + "static": false + }, + { + "name": "g2le", + "typename": "", + "static": false + }, + { + "name": "g2hip3", + "typename": "", + "static": false + }, + { + "name": "750e", + "typename": "", + "static": false + }, + { + "name": "mpc8572", + "typename": "", + "static": false + }, + { + "name": "970fx_v2.0", + "typename": "", + "static": false + }, + { + "name": "750fx_v2.0", + "typename": "", + "static": false + }, + { + "name": "603p", + "typename": "", + "static": false + }, + { + "name": "405gpb", + "typename": "", + "static": false + }, + { + "name": "7400_v2.7", + "typename": "", + "static": false + }, + { + "name": "mpc8544e_v10", + "typename": "", + "static": false + }, + { + "name": "e500v2_v10", + "typename": "", + "static": false + }, + { + "name": "e500mc", + "typename": "", + "static": false + }, + { + "name": "603e7v1", + "typename": "", + "static": false + }, + { + "name": "970mp_v1.0", + "typename": "", + "static": false + }, + { + "name": "740e", + "typename": "", + "static": false + }, + { + "name": "405crc", + "typename": "", + "static": false + }, + { + "name": "403ga", + "typename": "", + "static": false + }, + { + "name": "7447a_v1.0", + "typename": "", + "static": false + }, + { + "name": "7400_v2.2", + "typename": "", + "static": false + }, + { + "name": "e300c1", + "typename": "", + "static": false + }, + { + "name": "mpc8572e", + "typename": "", + "static": false + }, + { + "name": "e500v2_v21", + "typename": "", + "static": false + }, + { + "name": "970fx_v1.0", + "typename": "", + "static": false + }, + { + "name": "750gx_v1.2", + "typename": "", + "static": false + }, + { + "name": "750fx_v1.0", + "typename": "", + "static": false + }, + { + "name": "7457_v1.1", + "typename": "", + "static": false + }, + { + "name": "970fx_v3.0", + "typename": "", + "static": false + }, + { + "name": "604e_v2.2", + "typename": "", + "static": false + }, + { + "name": "755_v2.6", + "typename": "", + "static": false + }, + { + "name": "401a1", + "typename": "", + "static": false + }, + { + "name": "power9_v1.0", + "typename": "", + "static": false + }, + { + "name": "npe405h", + "typename": "", + "static": false + }, + { + "name": "7410_v1.4", + "typename": "", + "static": false + }, + { + "name": "g2ls", + "typename": "", + "static": false + }, + { + "name": "750_v2.0", + "typename": "", + "static": false + }, + { + "name": "401b2", + "typename": "", + "static": false + }, + { + "name": "mpc8349", + "typename": "", + "static": false + }, + { + "name": "mpc8347ep", + "typename": "", + "static": false + }, + { + "name": "7445_v3.2", + "typename": "", + "static": false + }, + { + "name": "mpc8540_v21", + "typename": "", + "static": false + }, + { + "name": "mpc8543_v11", + "typename": "", + "static": false + }, + { + "name": "403gcx", + "typename": "", + "static": false + }, + { + "name": "745_v2.4", + "typename": "", + "static": false + }, + { + "name": "mpc8548_v21", + "typename": "", + "static": false + }, + { + "name": "750l_v3.2", + "typename": "", + "static": false + }, + { + "name": "750_v1.0", + "typename": "", + "static": false + }, + { + "name": "755_v1.1", + "typename": "", + "static": false + }, + { + "name": "e500_v10", + "typename": "", + "static": false + }, + { + "name": "750cxe_v3.0", + "typename": "", + "static": false + }, + { + "name": "mpc8541e_v10", + "typename": "", + "static": false + }, + { + "name": "mpc8347p", + "typename": "", + "static": false + }, + { + "name": "mpc8555e_v10", + "typename": "", + "static": false + }, + { + "name": "power9_v2.0", + "typename": "", + "static": false + }, + { + "name": "power7_v2.3", + "typename": "", + "static": false + }, + { + "name": "603e7v", + "typename": "", + "static": false + }, + { + "name": "mpc8543e_v11", + "typename": "", + "static": false + }, + { + "name": "750_v3.0", + "typename": "", + "static": false + }, + { + "name": "7400_v2.6", + "typename": "", + "static": false + }, + { + "name": "405gpa", + "typename": "", + "static": false + }, + { + "name": "440epx", + "typename": "", + "static": false + }, + { + "name": "750l_v2.2", + "typename": "", + "static": false + }, + { + "name": "e200z6", + "typename": "", + "static": false + }, + { + "name": "mpc8547e_v20", + "typename": "", + "static": false + }, + { + "name": "7457a_v1.0", + "typename": "", + "static": false + }, + { + "name": "mpc8349ea", + "typename": "", + "static": false + }, + { + "name": "e500v2_v20", + "typename": "", + "static": false + }, + { + "name": "power8nvl_v1.0", + "typename": "", + "static": false + }, + { + "name": "mpc8540_v10", + "typename": "", + "static": false + }, + { + "name": "755_v2.1", + "typename": "", + "static": false + }, + { + "name": "745_v2.8", + "typename": "", + "static": false + }, + { + "name": "npe405l", + "typename": "", + "static": false + }, + { + "name": "mpc8343ea", + "typename": "", + "static": false + }, + { + "name": "mpc8545_v20", + "typename": "", + "static": false + }, + { + "name": "mpc8548_v10", + "typename": "", + "static": false + }, + { + "name": "7448_v1.1", + "typename": "", + "static": false + }, + { + "name": "7455_v3.4", + "typename": "", + "static": false + }, + { + "name": "740_v2.2", + "typename": "", + "static": false + }, + { + "name": "7400_v1.1", + "typename": "", + "static": false + }, + { + "name": "mpc8347et", + "typename": "", + "static": false + }, + { + "name": "7441_v2.10", + "typename": "", + "static": false + }, + { + "name": "603e_v1.4", + "typename": "", + "static": false + }, + { + "name": "mpc8543_v10", + "typename": "", + "static": false + }, + { + "name": "401c2", + "typename": "", + "static": false + }, + { + "name": "7451_v2.10", + "typename": "", + "static": false + }, + { + "name": "750cx_v2.2", + "typename": "", + "static": false + }, + { + "name": "mpc8543_v21", + "typename": "", + "static": false + }, + { + "name": "603e7", + "typename": "", + "static": false + }, + { + "name": "7448_v2.1", + "typename": "", + "static": false + }, + { + "name": "7441_v2.3", + "typename": "", + "static": false + }, + { + "name": "405crb", + "typename": "", + "static": false + }, + { + "name": "604", + "typename": "", + "static": false + }, + { + "name": "7400_v2.1", + "typename": "", + "static": false + }, + { + "name": "440-xilinx-w-dfpu", + "typename": "", + "static": false + }, + { + "name": "7445_v2.1", + "typename": "", + "static": false + }, + { + "name": "cobra", + "typename": "", + "static": false + }, + { + "name": "e500_v20", + "typename": "", + "static": false + }, + { + "name": "mpc8541_v11", + "typename": "", + "static": false + }, + { + "name": "750gx_v1.1", + "typename": "", + "static": false + }, + { + "name": "750cxe_v2.4", + "typename": "", + "static": false + }, + { + "name": "mpc8641d", + "typename": "", + "static": false + }, + { + "name": "mpc8543e_v21", + "typename": "", + "static": false + }, + { + "name": "750l_v2.1", + "typename": "", + "static": false + }, + { + "name": "7457_v1.0", + "typename": "", + "static": false + }, + { + "name": "7450_v1.2", + "typename": "", + "static": false + }, + { + "name": "755_v2.5", + "typename": "", + "static": false + }, + { + "name": "7410_v1.3", + "typename": "", + "static": false + }, + { + "name": "745_v2.3", + "typename": "", + "static": false + }, + { + "name": "755_v2.0", + "typename": "", + "static": false + }, + { + "name": "e500v2_v30", + "typename": "", + "static": false + }, + { + "name": "7455_v3.3", + "typename": "", + "static": false + }, + { + "name": "mpc8540_v20", + "typename": "", + "static": false + }, + { + "name": "405d2", + "typename": "", + "static": false + }, + { + "name": "mpc8560_v21", + "typename": "", + "static": false + }, + { + "name": "mpc8343", + "typename": "", + "static": false + }, + { + "name": "mpc8548_v20", + "typename": "", + "static": false + }, + { + "name": "mpc8347t", + "typename": "", + "static": false + }, + { + "name": "755_v1.0", + "typename": "", + "static": false + }, + { + "name": "603e_v1.3", + "typename": "", + "static": false + }, + { + "name": "host", + "typename": "", + "static": false + }, + { + "name": "mpc8543e_v10", + "typename": "", + "static": false + }, + { + "name": "mpc8347eap", + "typename": "", + "static": false + }, + { + "name": "mpc8548e_v11", + "typename": "", + "static": false + }, + { + "name": "mpc8543_v20", + "typename": "", + "static": false + }, + { + "name": "401d2", + "typename": "", + "static": false + }, + { + "name": "power8_v2.0", + "typename": "", + "static": false + }, + { + "name": "740_v3.1", + "typename": "", + "static": false + }, + { + "name": "e200z5", + "typename": "", + "static": false + }, + { + "name": "405cra", + "typename": "", + "static": false + }, + { + "name": "7400_v2.0", + "typename": "", + "static": false + }, + { + "name": "750cxe_v2.3", + "typename": "", + "static": false + }, + { + "name": "745_v2.7", + "typename": "", + "static": false + }, + { + "name": "mpc8560_v10", + "typename": "", + "static": false + }, + { + "name": "e5500", + "typename": "", + "static": false + }, + { + "name": "mpc8544_v11", + "typename": "", + "static": false + }, + { + "name": "7448_v1.0", + "typename": "", + "static": false + }, + { + "name": "401e2", + "typename": "", + "static": false + }, + { + "name": "740_v2.1", + "typename": "", + "static": false + }, + { + "name": "745_v2.2", + "typename": "", + "static": false + }, + { + "name": "7400_v1.0", + "typename": "", + "static": false + }, + { + "name": "7410_v1.2", + "typename": "", + "static": false + }, + { + "name": "x2vp4", + "typename": "", + "static": false + }, + { + "name": "mpc8347ap", + "typename": "", + "static": false + }, + { + "name": "mpc8533_v11", + "typename": "", + "static": false + }, + { + "name": "mpc5200b_v21", + "typename": "", + "static": false + }, + { + "name": "750fx_v2.3", + "typename": "", + "static": false + }, + { + "name": "601_v2", + "typename": "", + "static": false + }, + { + "name": "g2legp3", + "typename": "", + "static": false + }, + { + "name": "604e_v1.0", + "typename": "", + "static": false + }, + { + "name": "750cx_v2.1", + "typename": "", + "static": false + }, + { + "name": "mpc8610", + "typename": "", + "static": false + }, + { + "name": "g2h4", + "typename": "", + "static": false + }, + { + "name": "750l_v3.0", + "typename": "", + "static": false + }, + { + "name": "mpc8377e", + "typename": "", + "static": false + }, + { + "name": "e300c4", + "typename": "", + "static": false + }, + { + "name": "mpc5200_v12", + "typename": "", + "static": false + }, + { + "name": "7448_v2.0", + "typename": "", + "static": false + }, + { + "name": "7450_v2.1", + "typename": "", + "static": false + }, + { + "name": "750cxe_v3.1b", + "typename": "", + "static": false + }, + { + "name": "g2", + "typename": "", + "static": false + }, + { + "name": "7400_v2.9", + "typename": "", + "static": false + }, + { + "name": "405gpd", + "typename": "", + "static": false + }, + { + "name": "603", + "typename": "", + "static": false + }, + { + "name": "603e7t", + "typename": "", + "static": false + }, + { + "name": "mpc8555_v11", + "typename": "", + "static": false + }, + { + "name": "750gx_v1.0", + "typename": "", + "static": false + }, + { + "name": "mpc8541_v10", + "typename": "", + "static": false + }, + { + "name": "mpc8543e_v20", + "typename": "", + "static": false + }, + { + "name": "750fl", + "typename": "", + "static": false + }, + { + "name": "750l_v2.0", + "typename": "", + "static": false + }, + { + "name": "stb04", + "typename": "", + "static": false + }, + { + "name": "mpc8548e_v21", + "typename": "", + "static": false + }, + { + "name": "x2vp20", + "typename": "", + "static": false + }, + { + "name": "405ez", + "typename": "", + "static": false + }, + { + "name": "e600", + "typename": "", + "static": false + }, + { + "name": "7450_v1.1", + "typename": "", + "static": false + }, + { + "name": "755_v2.4", + "typename": "", + "static": false + }, + { + "name": "mpc8379", + "typename": "", + "static": false + }, + { + "name": "7445_v1.0", + "typename": "", + "static": false + }, + { + "name": "7447_v1.1", + "typename": "", + "static": false + }, + { + "name": "603e_v2.2", + "typename": "", + "static": false + }, + { + "name": "603e_v4", + "typename": "", + "static": false + }, + { + "name": "g2legp", + "typename": "", + "static": false + }, + { + "name": "7455_v3.2", + "typename": "", + "static": false + }, + { + "name": "740_v2.0", + "typename": "", + "static": false + }, + { + "name": "mpc8560_v20", + "typename": "", + "static": false + }, + { + "name": "440-xilinx", + "typename": "", + "static": false + }, + { + "name": "401f2", + "typename": "", + "static": false + }, + { + "name": "mpc8533_v10", + "typename": "", + "static": false + }, + { + "name": "405gpr", + "typename": "", + "static": false + }, + { + "name": "mpc8349a", + "typename": "", + "static": false + }, + { + "name": "stb25", + "typename": "", + "static": false + }, + { + "name": "603e_v1.2", + "typename": "", + "static": false + }, + { + "name": "mpc5200b_v20", + "typename": "", + "static": false + }, + { + "name": "750fx_v2.2", + "typename": "", + "static": false + }, + { + "name": "mpc8347eat", + "typename": "", + "static": false + }, + { + "name": "740_v1.0", + "typename": "", + "static": false + }, + { + "name": "601_v1", + "typename": "", + "static": false + }, + { + "name": "745_v1.1", + "typename": "", + "static": false + }, + { + "name": "750cx_v2.0", + "typename": "", + "static": false + }, + { + "name": "mpc8548e_v10", + "typename": "", + "static": false + }, + { + "name": "7447a_v1.2", + "typename": "", + "static": false + }, + { + "name": "403gc", + "typename": "", + "static": false + }, + { + "name": "e300c3", + "typename": "", + "static": false + }, + { + "name": "mpc5200_v11", + "typename": "", + "static": false + }, + { + "name": "7441_v2.1", + "typename": "", + "static": false + }, + { + "name": "740_v3.0", + "typename": "", + "static": false + }, + { + "name": "mpc8545e_v21", + "typename": "", + "static": false + }, + { + "name": "602", + "typename": "", + "static": false + }, + { + "name": "mpc8378e", + "typename": "", + "static": false + }, + { + "name": "mpc8343a", + "typename": "", + "static": false + }, + { + "name": "460exb", + "typename": "", + "static": false + }, + { + "name": "mpc8555_v10", + "typename": "", + "static": false + }, + { + "name": "mpc8568", + "typename": "", + "static": false + }, + { + "name": "7457a_v1.2", + "typename": "", + "static": false + }, + { + "name": "750cx_v1.0", + "typename": "", + "static": false + }, + { + "name": "750cxe_v2.2", + "typename": "", + "static": false + }, + { + "name": "604e_v2.4", + "typename": "", + "static": false + }, + { + "name": "755_v2.8", + "typename": "", + "static": false + }, + { + "name": "405lp", + "typename": "", + "static": false + }, + { + "name": "745_v2.6", + "typename": "", + "static": false + }, + { + "name": "stb03", + "typename": "", + "static": false + }, + { + "name": "405ep", + "typename": "", + "static": false + }, + { + "name": "mpc8544_v10", + "typename": "", + "static": false + }, + { + "name": "mpc8347at", + "typename": "", + "static": false + }, + { + "name": "750_v2.2", + "typename": "", + "static": false + }, + { + "name": "7450_v1.0", + "typename": "", + "static": false + }, + { + "name": "755_v2.3", + "typename": "", + "static": false + }, + { + "name": "7410_v1.1", + "typename": "", + "static": false + }, + { + "name": "745_v2.1", + "typename": "", + "static": false + }, + { + "name": "750gl", + "typename": "", + "static": false + }, + { + "name": "e6500", + "typename": "", + "static": false + }, + { + "name": "750p", + "typename": "", + "static": false + }, + { + "name": "7445_v3.4", + "typename": "", + "static": false + }, + { + "name": "440epb", + "typename": "", + "static": false + }, + { + "name": "npe4gs3", + "typename": "", + "static": false + }, + { + "name": "603e_v3", + "typename": "", + "static": false + }, + { + "name": "mpc8349e", + "typename": "", + "static": false + }, + { + "name": "970_v2.2", + "typename": "", + "static": false + }, + { + "name": "g2lels", + "typename": "", + "static": false + }, + { + "name": "g2hip4", + "typename": "", + "static": false + }, + { + "name": "740p", + "typename": "", + "static": false + }, + { + "name": "mpc8567e", + "typename": "", + "static": false + }, + { + "name": "mpc8533e_v11", + "typename": "", + "static": false + }, + { + "name": "7451_v2.3", + "typename": "", + "static": false + }, + { + "name": "603e_v1.1", + "typename": "", + "static": false + }, + { + "name": "401g2", + "typename": "", + "static": false + }, + { + "name": "7400_v2.8", + "typename": "", + "static": false + }, + { + "name": "7455_v2.1", + "typename": "", + "static": false + }, + { + "name": "405gpc", + "typename": "", + "static": false + }, + { + "name": "power7+_v2.1", + "typename": "", + "static": false + }, + { + "name": "mpc8544e_v11", + "typename": "", + "static": false + }, + { + "name": "7450_v2.0", + "typename": "", + "static": false + }, + { + "name": "970mp_v1.1", + "typename": "", + "static": false + }, + { + "name": "603e7v2", + "typename": "", + "static": false + }, + { + "name": "604r", + "typename": "", + "static": false + }, + { + "name": "e500v2_v22", + "typename": "", + "static": false + }, + { + "name": "mpc8548e_v20", + "typename": "", + "static": false + }, + { + "name": "mpc8545e_v20", + "typename": "", + "static": false + }, + { + "name": "mpc8378", + "typename": "", + "static": false + }, + { + "name": "mpc8567", + "typename": "", + "static": false + }, + { + "name": "7457_v1.2", + "typename": "", + "static": false + }, + { + "name": "7447_v1.0", + "typename": "", + "static": false + }, + { + "name": "970fx_v3.1", + "typename": "", + "static": false + }, + { + "name": "745_v2.5", + "typename": "", + "static": false + }, + { + "name": "mpc8379e", + "typename": "", + "static": false + }, + { + "name": "mpc8641", + "typename": "", + "static": false + }, + { + "name": "750cxe_v2.4b", + "typename": "", + "static": false + }, + { + "name": "7410_v1.0", + "typename": "", + "static": false + }, + { + "name": "mpc603", + "typename": "", + "static": false + }, + { + "name": "603e_v4.1", + "typename": "", + "static": false + }, + { + "name": "7445_v3.3", + "typename": "", + "static": false + }, + { + "name": "440epa", + "typename": "", + "static": false + }, + { + "name": "970fx_v2.1", + "typename": "", + "static": false + }, + { + "name": "iop480", + "typename": "", + "static": false + }, + { + "name": "750fx_v2.1", + "typename": "", + "static": false + }, + { + "name": "601_v0", + "typename": "", + "static": false + }, + { + "name": "g2legp1", + "typename": "", + "static": false + }, + { + "name": "745_v1.0", + "typename": "", + "static": false + }, + { + "name": "750cl_v2.0", + "typename": "", + "static": false + }, + { + "name": "750cxr", + "typename": "", + "static": false + }, + { + "name": "401", + "typename": "", + "static": false + }, + { + "name": "mpc8541e_v11", + "typename": "", + "static": false + }, + { + "name": "750cxe_v3.1", + "typename": "", + "static": false + }, + { + "name": "mpc8555e_v11", + "typename": "", + "static": false + }, + { + "name": "power5+_v2.1", + "typename": "", + "static": false + }, + { + "name": "7447a_v1.1", + "typename": "", + "static": false + }, + { + "name": "403gb", + "typename": "", + "static": false + }, + { + "name": "e300c2", + "typename": "", + "static": false + }, + { + "name": "npe405h2", + "typename": "", + "static": false + }, + { + "name": "mpc8343e", + "typename": "", + "static": false + }, + { + "name": "mpc8533e_v10", + "typename": "", + "static": false + }, + { + "name": "mpc5200_v10", + "typename": "", + "static": false + }, + { + "name": "750_v3.1", + "typename": "", + "static": false + }, + { + "name": "power8e_v2.1", + "typename": "", + "static": false + }, + { + "name": "mpc8568e", + "typename": "", + "static": false + } ], "id": "libvirt-39" } { "return": [ - "emulator" ], "id": "libvirt-40" } +{ + "return": [ + "emulator" + ], + "id": "libvirt-41" +} + { "return": [ { @@ -8822,7 +8876,7 @@ "option": "drive" } ], - "id": "libvirt-41" + "id": "libvirt-42" } { @@ -8884,7 +8938,7 @@ "capability": "dirty-bitmaps" } ], - "id": "libvirt-42" + "id": "libvirt-43" } { @@ -20252,7 +20306,7 @@ "meta-type": "object" } ], - "id": "libvirt-43" + "id": "libvirt-44" } { diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml index 4fb1205162..f3d5d1d54d 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -155,9 +155,10 @@ <flag name='query-cpus-fast'/> <flag name='disk-write-cache'/> <flag name='qom-list-properties'/> + <flag name='memory-backend-file.discard-data'/> <version>2011090</version> <kvmVersion>0</kvmVersion> - <microcodeVersion>419215</microcodeVersion> + <microcodeVersion>419968</microcodeVersion> <package>v2.12.0-rc0</package> <arch>ppc64</arch> <cpu type='kvm' name='default'/> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies index c4e44c6d0f..726a5fb2c8 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies @@ -3614,6 +3614,60 @@ "id": "libvirt-34" } +{ + "return": [ + { + "name": "policy", + "type": "HostMemPolicy" + }, + { + "name": "dump", + "type": "bool" + }, + { + "name": "share", + "type": "bool" + }, + { + "name": "prealloc", + "type": "bool" + }, + { + "name": "size", + "type": "int" + }, + { + "name": "host-nodes", + "type": "int" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "merge", + "type": "bool" + }, + { + "name": "align", + "type": "int" + }, + { + "name": "mem-path", + "type": "string" + }, + { + "name": "discard-data", + "type": "bool" + }, + { + "name": "type", + "type": "string" + } + ], + "id": "libvirt-35" +} + { "return": [ { @@ -3669,7 +3723,7 @@ "alias": "s390-ccw-virtio" } ], - "id": "libvirt-35" + "id": "libvirt-36" } { @@ -6324,22 +6378,22 @@ "migration-safe": true } ], - "id": "libvirt-36" -} - -{ - "return": [ - ], "id": "libvirt-37" } { "return": [ - "emulator" ], "id": "libvirt-38" } +{ + "return": [ + "emulator" + ], + "id": "libvirt-39" +} + { "return": [ { @@ -7493,7 +7547,7 @@ "option": "drive" } ], - "id": "libvirt-39" + "id": "libvirt-40" } { @@ -7555,7 +7609,7 @@ "capability": "dirty-bitmaps" } ], - "id": "libvirt-40" + "id": "libvirt-41" } { @@ -18923,11 +18977,11 @@ "meta-type": "object" } ], - "id": "libvirt-41" + "id": "libvirt-42" } { - "id": "libvirt-42", + "id": "libvirt-43", "error": { "class": "GenericError", "desc": "The CPU definition 'max' is unknown." diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml index cb4f0d0d5b..2f7c881606 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -120,6 +120,7 @@ <flag name='query-cpus-fast'/> <flag name='disk-write-cache'/> <flag name='qom-list-properties'/> + <flag name='memory-backend-file.discard-data'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies index c086e04afd..c40046beef 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies @@ -4605,6 +4605,60 @@ "id": "libvirt-39" } +{ + "return": [ + { + "name": "policy", + "type": "HostMemPolicy" + }, + { + "name": "dump", + "type": "bool" + }, + { + "name": "share", + "type": "bool" + }, + { + "name": "prealloc", + "type": "bool" + }, + { + "name": "size", + "type": "int" + }, + { + "name": "host-nodes", + "type": "int" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "merge", + "type": "bool" + }, + { + "name": "align", + "type": "int" + }, + { + "name": "mem-path", + "type": "string" + }, + { + "name": "discard-data", + "type": "bool" + }, + { + "name": "type", + "type": "string" + } + ], + "id": "libvirt-40" +} + { "return": [ { @@ -4801,7 +4855,7 @@ "cpu-max": 255 } ], - "id": "libvirt-40" + "id": "libvirt-41" } { @@ -5315,7 +5369,7 @@ "migration-safe": true } ], - "id": "libvirt-41" + "id": "libvirt-42" } { @@ -5323,7 +5377,7 @@ "tpm-crb", "tpm-tis" ], - "id": "libvirt-42" + "id": "libvirt-43" } { @@ -5331,7 +5385,7 @@ "passthrough", "emulator" ], - "id": "libvirt-43" + "id": "libvirt-44" } { @@ -6618,7 +6672,7 @@ "option": "drive" } ], - "id": "libvirt-44" + "id": "libvirt-45" } { @@ -6680,7 +6734,7 @@ "capability": "dirty-bitmaps" } ], - "id": "libvirt-45" + "id": "libvirt-46" } { @@ -18048,196 +18102,6 @@ "meta-type": "object" } ], - "id": "libvirt-46" -} - -{ - "return": { - "model": { - "name": "base", - "props": { - "cmov": true, - "ia64": false, - "aes": true, - "mmx": true, - "rdpid": false, - "arat": true, - "gfni": false, - "pause-filter": false, - "xsavec": false, - "intel-pt": false, - "osxsave": false, - "kvm-asyncpf": true, - "perfctr-core": false, - "mpx": false, - "pbe": false, - "avx512cd": false, - "decodeassists": false, - "sse4.1": true, - "family": 6, - "avx512f": false, - "msr": true, - "mce": true, - "mca": true, - "xcrypt": false, - "min-level": 13, - "xgetbv1": false, - "cid": false, - "ds": false, - "fxsr": true, - "xsaveopt": true, - "xtpr": false, - "avx512vl": false, - "avx512-vpopcntdq": false, - "phe": false, - "extapic": false, - "3dnowprefetch": false, - "avx512vbmi2": false, - "cr8legacy": false, - "xcrypt-en": false, - "pn": false, - "dca": false, - "vendor": "GenuineIntel", - "pku": false, - "smx": false, - "cmp-legacy": false, - "avx512-4fmaps": false, - "vmcb-clean": false, - "hle": false, - "3dnowext": false, - "npt": false, - "clwb": false, - "lbrv": false, - "adx": false, - "ss": true, - "pni": true, - "svm-lock": false, - "smep": true, - "smap": false, - "pfthreshold": false, - "x2apic": true, - "avx512vbmi": false, - "avx512vnni": false, - "flushbyasid": false, - "f16c": true, - "ace2-en": false, - "pae": true, - "pat": true, - "sse": true, - "phe-en": false, - "kvm-nopiodelay": true, - "tm": false, - "kvmclock-stable-bit": true, - "hypervisor": true, - "pcommit": false, - "syscall": true, - "avx512dq": false, - "svm": false, - "invtsc": false, - "sse2": true, - "est": false, - "avx512ifma": false, - "tm2": false, - "kvm-pv-eoi": true, - "cx8": true, - "kvm-mmu": false, - "sse4.2": true, - "pge": true, - "avx512bitalg": false, - "pdcm": false, - "model": 63, - "movbe": true, - "nrip-save": false, - "ssse3": true, - "sse4a": false, - "invpcid": true, - "pdpe1gb": true, - "tsc-deadline": true, - "fma": true, - "cx16": true, - "de": true, - "stepping": 2, - "xsave": true, - "clflush": true, - "skinit": false, - "tsc": true, - "tce": false, - "fpu": true, - "ds-cpl": false, - "ibs": false, - "fma4": false, - "la57": false, - "osvw": false, - "apic": true, - "pmm": false, - "spec-ctrl": false, - "tsc-adjust": true, - "kvm-steal-time": true, - "kvmclock": true, - "lwp": false, - "xop": false, - "ibpb": false, - "avx": true, - "ospke": false, - "acpi": false, - "avx512bw": false, - "ace2": false, - "fsgsbase": true, - "ht": false, - "nx": true, - "pclmulqdq": true, - "mmxext": false, - "popcnt": true, - "vaes": false, - "xsaves": false, - "lm": true, - "umip": false, - "pse": true, - "avx2": true, - "sep": true, - "nodeid-msr": false, - "misalignsse": false, - "min-xlevel": 2147483656, - "bmi1": true, - "bmi2": true, - "kvm-pv-unhalt": true, - "tsc-scale": false, - "topoext": false, - "clflushopt": false, - "monitor": false, - "avx512er": false, - "pmm-en": false, - "pcid": true, - "3dnow": false, - "erms": true, - "lahf-lm": true, - "vpclmulqdq": false, - "fxsr-opt": false, - "xstore": false, - "rtm": false, - "kvm-hint-dedicated": true, - "lmce": true, - "perfctr-nb": false, - "rdrand": true, - "rdseed": false, - "avx512-4vnniw": false, - "vme": true, - "vmx": false, - "dtes64": false, - "mtrr": true, - "rdtscp": true, - "pse36": true, - "kvm-pv-tlb-flush": false, - "tbm": false, - "wdt": false, - "model-id": "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz", - "sha-ni": false, - "abm": true, - "avx512pf": false, - "xstore-en": false - } - } - }, "id": "libvirt-47" } @@ -18246,9 +18110,6 @@ "model": { "name": "base", "props": { - "phys-bits": 0, - "core-id": -1, - "xlevel": 2147483656, "cmov": true, "ia64": false, "aes": true, @@ -18260,34 +18121,22 @@ "xsavec": false, "intel-pt": false, "osxsave": false, - "tsc-frequency": 0, - "xd": true, - "hv-vendor-id": "", "kvm-asyncpf": true, - "kvm_asyncpf": true, - "perfctr_core": false, "perfctr-core": false, "mpx": false, "pbe": false, - "decodeassists": false, "avx512cd": false, - "sse4_1": true, + "decodeassists": false, "sse4.1": true, - "sse4-1": true, "family": 6, - "vmware-cpuid-freq": true, "avx512f": false, "msr": true, "mce": true, "mca": true, - "hv-runtime": false, "xcrypt": false, - "thread-id": -1, "min-level": 13, "xgetbv1": false, "cid": false, - "hv-relaxed": false, - "hv-crash": false, "ds": false, "fxsr": true, "xsaveopt": true, @@ -18299,83 +18148,60 @@ "3dnowprefetch": false, "avx512vbmi2": false, "cr8legacy": false, - "cpuid-0xb": true, "xcrypt-en": false, - "kvm_pv_eoi": true, - "apic-id": 4294967295, "pn": false, "dca": false, "vendor": "GenuineIntel", "pku": false, "smx": false, - "cmp_legacy": false, "cmp-legacy": false, - "node-id": -1, "avx512-4fmaps": false, - "vmcb_clean": false, "vmcb-clean": false, - "3dnowext": false, "hle": false, + "3dnowext": false, "npt": false, - "memory": "/machine/unattached/system[0]", "clwb": false, "lbrv": false, "adx": false, "ss": true, "pni": true, - "svm_lock": false, "svm-lock": false, - "pfthreshold": false, "smep": true, "smap": false, + "pfthreshold": false, "x2apic": true, "avx512vbmi": false, "avx512vnni": false, - "hv-stimer": false, - "i64": true, "flushbyasid": false, "f16c": true, "ace2-en": false, - "pat": true, "pae": true, + "pat": true, "sse": true, "phe-en": false, - "kvm_nopiodelay": true, "kvm-nopiodelay": true, "tm": false, "kvmclock-stable-bit": true, "hypervisor": true, - "socket-id": -1, "pcommit": false, "syscall": true, - "level": 13, "avx512dq": false, "svm": false, - "full-cpuid-auto-level": true, - "hv-reset": false, "invtsc": false, - "sse3": true, "sse2": true, "est": false, "avx512ifma": false, "tm2": false, "kvm-pv-eoi": true, "cx8": true, - "kvm_mmu": false, "kvm-mmu": false, - "sse4_2": true, "sse4.2": true, - "sse4-2": true, "pge": true, - "fill-mtrr-mask": true, "avx512bitalg": false, - "nodeid_msr": false, "pdcm": false, - "movbe": true, "model": 63, - "nrip_save": false, + "movbe": true, "nrip-save": false, - "kvm_pv_unhalt": true, "ssse3": true, "sse4a": false, "invpcid": true, @@ -18384,7 +18210,6 @@ "fma": true, "cx16": true, "de": true, - "enforce": false, "stepping": 2, "xsave": true, "clflush": true, @@ -18392,66 +18217,47 @@ "tsc": true, "tce": false, "fpu": true, - "ibs": false, - "ds_cpl": false, "ds-cpl": false, - "host-phys-bits": false, + "ibs": false, "fma4": false, "la57": false, "osvw": false, - "check": true, - "hv-spinlocks": -1, - "pmu": false, - "pmm": false, "apic": true, + "pmm": false, "spec-ctrl": false, - "min-xlevel2": 0, "tsc-adjust": true, - "tsc_adjust": true, "kvm-steal-time": true, - "kvm_steal_time": true, "kvmclock": true, - "l3-cache": true, "lwp": false, - "ibpb": false, "xop": false, + "ibpb": false, "avx": true, "ospke": false, - "ace2": false, - "avx512bw": false, "acpi": false, - "hv-vapic": false, + "avx512bw": false, + "ace2": false, "fsgsbase": true, "ht": false, "nx": true, "pclmulqdq": true, "mmxext": false, - "vaes": false, "popcnt": true, + "vaes": false, "xsaves": false, - "tcg-cpuid": true, "lm": true, "umip": false, "pse": true, "avx2": true, "sep": true, - "pclmuldq": true, - "x-hv-max-vps": -1, "nodeid-msr": false, - "kvm": true, "misalignsse": false, "min-xlevel": 2147483656, - "kvm-pv-unhalt": true, - "bmi2": true, "bmi1": true, - "realized": false, - "tsc_scale": false, + "bmi2": true, + "kvm-pv-unhalt": true, "tsc-scale": false, "topoext": false, - "hv-vpindex": false, - "xlevel2": 0, "clflushopt": false, - "kvm-no-smi-migration": false, "monitor": false, "avx512er": false, "pmm-en": false, @@ -18459,24 +18265,18 @@ "3dnow": false, "erms": true, "lahf-lm": true, - "lahf_lm": true, "vpclmulqdq": false, "fxsr-opt": false, - "hv-synic": false, "xstore": false, - "fxsr_opt": false, - "kvm-hint-dedicated": true, "rtm": false, + "kvm-hint-dedicated": true, "lmce": true, - "hv-time": false, "perfctr-nb": false, - "perfctr_nb": false, - "ffxsr": false, "rdrand": true, "rdseed": false, "avx512-4vnniw": false, - "vmx": false, "vme": true, + "vmx": false, "dtes64": false, "mtrr": true, "rdtscp": true, @@ -18484,9 +18284,8 @@ "kvm-pv-tlb-flush": false, "tbm": false, "wdt": false, - "pause_filter": false, - "sha-ni": false, "model-id": "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz", + "sha-ni": false, "abm": true, "avx512pf": false, "xstore-en": false @@ -18501,6 +18300,9 @@ "model": { "name": "base", "props": { + "phys-bits": 0, + "core-id": -1, + "xlevel": 2147483656, "cmov": true, "ia64": false, "aes": true, @@ -18512,22 +18314,34 @@ "xsavec": false, "intel-pt": false, "osxsave": false, + "tsc-frequency": 0, + "xd": true, + "hv-vendor-id": "", "kvm-asyncpf": true, + "kvm_asyncpf": true, + "perfctr_core": false, "perfctr-core": false, "mpx": false, "pbe": false, - "avx512cd": false, "decodeassists": false, + "avx512cd": false, + "sse4_1": true, "sse4.1": true, + "sse4-1": true, "family": 6, + "vmware-cpuid-freq": true, "avx512f": false, "msr": true, "mce": true, "mca": true, + "hv-runtime": false, "xcrypt": false, + "thread-id": -1, "min-level": 13, "xgetbv1": false, "cid": false, + "hv-relaxed": false, + "hv-crash": false, "ds": false, "fxsr": true, "xsaveopt": true, @@ -18539,60 +18353,83 @@ "3dnowprefetch": false, "avx512vbmi2": false, "cr8legacy": false, + "cpuid-0xb": true, "xcrypt-en": false, + "kvm_pv_eoi": true, + "apic-id": 4294967295, "pn": false, "dca": false, "vendor": "GenuineIntel", "pku": false, "smx": false, + "cmp_legacy": false, "cmp-legacy": false, + "node-id": -1, "avx512-4fmaps": false, + "vmcb_clean": false, "vmcb-clean": false, - "hle": false, "3dnowext": false, + "hle": false, "npt": false, + "memory": "/machine/unattached/system[0]", "clwb": false, "lbrv": false, "adx": false, "ss": true, "pni": true, + "svm_lock": false, "svm-lock": false, + "pfthreshold": false, "smep": true, "smap": false, - "pfthreshold": false, "x2apic": true, "avx512vbmi": false, "avx512vnni": false, + "hv-stimer": false, + "i64": true, "flushbyasid": false, "f16c": true, "ace2-en": false, - "pae": true, "pat": true, + "pae": true, "sse": true, "phe-en": false, + "kvm_nopiodelay": true, "kvm-nopiodelay": true, "tm": false, "kvmclock-stable-bit": true, "hypervisor": true, + "socket-id": -1, "pcommit": false, "syscall": true, + "level": 13, "avx512dq": false, "svm": false, - "invtsc": true, + "full-cpuid-auto-level": true, + "hv-reset": false, + "invtsc": false, + "sse3": true, "sse2": true, "est": false, "avx512ifma": false, "tm2": false, "kvm-pv-eoi": true, "cx8": true, + "kvm_mmu": false, "kvm-mmu": false, + "sse4_2": true, "sse4.2": true, + "sse4-2": true, "pge": true, + "fill-mtrr-mask": true, "avx512bitalg": false, + "nodeid_msr": false, "pdcm": false, - "model": 63, "movbe": true, + "model": 63, + "nrip_save": false, "nrip-save": false, + "kvm_pv_unhalt": true, "ssse3": true, "sse4a": false, "invpcid": true, @@ -18601,6 +18438,7 @@ "fma": true, "cx16": true, "de": true, + "enforce": false, "stepping": 2, "xsave": true, "clflush": true, @@ -18608,47 +18446,66 @@ "tsc": true, "tce": false, "fpu": true, - "ds-cpl": false, "ibs": false, + "ds_cpl": false, + "ds-cpl": false, + "host-phys-bits": false, "fma4": false, "la57": false, "osvw": false, - "apic": true, + "check": true, + "hv-spinlocks": -1, + "pmu": false, "pmm": false, + "apic": true, "spec-ctrl": false, + "min-xlevel2": 0, "tsc-adjust": true, + "tsc_adjust": true, "kvm-steal-time": true, + "kvm_steal_time": true, "kvmclock": true, + "l3-cache": true, "lwp": false, - "xop": false, "ibpb": false, + "xop": false, "avx": true, "ospke": false, - "acpi": false, - "avx512bw": false, "ace2": false, + "avx512bw": false, + "acpi": false, + "hv-vapic": false, "fsgsbase": true, "ht": false, "nx": true, "pclmulqdq": true, "mmxext": false, - "popcnt": true, "vaes": false, + "popcnt": true, "xsaves": false, + "tcg-cpuid": true, "lm": true, "umip": false, "pse": true, "avx2": true, "sep": true, + "pclmuldq": true, + "x-hv-max-vps": -1, "nodeid-msr": false, + "kvm": true, "misalignsse": false, "min-xlevel": 2147483656, - "bmi1": true, - "bmi2": true, "kvm-pv-unhalt": true, + "bmi2": true, + "bmi1": true, + "realized": false, + "tsc_scale": false, "tsc-scale": false, "topoext": false, + "hv-vpindex": false, + "xlevel2": 0, "clflushopt": false, + "kvm-no-smi-migration": false, "monitor": false, "avx512er": false, "pmm-en": false, @@ -18656,18 +18513,24 @@ "3dnow": false, "erms": true, "lahf-lm": true, + "lahf_lm": true, "vpclmulqdq": false, "fxsr-opt": false, + "hv-synic": false, "xstore": false, - "rtm": false, + "fxsr_opt": false, "kvm-hint-dedicated": true, + "rtm": false, "lmce": true, + "hv-time": false, "perfctr-nb": false, + "perfctr_nb": false, + "ffxsr": false, "rdrand": true, "rdseed": false, "avx512-4vnniw": false, - "vme": true, "vmx": false, + "vme": true, "dtes64": false, "mtrr": true, "rdtscp": true, @@ -18675,8 +18538,9 @@ "kvm-pv-tlb-flush": false, "tbm": false, "wdt": false, - "model-id": "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz", + "pause_filter": false, "sha-ni": false, + "model-id": "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz", "abm": true, "avx512pf": false, "xstore-en": false @@ -18691,9 +18555,6 @@ "model": { "name": "base", "props": { - "phys-bits": 0, - "core-id": -1, - "xlevel": 2147483656, "cmov": true, "ia64": false, "aes": true, @@ -18705,34 +18566,22 @@ "xsavec": false, "intel-pt": false, "osxsave": false, - "tsc-frequency": 0, - "xd": true, - "hv-vendor-id": "", "kvm-asyncpf": true, - "kvm_asyncpf": true, - "perfctr_core": false, "perfctr-core": false, "mpx": false, "pbe": false, - "decodeassists": false, "avx512cd": false, - "sse4_1": true, + "decodeassists": false, "sse4.1": true, - "sse4-1": true, "family": 6, - "vmware-cpuid-freq": true, "avx512f": false, "msr": true, "mce": true, "mca": true, - "hv-runtime": false, "xcrypt": false, - "thread-id": -1, "min-level": 13, "xgetbv1": false, "cid": false, - "hv-relaxed": false, - "hv-crash": false, "ds": false, "fxsr": true, "xsaveopt": true, @@ -18744,83 +18593,60 @@ "3dnowprefetch": false, "avx512vbmi2": false, "cr8legacy": false, - "cpuid-0xb": true, "xcrypt-en": false, - "kvm_pv_eoi": true, - "apic-id": 4294967295, "pn": false, "dca": false, "vendor": "GenuineIntel", "pku": false, "smx": false, - "cmp_legacy": false, "cmp-legacy": false, - "node-id": -1, "avx512-4fmaps": false, - "vmcb_clean": false, "vmcb-clean": false, - "3dnowext": false, "hle": false, + "3dnowext": false, "npt": false, - "memory": "/machine/unattached/system[0]", "clwb": false, "lbrv": false, "adx": false, "ss": true, "pni": true, - "svm_lock": false, "svm-lock": false, - "pfthreshold": false, "smep": true, "smap": false, + "pfthreshold": false, "x2apic": true, "avx512vbmi": false, "avx512vnni": false, - "hv-stimer": false, - "i64": true, "flushbyasid": false, "f16c": true, "ace2-en": false, - "pat": true, "pae": true, + "pat": true, "sse": true, "phe-en": false, - "kvm_nopiodelay": true, "kvm-nopiodelay": true, "tm": false, "kvmclock-stable-bit": true, "hypervisor": true, - "socket-id": -1, "pcommit": false, "syscall": true, - "level": 13, "avx512dq": false, "svm": false, - "full-cpuid-auto-level": true, - "hv-reset": false, "invtsc": true, - "sse3": true, "sse2": true, "est": false, "avx512ifma": false, "tm2": false, "kvm-pv-eoi": true, "cx8": true, - "kvm_mmu": false, "kvm-mmu": false, - "sse4_2": true, "sse4.2": true, - "sse4-2": true, "pge": true, - "fill-mtrr-mask": true, "avx512bitalg": false, - "nodeid_msr": false, "pdcm": false, - "movbe": true, "model": 63, - "nrip_save": false, + "movbe": true, "nrip-save": false, - "kvm_pv_unhalt": true, "ssse3": true, "sse4a": false, "invpcid": true, @@ -18829,7 +18655,6 @@ "fma": true, "cx16": true, "de": true, - "enforce": false, "stepping": 2, "xsave": true, "clflush": true, @@ -18837,66 +18662,47 @@ "tsc": true, "tce": false, "fpu": true, - "ibs": false, - "ds_cpl": false, "ds-cpl": false, - "host-phys-bits": false, + "ibs": false, "fma4": false, "la57": false, "osvw": false, - "check": true, - "hv-spinlocks": -1, - "pmu": false, - "pmm": false, "apic": true, + "pmm": false, "spec-ctrl": false, - "min-xlevel2": 0, "tsc-adjust": true, - "tsc_adjust": true, "kvm-steal-time": true, - "kvm_steal_time": true, "kvmclock": true, - "l3-cache": true, "lwp": false, - "ibpb": false, "xop": false, + "ibpb": false, "avx": true, "ospke": false, - "ace2": false, - "avx512bw": false, "acpi": false, - "hv-vapic": false, + "avx512bw": false, + "ace2": false, "fsgsbase": true, "ht": false, "nx": true, "pclmulqdq": true, "mmxext": false, - "vaes": false, "popcnt": true, + "vaes": false, "xsaves": false, - "tcg-cpuid": true, "lm": true, "umip": false, "pse": true, "avx2": true, "sep": true, - "pclmuldq": true, - "x-hv-max-vps": -1, "nodeid-msr": false, - "kvm": true, "misalignsse": false, "min-xlevel": 2147483656, - "kvm-pv-unhalt": true, - "bmi2": true, "bmi1": true, - "realized": false, - "tsc_scale": false, + "bmi2": true, + "kvm-pv-unhalt": true, "tsc-scale": false, "topoext": false, - "hv-vpindex": false, - "xlevel2": 0, "clflushopt": false, - "kvm-no-smi-migration": false, "monitor": false, "avx512er": false, "pmm-en": false, @@ -18904,24 +18710,18 @@ "3dnow": false, "erms": true, "lahf-lm": true, - "lahf_lm": true, "vpclmulqdq": false, "fxsr-opt": false, - "hv-synic": false, "xstore": false, - "fxsr_opt": false, - "kvm-hint-dedicated": true, "rtm": false, + "kvm-hint-dedicated": true, "lmce": true, - "hv-time": false, "perfctr-nb": false, - "perfctr_nb": false, - "ffxsr": false, "rdrand": true, "rdseed": false, "avx512-4vnniw": false, - "vmx": false, "vme": true, + "vmx": false, "dtes64": false, "mtrr": true, "rdtscp": true, @@ -18929,9 +18729,8 @@ "kvm-pv-tlb-flush": false, "tbm": false, "wdt": false, - "pause_filter": false, - "sha-ni": false, "model-id": "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz", + "sha-ni": false, "abm": true, "avx512pf": false, "xstore-en": false @@ -18941,6 +18740,261 @@ "id": "libvirt-50" } +{ + "return": { + "model": { + "name": "base", + "props": { + "phys-bits": 0, + "core-id": -1, + "xlevel": 2147483656, + "cmov": true, + "ia64": false, + "aes": true, + "mmx": true, + "rdpid": false, + "arat": true, + "gfni": false, + "pause-filter": false, + "xsavec": false, + "intel-pt": false, + "osxsave": false, + "tsc-frequency": 0, + "xd": true, + "hv-vendor-id": "", + "kvm-asyncpf": true, + "kvm_asyncpf": true, + "perfctr_core": false, + "perfctr-core": false, + "mpx": false, + "pbe": false, + "decodeassists": false, + "avx512cd": false, + "sse4_1": true, + "sse4.1": true, + "sse4-1": true, + "family": 6, + "vmware-cpuid-freq": true, + "avx512f": false, + "msr": true, + "mce": true, + "mca": true, + "hv-runtime": false, + "xcrypt": false, + "thread-id": -1, + "min-level": 13, + "xgetbv1": false, + "cid": false, + "hv-relaxed": false, + "hv-crash": false, + "ds": false, + "fxsr": true, + "xsaveopt": true, + "xtpr": false, + "avx512vl": false, + "avx512-vpopcntdq": false, + "phe": false, + "extapic": false, + "3dnowprefetch": false, + "avx512vbmi2": false, + "cr8legacy": false, + "cpuid-0xb": true, + "xcrypt-en": false, + "kvm_pv_eoi": true, + "apic-id": 4294967295, + "pn": false, + "dca": false, + "vendor": "GenuineIntel", + "pku": false, + "smx": false, + "cmp_legacy": false, + "cmp-legacy": false, + "node-id": -1, + "avx512-4fmaps": false, + "vmcb_clean": false, + "vmcb-clean": false, + "3dnowext": false, + "hle": false, + "npt": false, + "memory": "/machine/unattached/system[0]", + "clwb": false, + "lbrv": false, + "adx": false, + "ss": true, + "pni": true, + "svm_lock": false, + "svm-lock": false, + "pfthreshold": false, + "smep": true, + "smap": false, + "x2apic": true, + "avx512vbmi": false, + "avx512vnni": false, + "hv-stimer": false, + "i64": true, + "flushbyasid": false, + "f16c": true, + "ace2-en": false, + "pat": true, + "pae": true, + "sse": true, + "phe-en": false, + "kvm_nopiodelay": true, + "kvm-nopiodelay": true, + "tm": false, + "kvmclock-stable-bit": true, + "hypervisor": true, + "socket-id": -1, + "pcommit": false, + "syscall": true, + "level": 13, + "avx512dq": false, + "svm": false, + "full-cpuid-auto-level": true, + "hv-reset": false, + "invtsc": true, + "sse3": true, + "sse2": true, + "est": false, + "avx512ifma": false, + "tm2": false, + "kvm-pv-eoi": true, + "cx8": true, + "kvm_mmu": false, + "kvm-mmu": false, + "sse4_2": true, + "sse4.2": true, + "sse4-2": true, + "pge": true, + "fill-mtrr-mask": true, + "avx512bitalg": false, + "nodeid_msr": false, + "pdcm": false, + "movbe": true, + "model": 63, + "nrip_save": false, + "nrip-save": false, + "kvm_pv_unhalt": true, + "ssse3": true, + "sse4a": false, + "invpcid": true, + "pdpe1gb": true, + "tsc-deadline": true, + "fma": true, + "cx16": true, + "de": true, + "enforce": false, + "stepping": 2, + "xsave": true, + "clflush": true, + "skinit": false, + "tsc": true, + "tce": false, + "fpu": true, + "ibs": false, + "ds_cpl": false, + "ds-cpl": false, + "host-phys-bits": false, + "fma4": false, + "la57": false, + "osvw": false, + "check": true, + "hv-spinlocks": -1, + "pmu": false, + "pmm": false, + "apic": true, + "spec-ctrl": false, + "min-xlevel2": 0, + "tsc-adjust": true, + "tsc_adjust": true, + "kvm-steal-time": true, + "kvm_steal_time": true, + "kvmclock": true, + "l3-cache": true, + "lwp": false, + "ibpb": false, + "xop": false, + "avx": true, + "ospke": false, + "ace2": false, + "avx512bw": false, + "acpi": false, + "hv-vapic": false, + "fsgsbase": true, + "ht": false, + "nx": true, + "pclmulqdq": true, + "mmxext": false, + "vaes": false, + "popcnt": true, + "xsaves": false, + "tcg-cpuid": true, + "lm": true, + "umip": false, + "pse": true, + "avx2": true, + "sep": true, + "pclmuldq": true, + "x-hv-max-vps": -1, + "nodeid-msr": false, + "kvm": true, + "misalignsse": false, + "min-xlevel": 2147483656, + "kvm-pv-unhalt": true, + "bmi2": true, + "bmi1": true, + "realized": false, + "tsc_scale": false, + "tsc-scale": false, + "topoext": false, + "hv-vpindex": false, + "xlevel2": 0, + "clflushopt": false, + "kvm-no-smi-migration": false, + "monitor": false, + "avx512er": false, + "pmm-en": false, + "pcid": true, + "3dnow": false, + "erms": true, + "lahf-lm": true, + "lahf_lm": true, + "vpclmulqdq": false, + "fxsr-opt": false, + "hv-synic": false, + "xstore": false, + "fxsr_opt": false, + "kvm-hint-dedicated": true, + "rtm": false, + "lmce": true, + "hv-time": false, + "perfctr-nb": false, + "perfctr_nb": false, + "ffxsr": false, + "rdrand": true, + "rdseed": false, + "avx512-4vnniw": false, + "vmx": false, + "vme": true, + "dtes64": false, + "mtrr": true, + "rdtscp": true, + "pse36": true, + "kvm-pv-tlb-flush": false, + "tbm": false, + "wdt": false, + "pause_filter": false, + "sha-ni": false, + "model-id": "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz", + "abm": true, + "avx512pf": false, + "xstore-en": false + } + } + }, + "id": "libvirt-51" +} + { "return": { }, diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml index f7c394a218..014dcc5c79 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -196,9 +196,10 @@ <flag name='query-cpus-fast'/> <flag name='disk-write-cache'/> <flag name='qom-list-properties'/> + <flag name='memory-backend-file.discard-data'/> <version>2011090</version> <kvmVersion>0</kvmVersion> - <microcodeVersion>390060</microcodeVersion> + <microcodeVersion>390813</microcodeVersion> <package>v2.12.0-rc0</package> <arch>x86_64</arch> <hostCPU type='kvm' model='base' migratability='yes'> -- 2.16.1

On Fri, Apr 20, 2018 at 11:09:30AM +0200, Michal Privoznik wrote:
This capability tracks if memory-backend-file has discard-data attribute or not.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_capabilities.c | 18 + src/qemu/qemu_capabilities.h | 1 + .../caps_2.12.0.aarch64.replies | 416 +- tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 3 +- .../qemucapabilitiesdata/caps_2.12.0.ppc64.replies | 4454 ++++++++++---------- tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 3 +- .../qemucapabilitiesdata/caps_2.12.0.s390x.replies | 78 +- tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 + .../caps_2.12.0.x86_64.replies | 804 ++-- tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 3 +- 10 files changed, 3010 insertions(+), 2771 deletions(-)
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index e3f749a026..daf60a3a1d 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -458,6 +458,7 @@ typedef enum { QEMU_CAPS_QUERY_CPUS_FAST, /* query-cpus-fast command */ QEMU_CAPS_DISK_WRITE_CACHE, /* qemu block frontends support write-cache param */ QEMU_CAPS_QOM_LIST_PROPERTIES, /* qom-list-properties monitor command */ + QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD, /* -object memory-backend-dile,discard-data= */
s/dile,/file./ Also, I'd drop the equal sign. Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

https://bugzilla.redhat.com/show_bug.cgi?id=1480668 QEMU has this new feature memory-backend-file.discard-data=yes which is a nifty optimization. Basically, when qemu is quitting or on memory hotplug it calls munmap() and close() on the file that is backing the memory. However, this does not mean kernel won't stop touching that part of memory. It still might. With this feature enabled we tell kernel: "we don't need this memory nor data stored in it". This makes kernel drop the memory immediately without trying to sync memory with the mapped file. Unfortunately, this cannot be turned on by default because we can't be sure when users really don't care about what happens to data after qemu dies. So it has to be opt-in. As usual, there are three places where one can configure memory attributes. This patch adds the feature to all of them. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- docs/formatdomain.html.in | 34 ++++++++++++++++++++++-- docs/schemas/cputypes.rng | 5 ++++ docs/schemas/domaincommon.rng | 10 +++++++ src/conf/domain_conf.c | 39 ++++++++++++++++++++++++++-- src/conf/domain_conf.h | 3 +++ src/conf/numa_conf.c | 27 +++++++++++++++++++ src/conf/numa_conf.h | 3 +++ src/libvirt_private.syms | 1 + src/qemu/qemu_command.c | 27 ++++++++++++++++--- tests/qemuxml2argvdata/hugepages-pages7.args | 3 ++- tests/qemuxml2argvdata/hugepages-pages7.xml | 4 +-- tests/qemuxml2argvtest.c | 3 ++- 12 files changed, 148 insertions(+), 11 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index ada0df227f..ea9d77bd18 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1016,6 +1016,7 @@ <source type="file|anonymous"/> <access mode="shared|private"/> <allocation mode="immediate|ondemand"/> + <discard/> </memoryBacking> ... </domain> @@ -1070,6 +1071,14 @@ numa node by <code>memAccess</code></dd> <dt><code>allocation</code></dt> <dd>Specify when allocate the memory</dd> + <dt><code>discard</code></dt> + <dd>When set and supported by hypervisor the memory + content is discarded just before guest shuts down (or + when DIMM module is unplugged). Please note that this is + just an optimization and is not guaranteed to work in + all cases (e.g. when hypervisor crashes). + <span class="since">Since 4.3.0</span> (QEMU/KVM only) + </dd> </dl> @@ -1608,7 +1617,7 @@ <cpu> ... <numa> - <cell id='0' cpus='0-3' memory='512000' unit='KiB'/> + <cell id='0' cpus='0-3' memory='512000' unit='KiB' discard='yes'/> <cell id='1' cpus='4-7' memory='512000' unit='KiB' memAccess='shared'/> </numa> ... @@ -1634,6 +1643,13 @@ <code>memAccess</code> can control whether the memory is to be mapped as "shared" or "private". This is valid only for hugepages-backed memory and nvdimm modules. + + Each <code>cell</code> element can have an optional + <code>discard</code> attribute which fine tunes the discard + feature for given numa node as described under + <a href="#elementsMemoryBacking">Memory Backing</a>. + Accepted values are <code>yes</code> and <code>no</code>. + <span class='since'>Since 4.3.0</span> </p> <p> @@ -7849,7 +7865,7 @@ qemu-kvm -net nic,model=? /dev/null <pre> ... <devices> - <memory model='dimm' access='private'> + <memory model='dimm' access='private' discard='yes'> <target> <size unit='KiB'>524287</size> <node>0</node> @@ -7903,6 +7919,20 @@ qemu-kvm -net nic,model=? /dev/null </p> </dd> + <dt><code>discard</code></dt> + <dd> + <p> + An optional attribute <code>discard</code> + (<span class="since">since 4.3.0</span>) that provides + capability to fine tune discard of data on per module + basis. Accepted values are <code>yes</code> and + <code>no</code>. The feature is described here: + <a href="#elementsMemoryBacking">Memory Backing</a>. + This attribute is allowed only for + <code>model='dimm'</code>. + </p> + </dd> + <dt><code>source</code></dt> <dd> <p> diff --git a/docs/schemas/cputypes.rng b/docs/schemas/cputypes.rng index c45b6dfb28..1f1e0e36d5 100644 --- a/docs/schemas/cputypes.rng +++ b/docs/schemas/cputypes.rng @@ -129,6 +129,11 @@ </choice> </attribute> </optional> + <optional> + <attribute name="discard"> + <ref name="virYesNo"/> + </attribute> + </optional> <optional> <element name="distances"> <oneOrMore> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 4cab55f05d..9650a779b7 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -633,6 +633,11 @@ </attribute> </element> </optional> + <optional> + <element name="discard"> + <empty/> + </element> + </optional> </interleave> </element> </optional> @@ -5138,6 +5143,11 @@ </choice> </attribute> </optional> + <optional> + <attribute name="discard"> + <ref name="virYesNo"/> + </attribute> + </optional> <interleave> <optional> <ref name="memorydev-source"/> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 35666c1347..9585e38bc1 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5508,6 +5508,20 @@ virDomainVideoDefValidate(const virDomainVideoDef *video) } +static int +virDomainMemoryDefValidate(const virDomainMemoryDef *mem) +{ + if (mem->model == VIR_DOMAIN_MEMORY_MODEL_NVDIMM && + mem->discard == VIR_TRISTATE_BOOL_YES) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("discard is not supported for nvdimms")); + return -1; + } + + return 0; +} + + static int virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev, const virDomainDef *def) @@ -5540,6 +5554,9 @@ virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev, case VIR_DOMAIN_DEVICE_VIDEO: return virDomainVideoDefValidate(dev->data.video); + case VIR_DOMAIN_DEVICE_MEMORY: + return virDomainMemoryDefValidate(dev->data.memory); + case VIR_DOMAIN_DEVICE_LEASE: case VIR_DOMAIN_DEVICE_FS: case VIR_DOMAIN_DEVICE_INPUT: @@ -5552,7 +5569,6 @@ virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev, case VIR_DOMAIN_DEVICE_SHMEM: case VIR_DOMAIN_DEVICE_TPM: case VIR_DOMAIN_DEVICE_PANIC: - case VIR_DOMAIN_DEVICE_MEMORY: case VIR_DOMAIN_DEVICE_IOMMU: case VIR_DOMAIN_DEVICE_NONE: case VIR_DOMAIN_DEVICE_LAST: @@ -15613,6 +15629,16 @@ virDomainMemoryDefParseXML(virDomainXMLOptionPtr xmlopt, } VIR_FREE(tmp); + if ((tmp = virXMLPropString(memdevNode, "discard"))) { + if ((val = virTristateBoolTypeFromString(tmp)) <= 0) { + virReportError(VIR_ERR_XML_ERROR, + _("invalid discard value '%s'"), tmp); + goto error; + } + + def->discard = val; + } + /* source */ if ((node = virXPathNode("./source", ctxt)) && virDomainMemorySourceDefParseXML(node, ctxt, def) < 0) @@ -18939,6 +18965,9 @@ virDomainDefParseXML(xmlDocPtr xml, if (virXPathBoolean("boolean(./memoryBacking/locked)", ctxt)) def->mem.locked = true; + if (virXPathBoolean("boolean(./memoryBacking/discard)", ctxt)) + def->mem.discard = VIR_TRISTATE_BOOL_YES; + /* Extract blkio cgroup tunables */ if (virXPathUInt("string(./blkiotune/weight)", ctxt, &def->blkio.weight) < 0) @@ -25196,6 +25225,9 @@ virDomainMemoryDefFormat(virBufferPtr buf, if (def->access) virBufferAsprintf(buf, " access='%s'", virDomainMemoryAccessTypeToString(def->access)); + if (def->discard) + virBufferAsprintf(buf, " discard='%s'", + virTristateBoolTypeToString(def->discard)); virBufferAddLit(buf, ">\n"); virBufferAdjustIndent(buf, 2); @@ -26658,7 +26690,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, } if (def->mem.nhugepages || def->mem.nosharepages || def->mem.locked - || def->mem.source || def->mem.access || def->mem.allocation) + || def->mem.source || def->mem.access || def->mem.allocation + || def->mem.discard) { virBufferAddLit(buf, "<memoryBacking>\n"); virBufferAdjustIndent(buf, 2); @@ -26677,6 +26710,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, if (def->mem.allocation) virBufferAsprintf(buf, "<allocation mode='%s'/>\n", virDomainMemoryAllocationTypeToString(def->mem.allocation)); + if (def->mem.discard) + virBufferAddLit(buf, "<discard/>\n"); virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "</memoryBacking>\n"); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 3c7eccb8ca..52d29124f1 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2107,6 +2107,7 @@ typedef enum { struct _virDomainMemoryDef { virDomainMemoryAccess access; + int discard; /* enum virTristateBool */ /* source */ virBitmapPtr sourceNodes; @@ -2269,6 +2270,8 @@ struct _virDomainMemtune { int source; /* enum virDomainMemorySource */ int access; /* enum virDomainMemoryAccess */ int allocation; /* enum virDomainMemoryAllocation */ + + int discard; /* enum virTristateBool */ }; typedef struct _virDomainPowerManagement virDomainPowerManagement; diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c index 9307dd93d3..a1bbcfa945 100644 --- a/src/conf/numa_conf.c +++ b/src/conf/numa_conf.c @@ -77,6 +77,7 @@ struct _virDomainNuma { virBitmapPtr nodeset; /* host memory nodes where this guest node resides */ virDomainNumatuneMemMode mode; /* memory mode selection */ virDomainMemoryAccess memAccess; /* shared memory access configuration */ + int discard; /* discard-data for memory-backend-file, virTristateBool */ struct _virDomainNumaDistance { unsigned int value; /* locality value for node i->j or j->i */ @@ -947,6 +948,18 @@ virDomainNumaDefCPUParseXML(virDomainNumaPtr def, VIR_FREE(tmp); } + if ((tmp = virXMLPropString(nodes[i], "discard"))) { + if ((rc = virTristateBoolTypeFromString(tmp)) <= 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Invalid 'discard' attribute value '%s'"), + tmp); + goto cleanup; + } + + def->mem_nodes[cur_cell].discard = rc; + VIR_FREE(tmp); + } + /* Parse NUMA distances info */ if (virDomainNumaDefNodeDistanceParseXML(def, ctxt, cur_cell) < 0) goto cleanup; @@ -967,6 +980,7 @@ virDomainNumaDefCPUFormatXML(virBufferPtr buf, virDomainNumaPtr def) { virDomainMemoryAccess memAccess; + int discard; char *cpustr; size_t ncells = virDomainNumaGetNodeCount(def); size_t i; @@ -980,6 +994,7 @@ virDomainNumaDefCPUFormatXML(virBufferPtr buf, int ndistances; memAccess = virDomainNumaGetNodeMemoryAccessMode(def, i); + discard = virDomainNumaGetNodeDiscard(def, i); if (!(cpustr = virBitmapFormat(virDomainNumaGetNodeCpumask(def, i)))) return -1; @@ -994,6 +1009,10 @@ virDomainNumaDefCPUFormatXML(virBufferPtr buf, virBufferAsprintf(buf, " memAccess='%s'", virDomainMemoryAccessTypeToString(memAccess)); + if (discard) + virBufferAsprintf(buf, " discard='%s'", + virTristateBoolTypeToString(discard)); + ndistances = def->mem_nodes[i].ndistances; if (ndistances == 0) { virBufferAddLit(buf, "/>\n"); @@ -1304,6 +1323,14 @@ virDomainNumaGetNodeMemoryAccessMode(virDomainNumaPtr numa, } +int +virDomainNumaGetNodeDiscard(virDomainNumaPtr numa, + size_t node) +{ + return numa->mem_nodes[node].discard; +} + + unsigned long long virDomainNumaGetNodeMemorySize(virDomainNumaPtr numa, size_t node) diff --git a/src/conf/numa_conf.h b/src/conf/numa_conf.h index 7947fdb219..6d8f484f73 100644 --- a/src/conf/numa_conf.h +++ b/src/conf/numa_conf.h @@ -102,6 +102,9 @@ virBitmapPtr virDomainNumaGetNodeCpumask(virDomainNumaPtr numa, virDomainMemoryAccess virDomainNumaGetNodeMemoryAccessMode(virDomainNumaPtr numa, size_t node) ATTRIBUTE_NONNULL(1); +int virDomainNumaGetNodeDiscard(virDomainNumaPtr numa, + size_t node) + ATTRIBUTE_NONNULL(1); unsigned long long virDomainNumaGetNodeMemorySize(virDomainNumaPtr numa, size_t node) ATTRIBUTE_NONNULL(1); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index b31f599bd2..d3d0495e42 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -750,6 +750,7 @@ virDomainNumaGetMaxCPUID; virDomainNumaGetMemorySize; virDomainNumaGetNodeCount; virDomainNumaGetNodeCpumask; +virDomainNumaGetNodeDiscard; virDomainNumaGetNodeDistance; virDomainNumaGetNodeMemoryAccessMode; virDomainNumaGetNodeMemorySize; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index b666f3715f..4964c32aeb 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3010,6 +3010,7 @@ qemuBuildMemoryBackendStr(virJSONValuePtr *backendProps, unsigned long long pagesize = mem->pagesize; bool needHugepage = !!pagesize; bool useHugepage = !!pagesize; + int discard = mem->discard; /* The difference between @needHugepage and @useHugepage is that the latter * is true whenever huge page is defined for the current memory cell. @@ -3020,8 +3021,7 @@ qemuBuildMemoryBackendStr(virJSONValuePtr *backendProps, *backendProps = NULL; *backendType = NULL; - if (memAccess == VIR_DOMAIN_MEMORY_ACCESS_DEFAULT && - mem->targetNode >= 0) { + if (mem->targetNode >= 0) { /* memory devices could provide a invalid guest node */ if (mem->targetNode >= virDomainNumaGetNodeCount(def->numa)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, @@ -3031,12 +3031,19 @@ qemuBuildMemoryBackendStr(virJSONValuePtr *backendProps, return -1; } - memAccess = virDomainNumaGetNodeMemoryAccessMode(def->numa, mem->targetNode); + if (memAccess == VIR_DOMAIN_MEMORY_ACCESS_DEFAULT) + memAccess = virDomainNumaGetNodeMemoryAccessMode(def->numa, mem->targetNode); + + if (discard == VIR_TRISTATE_BOOL_ABSENT) + discard = virDomainNumaGetNodeDiscard(def->numa, mem->targetNode); } if (memAccess == VIR_DOMAIN_MEMORY_ACCESS_DEFAULT) memAccess = def->mem.access; + if (discard == VIR_TRISTATE_BOOL_ABSENT) + discard = def->mem.discard; + if (virDomainNumatuneGetMode(def->numa, mem->targetNode, &mode) < 0 && virDomainNumatuneGetMode(def->numa, -1, &mode) < 0) mode = VIR_DOMAIN_NUMATUNE_MEM_STRICT; @@ -3124,6 +3131,20 @@ qemuBuildMemoryBackendStr(virJSONValuePtr *backendProps, NULL) < 0) goto cleanup; + if (!mem->nvdimmPath && + discard == VIR_TRISTATE_BOOL_YES) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("this QEMU doesn't support memory discard")); + goto cleanup; + } + + if (virJSONValueObjectAdd(props, + "B:discard-data", true, + NULL) < 0) + goto cleanup; + } + switch (memAccess) { case VIR_DOMAIN_MEMORY_ACCESS_SHARED: if (virJSONValueObjectAdd(props, "b:share", true, NULL) < 0) diff --git a/tests/qemuxml2argvdata/hugepages-pages7.args b/tests/qemuxml2argvdata/hugepages-pages7.args index 1cb598d692..02a98026eb 100644 --- a/tests/qemuxml2argvdata/hugepages-pages7.args +++ b/tests/qemuxml2argvdata/hugepages-pages7.args @@ -18,7 +18,8 @@ mem-path=/dev/hugepages1G/libvirt/qemu/-1-fedora,size=1073741824,\ host-nodes=1-3,policy=bind \ -device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \ -object memory-backend-file,id=memdimm1,prealloc=yes,\ -mem-path=/dev/hugepages2M/libvirt/qemu/-1-fedora,share=no,size=536870912 \ +mem-path=/dev/hugepages2M/libvirt/qemu/-1-fedora,discard-data=yes,share=no,\ +size=536870912 \ -device pc-dimm,node=0,memdev=memdimm1,id=dimm1,slot=1 \ -uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ diff --git a/tests/qemuxml2argvdata/hugepages-pages7.xml b/tests/qemuxml2argvdata/hugepages-pages7.xml index d75cf5afa3..28c72f85a7 100644 --- a/tests/qemuxml2argvdata/hugepages-pages7.xml +++ b/tests/qemuxml2argvdata/hugepages-pages7.xml @@ -43,7 +43,7 @@ <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </memballoon> - <memory model='dimm'> + <memory model='dimm' discard='no'> <source> <nodemask>1-3</nodemask> <pagesize unit='KiB'>1048576</pagesize> @@ -54,7 +54,7 @@ </target> <address type='dimm' slot='0'/> </memory> - <memory model='dimm' access='private'> + <memory model='dimm' access='private' discard='yes'> <target> <size unit='KiB'>524287</size> <node>0</node> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 74d930ebe2..481c1ec8bc 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -951,7 +951,8 @@ mymain(void) DO_TEST("hugepages-pages5", NONE); DO_TEST("hugepages-pages6", NONE); DO_TEST("hugepages-pages7", - QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_OBJECT_MEMORY_FILE); + QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_OBJECT_MEMORY_FILE, + QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD); DO_TEST("hugepages-memaccess", QEMU_CAPS_OBJECT_MEMORY_FILE, QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA); -- 2.16.1

On Fri, Apr 20, 2018 at 11:09:31AM +0200, Michal Privoznik wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=1480668
QEMU has this new feature memory-backend-file.discard-data=yes which is a nifty optimization. Basically, when qemu is quitting or on memory hotplug it calls munmap() and close() on the file that is backing the memory. However, this does not mean kernel won't stop touching that part of memory. It still might. With this feature enabled we tell kernel: "we don't need this memory nor data stored in it". This makes kernel drop the memory immediately without trying to sync memory with the mapped file.
Unfortunately, this cannot be turned on by default because we can't be sure when users really don't care about what happens to data after qemu dies. So it has to be opt-in. As usual, there are three places where one can configure memory attributes. This patch adds the feature to all of them.
But only tests one of the three ways. It would be nice to split the conf and qemu changes and provide a XML->XML test.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- docs/formatdomain.html.in | 34 ++++++++++++++++++++++-- docs/schemas/cputypes.rng | 5 ++++ docs/schemas/domaincommon.rng | 10 +++++++ src/conf/domain_conf.c | 39 ++++++++++++++++++++++++++-- src/conf/domain_conf.h | 3 +++ src/conf/numa_conf.c | 27 +++++++++++++++++++ src/conf/numa_conf.h | 3 +++ src/libvirt_private.syms | 1 + src/qemu/qemu_command.c | 27 ++++++++++++++++--- tests/qemuxml2argvdata/hugepages-pages7.args | 3 ++- tests/qemuxml2argvdata/hugepages-pages7.xml | 4 +-- tests/qemuxml2argvtest.c | 3 ++- 12 files changed, 148 insertions(+), 11 deletions(-)
@@ -26658,7 +26690,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, }
A perfect candidate to be split out in a separate function...
if (def->mem.nhugepages || def->mem.nosharepages || def->mem.locked - || def->mem.source || def->mem.access || def->mem.allocation) + || def->mem.source || def->mem.access || def->mem.allocation + || def->mem.discard)
... and converted to use virXMLFormatElement O:-)
{ virBufferAddLit(buf, "<memoryBacking>\n"); virBufferAdjustIndent(buf, 2); @@ -26677,6 +26710,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, if (def->mem.allocation) virBufferAsprintf(buf, "<allocation mode='%s'/>\n", virDomainMemoryAllocationTypeToString(def->mem.allocation)); + if (def->mem.discard) + virBufferAddLit(buf, "<discard/>\n");
virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "</memoryBacking>\n"); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 3c7eccb8ca..52d29124f1 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2107,6 +2107,7 @@ typedef enum {
struct _virDomainMemoryDef { virDomainMemoryAccess access; + int discard; /* enum virTristateBool */
You can use virTristateBool discard; directly
/* source */ virBitmapPtr sourceNodes; @@ -2269,6 +2270,8 @@ struct _virDomainMemtune { int source; /* enum virDomainMemorySource */ int access; /* enum virDomainMemoryAccess */ int allocation; /* enum virDomainMemoryAllocation */ + + int discard; /* enum virTristateBool */
Same here.
};
typedef struct _virDomainPowerManagement virDomainPowerManagement; diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c index 9307dd93d3..a1bbcfa945 100644 --- a/src/conf/numa_conf.c +++ b/src/conf/numa_conf.c @@ -77,6 +77,7 @@ struct _virDomainNuma { virBitmapPtr nodeset; /* host memory nodes where this guest node resides */ virDomainNumatuneMemMode mode; /* memory mode selection */ virDomainMemoryAccess memAccess; /* shared memory access configuration */ + int discard; /* discard-data for memory-backend-file, virTristateBool */
And here.
struct _virDomainNumaDistance { unsigned int value; /* locality value for node i->j or j->i */
Jano

On 04/26/2018 02:56 PM, Ján Tomko wrote:
On Fri, Apr 20, 2018 at 11:09:31AM +0200, Michal Privoznik wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=1480668
QEMU has this new feature memory-backend-file.discard-data=yes which is a nifty optimization. Basically, when qemu is quitting or on memory hotplug it calls munmap() and close() on the file that is backing the memory. However, this does not mean kernel won't stop touching that part of memory. It still might. With this feature enabled we tell kernel: "we don't need this memory nor data stored in it". This makes kernel drop the memory immediately without trying to sync memory with the mapped file.
Unfortunately, this cannot be turned on by default because we can't be sure when users really don't care about what happens to data after qemu dies. So it has to be opt-in. As usual, there are three places where one can configure memory attributes. This patch adds the feature to all of them.
But only tests one of the three ways.
There are always some test cases missing. I don't think it should be a show stopper. Do you? Because in that case a lot of patches without proper tests are slipping in.
It would be nice to split the conf and qemu changes and provide a XML->XML test.
Yay, more patches! Although I don't quite understand why. One patch without the other doesn't make any sense. Anybody backporting this (=me) would need to backport yet one more commit.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- docs/formatdomain.html.in | 34 ++++++++++++++++++++++-- docs/schemas/cputypes.rng | 5 ++++ docs/schemas/domaincommon.rng | 10 +++++++ src/conf/domain_conf.c | 39 ++++++++++++++++++++++++++-- src/conf/domain_conf.h | 3 +++ src/conf/numa_conf.c | 27 +++++++++++++++++++ src/conf/numa_conf.h | 3 +++ src/libvirt_private.syms | 1 + src/qemu/qemu_command.c | 27 ++++++++++++++++--- tests/qemuxml2argvdata/hugepages-pages7.args | 3 ++- tests/qemuxml2argvdata/hugepages-pages7.xml | 4 +-- tests/qemuxml2argvtest.c | 3 ++- 12 files changed, 148 insertions(+), 11 deletions(-)
@@ -26658,7 +26690,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, }
A perfect candidate to be split out in a separate function...
if (def->mem.nhugepages || def->mem.nosharepages || def->mem.locked - || def->mem.source || def->mem.access || def->mem.allocation) + || def->mem.source || def->mem.access || def->mem.allocation + || def->mem.discard)
... and converted to use virXMLFormatElement O:-)
Okay. I will separate it out. However, I'll leave the virXMLFormatElement change for somebody else.
{ virBufferAddLit(buf, "<memoryBacking>\n"); virBufferAdjustIndent(buf, 2); @@ -26677,6 +26710,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, if (def->mem.allocation) virBufferAsprintf(buf, "<allocation mode='%s'/>\n", virDomainMemoryAllocationTypeToString(def->mem.allocation)); + if (def->mem.discard) + virBufferAddLit(buf, "<discard/>\n");
virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "</memoryBacking>\n"); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 3c7eccb8ca..52d29124f1 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2107,6 +2107,7 @@ typedef enum {
struct _virDomainMemoryDef { virDomainMemoryAccess access; + int discard; /* enum virTristateBool */
You can use virTristateBool discard; directly
Can I? It's hard to track because every developer on the list have their own preference. So it's hard to tell who is going to review my patches and fit their taste.
/* source */ virBitmapPtr sourceNodes; @@ -2269,6 +2270,8 @@ struct _virDomainMemtune { int source; /* enum virDomainMemorySource */ int access; /* enum virDomainMemoryAccess */ int allocation; /* enum virDomainMemoryAllocation */ + + int discard; /* enum virTristateBool */
Same here.
};
typedef struct _virDomainPowerManagement virDomainPowerManagement; diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c index 9307dd93d3..a1bbcfa945 100644 --- a/src/conf/numa_conf.c +++ b/src/conf/numa_conf.c @@ -77,6 +77,7 @@ struct _virDomainNuma { virBitmapPtr nodeset; /* host memory nodes where this guest node resides */ virDomainNumatuneMemMode mode; /* memory mode selection */ virDomainMemoryAccess memAccess; /* shared memory access configuration */ + int discard; /* discard-data for memory-backend-file, virTristateBool */
And here.
struct _virDomainNumaDistance { unsigned int value; /* locality value for node i->j or j->i */
So what was the showstopper for this patch? I wanted to get this in upcoming release (and freeze is tomorrow). And having v5 for something trivial like this sounds unbelievable. Michal

On Thu, Apr 26, 2018 at 18:00:15 +0200, Michal Privoznik wrote:
On 04/26/2018 02:56 PM, Ján Tomko wrote:
On Fri, Apr 20, 2018 at 11:09:31AM +0200, Michal Privoznik wrote:
[...]
So what was the showstopper for this patch? I wanted to get this in upcoming release (and freeze is tomorrow). And having v5 for something trivial like this sounds unbelievable.
I don't think that this tone is warranted. Even if you would get an ACK/rb for this patch you would not make it into the release. The review was sent 24 seconds _after_ the release-candidate was tagged: Date: Thu, 26 Apr 2018 14:56:58 +0200 Subject: Re: [libvirt] [PATCH v4 5/5] qemu: Introduce memoryBacking/discard tag v4.3.0-rc1 TaggerDate: Thu Apr 26 14:56:34 2018 +0200 which was announced on the mailing list 15 minutes later. Date: Thu, 26 Apr 2018 15:12:05 +0200 Subject: [libvirt] Entering freeze for libvirt-4.3.0 While I don't want to question your supernatural patch-fixing skill, fixing the typos and the mailing list delay would easily consume the 15 minutes until the freeze was announced. And it could be even less than that as the tag was probably pushed prior to sending the anouncement.

On 04/26/2018 09:34 PM, Peter Krempa wrote:
On Thu, Apr 26, 2018 at 18:00:15 +0200, Michal Privoznik wrote:
On 04/26/2018 02:56 PM, Ján Tomko wrote:
On Fri, Apr 20, 2018 at 11:09:31AM +0200, Michal Privoznik wrote:
[...]
So what was the showstopper for this patch? I wanted to get this in upcoming release (and freeze is tomorrow). And having v5 for something trivial like this sounds unbelievable.
I don't think that this tone is warranted.
I'm genuinely asking, because it is not obvious to me what was the major problem.
Even if you would get an ACK/rb for this patch you would not make it into the release. The review was sent 24 seconds _after_ the release-candidate was tagged:
Shoot. 24 seconds.
While I don't want to question your supernatural patch-fixing skill, fixing the typos and the mailing list delay would easily consume the 15 minutes until the freeze was announced. And it could be even less than that as the tag was probably pushed prior to sending the anouncement.
That's why I usually paste diff what needs to be squashed in and say ACK. It also helps encouraging contributors IMO. Unless it is something conceptual which renders patch needless. Michal
participants (3)
-
Ján Tomko
-
Michal Privoznik
-
Peter Krempa