[libvirt] [PATCH v5 0/7] Enable memory-backend-file.discard-data

v5 of: https://www.redhat.com/archives/libvir-list/2018-April/msg02029.html diff to v4: - last patch in the original series is split into two, - more tests added - couple of small changes (e.g. s/int/virTristateBool/) Michal Privoznik (7): 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 conf: Move virDomainMemtune formatting into a separate function conf: Introduce memoryBacking/discard qemu: Implement memoryBacking/discard docs/formatdomain.html.in | 34 +- docs/schemas/cputypes.rng | 5 + docs/schemas/domaincommon.rng | 10 + src/conf/domain_conf.c | 150 +- 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 | 22 + src/qemu/qemu_capabilities.h | 4 + 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-pages.args | 12 +- tests/qemuxml2argvdata/hugepages-pages.xml | 3 +- tests/qemuxml2argvdata/hugepages-pages3.args | 3 +- tests/qemuxml2argvdata/hugepages-pages3.xml | 4 +- tests/qemuxml2argvdata/hugepages-pages7.args | 3 +- tests/qemuxml2argvdata/hugepages-pages7.xml | 4 +- tests/qemuxml2argvtest.c | 9 +- tests/qemuxml2xmloutdata/hugepages-pages.xml | 3 +- tests/qemuxml2xmloutdata/hugepages-pages3.xml | 4 +- 32 files changed, 3337 insertions(+), 2869 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> Reviewed-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_monitor_json.c | 81 +++++++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 34 deletions(-) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index e0ea553c41..ce7bc9e8e3 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6051,6 +6051,51 @@ int qemuMonitorJSONSetObjectProperty(qemuMonitorPtr mon, #undef MAKE_SET_CMD +static int +qemuMonitorJSONParsePropsList(virJSONValuePtr cmd, + virJSONValuePtr reply, + char ***props) +{ + virJSONValuePtr data; + char **proplist = NULL; + size_t n = 0; + size_t i; + int ret = -1; + + if (qemuMonitorJSONCheckReply(cmd, reply, VIR_JSON_TYPE_ARRAY) < 0) + goto cleanup; + + data = virJSONValueObjectGetArray(reply, "return"); + n = virJSONValueArraySize(data); + + /* null-terminated list */ + if (VIR_ALLOC_N(proplist, n + 1) < 0) + goto cleanup; + + for (i = 0; i < n; i++) { + virJSONValuePtr child = virJSONValueArrayGet(data, i); + const char *tmp; + + if (!(tmp = virJSONValueObjectGetString(child, "name"))) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("reply data was missing 'name'")); + goto cleanup; + } + + if (VIR_STRDUP(proplist[i], tmp) < 0) + goto cleanup; + } + + ret = n; + *props = proplist; + proplist = NULL; + + cleanup: + virStringListFree(proplist); + return ret; +} + + int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon, const char *device, char ***props) @@ -6058,10 +6103,6 @@ int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon, int ret = -1; virJSONValuePtr cmd; virJSONValuePtr reply = NULL; - virJSONValuePtr data; - char **proplist = NULL; - size_t n = 0; - size_t i; *props = NULL; @@ -6078,38 +6119,10 @@ int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon, goto cleanup; } - if (qemuMonitorJSONCheckReply(cmd, reply, VIR_JSON_TYPE_ARRAY) < 0) - goto cleanup; - - data = virJSONValueObjectGetArray(reply, "return"); - n = virJSONValueArraySize(data); - - /* null-terminated list */ - if (VIR_ALLOC_N(proplist, n + 1) < 0) - goto cleanup; - - for (i = 0; i < n; i++) { - virJSONValuePtr child = virJSONValueArrayGet(data, i); - const char *tmp; - - if (!(tmp = virJSONValueObjectGetString(child, "name"))) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("device-list-properties reply data was missing 'name'")); - goto cleanup; - } - - if (VIR_STRDUP(proplist[i], tmp) < 0) - goto cleanup; - } - - ret = n; - *props = proplist; - proplist = NULL; - + ret = qemuMonitorJSONParsePropsList(cmd, reply, props); cleanup: - virStringListFree(proplist); - virJSONValueFree(cmd); virJSONValueFree(reply); + virJSONValueFree(cmd); return ret; } -- 2.16.1

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> Reviewed-by: Ján Tomko <jtomko@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 39187915b0..3d7ca3ccfc 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 a93844f77b..33dc521e83 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 ce7bc9e8e3..e2e0004e4d 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6127,6 +6127,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 ed5f29b20a..e86b58f7ea 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

This capability tracks if qemu has "qom-list-properties" monitor command. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_capabilities.c | 4 ++++ src/qemu/qemu_capabilities.h | 3 +++ 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, 11 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 64f536b1b0..16a8aa92ab 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -476,6 +476,9 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "nbd-tls", "tpm-crb", "pr-manager-helper", + + /* 295 */ + "qom-list-properties", ); @@ -984,6 +987,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 6e3e2e0003..4a25fbb6f2 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -461,6 +461,9 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_DEVICE_TPM_CRB, /* -device tpm-crb */ QEMU_CAPS_PR_MANAGER_HELPER, /* -object pr-manager-helper */ + /* 295 */ + 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 6fbb105df7..9aa913c9ec 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml @@ -159,6 +159,7 @@ <flag name='disk-write-cache'/> <flag name='nbd-tls'/> <flag name='pr-manager-helper'/> + <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 b03bf59d30..5bee534353 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -156,6 +156,7 @@ <flag name='disk-write-cache'/> <flag name='nbd-tls'/> <flag name='pr-manager-helper'/> + <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 81a4acf966..3dc65d77ae 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -121,6 +121,7 @@ <flag name='disk-write-cache'/> <flag name='nbd-tls'/> <flag name='pr-manager-helper'/> + <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 0dce649e90..66fc7782b8 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -197,6 +197,7 @@ <flag name='nbd-tls'/> <flag name='tpm-crb'/> <flag name='pr-manager-helper'/> + <flag name='qom-list-properties'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>390060</microcodeVersion> -- 2.16.1

This capability tracks if memory-backend-file has discard-data attribute or not. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@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 16a8aa92ab..2e2190e80f 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -479,6 +479,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, /* 295 */ "qom-list-properties", + "memory-backend-file.discard-data", ); @@ -1375,6 +1376,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, @@ -2132,6 +2142,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 4a25fbb6f2..adac3b63cf 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -463,6 +463,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 295 */ QEMU_CAPS_QOM_LIST_PROPERTIES, /* qom-list-properties monitor command */ + QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD, /* -object memory-backend-file,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 9aa913c9ec..362f6f20b5 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml @@ -160,9 +160,10 @@ <flag name='nbd-tls'/> <flag name='pr-manager-helper'/> <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 5bee534353..340d668d29 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -157,9 +157,10 @@ <flag name='nbd-tls'/> <flag name='pr-manager-helper'/> <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 3dc65d77ae..255387e349 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -122,6 +122,7 @@ <flag name='nbd-tls'/> <flag name='pr-manager-helper'/> <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 66fc7782b8..a70370ba53 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -198,9 +198,10 @@ <flag name='tpm-crb'/> <flag name='pr-manager-helper'/> <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

At the same time convert the code to use virXMLFormatElement. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/conf/domain_conf.c | 114 +++++++++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 51 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 5d9148c1b1..6786d81c9b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -26555,6 +26555,67 @@ virDomainIOMMUDefFormat(virBufferPtr buf, } +static int +virDomainMemtuneFormat(virBufferPtr buf, + const virDomainMemtune *mem) +{ + virBuffer childBuf = VIR_BUFFER_INITIALIZER; + int ret = -1; + + virBufferSetChildIndent(&childBuf, buf); + + if (virMemoryLimitIsSet(mem->hard_limit)) { + virBufferAsprintf(&childBuf, + "<hard_limit unit='KiB'>%llu</hard_limit>\n", + mem->hard_limit); + } + if (virMemoryLimitIsSet(mem->soft_limit)) { + virBufferAsprintf(&childBuf, + "<soft_limit unit='KiB'>%llu</soft_limit>\n", + mem->soft_limit); + } + if (mem->min_guarantee) { + virBufferAsprintf(&childBuf, + "<min_guarantee unit='KiB'>%llu</min_guarantee>\n", + mem->min_guarantee); + } + if (virMemoryLimitIsSet(mem->swap_hard_limit)) { + virBufferAsprintf(&childBuf, + "<swap_hard_limit unit='KiB'>%llu</swap_hard_limit>\n", + mem->swap_hard_limit); + } + + if (virXMLFormatElement(buf, "memtune", NULL, &childBuf) < 0) + goto cleanup; + + virBufferSetChildIndent(&childBuf, buf); + + if (mem->nhugepages) + virDomainHugepagesFormat(&childBuf, mem->hugepages, mem->nhugepages); + if (mem->nosharepages) + virBufferAddLit(&childBuf, "<nosharepages/>\n"); + if (mem->locked) + virBufferAddLit(&childBuf, "<locked/>\n"); + if (mem->source) + virBufferAsprintf(&childBuf, "<source type='%s'/>\n", + virDomainMemorySourceTypeToString(mem->source)); + if (mem->access) + virBufferAsprintf(&childBuf, "<access mode='%s'/>\n", + virDomainMemoryAccessTypeToString(mem->access)); + if (mem->allocation) + virBufferAsprintf(&childBuf, "<allocation mode='%s'/>\n", + virDomainMemoryAllocationTypeToString(mem->allocation)); + + if (virXMLFormatElement(buf, "memoryBacking", NULL, &childBuf) < 0) + goto cleanup; + + ret = 0; + cleanup: + virBufferFreeAndReset(&childBuf); + return ret; +} + + /* This internal version appends to an existing buffer * (possibly with auto-indent), rather than flattening * to string. @@ -26693,57 +26754,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, } virBufferFreeAndReset(&childrenBuf); - /* add memtune only if there are any */ - if (virMemoryLimitIsSet(def->mem.hard_limit) || - virMemoryLimitIsSet(def->mem.soft_limit) || - virMemoryLimitIsSet(def->mem.swap_hard_limit) || - def->mem.min_guarantee) { - virBufferAddLit(buf, "<memtune>\n"); - virBufferAdjustIndent(buf, 2); - if (virMemoryLimitIsSet(def->mem.hard_limit)) { - virBufferAsprintf(buf, "<hard_limit unit='KiB'>" - "%llu</hard_limit>\n", def->mem.hard_limit); - } - if (virMemoryLimitIsSet(def->mem.soft_limit)) { - virBufferAsprintf(buf, "<soft_limit unit='KiB'>" - "%llu</soft_limit>\n", def->mem.soft_limit); - } - if (def->mem.min_guarantee) { - virBufferAsprintf(buf, "<min_guarantee unit='KiB'>" - "%llu</min_guarantee>\n", def->mem.min_guarantee); - } - if (virMemoryLimitIsSet(def->mem.swap_hard_limit)) { - virBufferAsprintf(buf, "<swap_hard_limit unit='KiB'>" - "%llu</swap_hard_limit>\n", def->mem.swap_hard_limit); - } - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "</memtune>\n"); - } - - if (def->mem.nhugepages || def->mem.nosharepages || def->mem.locked - || def->mem.source || def->mem.access || def->mem.allocation) - { - virBufferAddLit(buf, "<memoryBacking>\n"); - virBufferAdjustIndent(buf, 2); - if (def->mem.nhugepages) - virDomainHugepagesFormat(buf, def->mem.hugepages, def->mem.nhugepages); - if (def->mem.nosharepages) - virBufferAddLit(buf, "<nosharepages/>\n"); - if (def->mem.locked) - virBufferAddLit(buf, "<locked/>\n"); - if (def->mem.source) - virBufferAsprintf(buf, "<source type='%s'/>\n", - virDomainMemorySourceTypeToString(def->mem.source)); - if (def->mem.access) - virBufferAsprintf(buf, "<access mode='%s'/>\n", - virDomainMemoryAccessTypeToString(def->mem.access)); - if (def->mem.allocation) - virBufferAsprintf(buf, "<allocation mode='%s'/>\n", - virDomainMemoryAllocationTypeToString(def->mem.allocation)); - - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "</memoryBacking>\n"); - } + if (virDomainMemtuneFormat(buf, &def->mem) < 0) + goto error; if (virDomainCpuDefFormat(buf, def) < 0) goto error; -- 2.16.1

On Fri, May 11, 2018 at 05:09:16PM +0200, Michal Privoznik wrote:
At the same time convert the code to use virXMLFormatElement.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/conf/domain_conf.c | 114 +++++++++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 51 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

QEMU has possibility to call madvise(.., MADV_REMOVE) in some cases. Expose this feature to users by new element/attribute discard. 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 | 36 ++++++++++++++++++++++++++- src/conf/domain_conf.h | 3 +++ src/conf/numa_conf.c | 27 ++++++++++++++++++++ src/conf/numa_conf.h | 3 +++ src/libvirt_private.syms | 1 + tests/qemuxml2argvdata/hugepages-pages.xml | 3 ++- tests/qemuxml2argvdata/hugepages-pages3.xml | 4 +-- tests/qemuxml2argvdata/hugepages-pages7.xml | 4 +-- tests/qemuxml2xmloutdata/hugepages-pages.xml | 3 ++- tests/qemuxml2xmloutdata/hugepages-pages3.xml | 4 +-- 13 files changed, 126 insertions(+), 11 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 072f9a0fdc..80172c18d0 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.4.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.4.0</span> </p> <p> @@ -7883,7 +7899,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> @@ -7937,6 +7953,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.4.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 8c446ca418..13af5b74a4 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> @@ -5124,6 +5129,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 6786d81c9b..86229db654 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5516,6 +5516,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) @@ -5548,6 +5562,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: @@ -5560,7 +5577,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: @@ -15673,6 +15689,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) @@ -18999,6 +19025,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) @@ -25259,6 +25288,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); @@ -26605,6 +26637,8 @@ virDomainMemtuneFormat(virBufferPtr buf, if (mem->allocation) virBufferAsprintf(&childBuf, "<allocation mode='%s'/>\n", virDomainMemoryAllocationTypeToString(mem->allocation)); + if (mem->discard) + virBufferAddLit(&childBuf, "<discard/>\n"); if (virXMLFormatElement(buf, "memoryBacking", NULL, &childBuf) < 0) goto cleanup; diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 15d228ba9e..07d04fb2f9 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2105,6 +2105,7 @@ typedef enum { struct _virDomainMemoryDef { virDomainMemoryAccess access; + virTristateBool discard; /* source */ virBitmapPtr sourceNodes; @@ -2267,6 +2268,8 @@ struct _virDomainMemtune { int source; /* enum virDomainMemorySource */ int access; /* enum virDomainMemoryAccess */ int allocation; /* enum virDomainMemoryAllocation */ + + virTristateBool discard; }; typedef struct _virDomainPowerManagement virDomainPowerManagement; diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c index 9307dd93d3..bf42946a99 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, } +virTristateBool +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..85269be565 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); +virTristateBool 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 5fea1bca41..d28a751ebd 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/tests/qemuxml2argvdata/hugepages-pages.xml b/tests/qemuxml2argvdata/hugepages-pages.xml index f9270782d4..cba83e754c 100644 --- a/tests/qemuxml2argvdata/hugepages-pages.xml +++ b/tests/qemuxml2argvdata/hugepages-pages.xml @@ -8,6 +8,7 @@ <page size='2048' unit='KiB' nodeset='1'/> <page size='1048576' unit='KiB' nodeset='0,2-3'/> </hugepages> + <discard/> </memoryBacking> <vcpu placement='static'>4</vcpu> <numatune> @@ -21,7 +22,7 @@ <cpu> <numa> <cell id='0' cpus='0' memory='1048576' unit='KiB'/> - <cell id='1' cpus='1' memory='1048576' unit='KiB'/> + <cell id='1' cpus='1' memory='1048576' unit='KiB' discard='no'/> <cell id='2' cpus='2' memory='1048576' unit='KiB'/> <cell id='3' cpus='3' memory='1048576' unit='KiB'/> </numa> diff --git a/tests/qemuxml2argvdata/hugepages-pages3.xml b/tests/qemuxml2argvdata/hugepages-pages3.xml index 3d3b3f3cc3..147acc4c95 100644 --- a/tests/qemuxml2argvdata/hugepages-pages3.xml +++ b/tests/qemuxml2argvdata/hugepages-pages3.xml @@ -15,8 +15,8 @@ </os> <cpu> <numa> - <cell id='0' cpus='0' memory='262144' unit='KiB'/> - <cell id='1' cpus='1' memory='786432' unit='KiB'/> + <cell id='0' cpus='0' memory='262144' unit='KiB' discard='no'/> + <cell id='1' cpus='1' memory='786432' unit='KiB' discard='yes'/> </numa> </cpu> <clock offset='utc'/> 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/qemuxml2xmloutdata/hugepages-pages.xml b/tests/qemuxml2xmloutdata/hugepages-pages.xml index 498610a217..292454588e 100644 --- a/tests/qemuxml2xmloutdata/hugepages-pages.xml +++ b/tests/qemuxml2xmloutdata/hugepages-pages.xml @@ -8,6 +8,7 @@ <page size='2048' unit='KiB' nodeset='1'/> <page size='1048576' unit='KiB' nodeset='0,2-3'/> </hugepages> + <discard/> </memoryBacking> <vcpu placement='static'>4</vcpu> <numatune> @@ -21,7 +22,7 @@ <cpu> <numa> <cell id='0' cpus='0' memory='1048576' unit='KiB'/> - <cell id='1' cpus='1' memory='1048576' unit='KiB'/> + <cell id='1' cpus='1' memory='1048576' unit='KiB' discard='no'/> <cell id='2' cpus='2' memory='1048576' unit='KiB'/> <cell id='3' cpus='3' memory='1048576' unit='KiB'/> </numa> diff --git a/tests/qemuxml2xmloutdata/hugepages-pages3.xml b/tests/qemuxml2xmloutdata/hugepages-pages3.xml index be21c3eddd..90e6efa5ea 100644 --- a/tests/qemuxml2xmloutdata/hugepages-pages3.xml +++ b/tests/qemuxml2xmloutdata/hugepages-pages3.xml @@ -15,8 +15,8 @@ </os> <cpu> <numa> - <cell id='0' cpus='0' memory='262144' unit='KiB'/> - <cell id='1' cpus='1' memory='786432' unit='KiB'/> + <cell id='0' cpus='0' memory='262144' unit='KiB' discard='no'/> + <cell id='1' cpus='1' memory='786432' unit='KiB' discard='yes'/> </numa> </cpu> <clock offset='utc'/> -- 2.16.1

On Fri, May 11, 2018 at 05:09:17PM +0200, Michal Privoznik wrote:
QEMU has possibility to call madvise(.., MADV_REMOVE) in some cases. Expose this feature to users by new element/attribute discard.
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 | 36 ++++++++++++++++++++++++++- src/conf/domain_conf.h | 3 +++ src/conf/numa_conf.c | 27 ++++++++++++++++++++ src/conf/numa_conf.h | 3 +++ src/libvirt_private.syms | 1 + tests/qemuxml2argvdata/hugepages-pages.xml | 3 ++- tests/qemuxml2argvdata/hugepages-pages3.xml | 4 +-- tests/qemuxml2argvdata/hugepages-pages7.xml | 4 +-- tests/qemuxml2xmloutdata/hugepages-pages.xml | 3 ++- tests/qemuxml2xmloutdata/hugepages-pages3.xml | 4 +-- 13 files changed, 126 insertions(+), 11 deletions(-)
diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c index 9307dd93d3..bf42946a99 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 */
s/int/virTristateBool/
struct _virDomainNumaDistance { unsigned int value; /* locality value for node i->j or j->i */ @@ -967,6 +980,7 @@ virDomainNumaDefCPUFormatXML(virBufferPtr buf, virDomainNumaPtr def) { virDomainMemoryAccess memAccess; + int discard;
here too.
char *cpustr; size_t ncells = virDomainNumaGetNodeCount(def); size_t i;
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> --- src/qemu/qemu_command.c | 27 ++++++++++++++++++++++++--- tests/qemuxml2argvdata/hugepages-pages.args | 12 ++++++------ tests/qemuxml2argvdata/hugepages-pages3.args | 3 ++- tests/qemuxml2argvdata/hugepages-pages7.args | 3 ++- tests/qemuxml2argvtest.c | 9 ++++++--- 5 files changed, 40 insertions(+), 14 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 81a9811d14..11ad77f145 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3029,6 +3029,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. @@ -3039,8 +3040,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, @@ -3050,12 +3050,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; @@ -3143,6 +3150,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-pages.args b/tests/qemuxml2argvdata/hugepages-pages.args index 7ece0272a0..b52cd581d5 100644 --- a/tests/qemuxml2argvdata/hugepages-pages.args +++ b/tests/qemuxml2argvdata/hugepages-pages.args @@ -11,20 +11,20 @@ QEMU_AUDIO_DRV=none \ -m 4096 \ -smp 4,sockets=4,cores=1,threads=1 \ -object memory-backend-file,id=ram-node0,prealloc=yes,\ -mem-path=/dev/hugepages1G/libvirt/qemu/-1-QEMUGuest1,size=1073741824,\ -host-nodes=0-3,policy=bind \ +mem-path=/dev/hugepages1G/libvirt/qemu/-1-QEMUGuest1,discard-data=yes,\ +size=1073741824,host-nodes=0-3,policy=bind \ -numa node,nodeid=0,cpus=0,memdev=ram-node0 \ -object memory-backend-file,id=ram-node1,prealloc=yes,\ mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,size=1073741824,\ host-nodes=0-3,policy=bind \ -numa node,nodeid=1,cpus=1,memdev=ram-node1 \ -object memory-backend-file,id=ram-node2,prealloc=yes,\ -mem-path=/dev/hugepages1G/libvirt/qemu/-1-QEMUGuest1,size=1073741824,\ -host-nodes=0-3,policy=bind \ +mem-path=/dev/hugepages1G/libvirt/qemu/-1-QEMUGuest1,discard-data=yes,\ +size=1073741824,host-nodes=0-3,policy=bind \ -numa node,nodeid=2,cpus=2,memdev=ram-node2 \ -object memory-backend-file,id=ram-node3,prealloc=yes,\ -mem-path=/dev/hugepages1G/libvirt/qemu/-1-QEMUGuest1,size=1073741824,\ -host-nodes=3,policy=bind \ +mem-path=/dev/hugepages1G/libvirt/qemu/-1-QEMUGuest1,discard-data=yes,\ +size=1073741824,host-nodes=3,policy=bind \ -numa node,nodeid=3,cpus=3,memdev=ram-node3 \ -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ -display none \ diff --git a/tests/qemuxml2argvdata/hugepages-pages3.args b/tests/qemuxml2argvdata/hugepages-pages3.args index 2fc701ca22..d55265cdd8 100644 --- a/tests/qemuxml2argvdata/hugepages-pages3.args +++ b/tests/qemuxml2argvdata/hugepages-pages3.args @@ -13,7 +13,8 @@ QEMU_AUDIO_DRV=none \ -object memory-backend-ram,id=ram-node0,size=268435456 \ -numa node,nodeid=0,cpus=0,memdev=ram-node0 \ -object memory-backend-file,id=ram-node1,prealloc=yes,\ -mem-path=/dev/hugepages1G/libvirt/qemu/-1-SomeDummyHugepagesGu,size=805306368 \ +mem-path=/dev/hugepages1G/libvirt/qemu/-1-SomeDummyHugepagesGu,\ +discard-data=yes,size=805306368 \ -numa node,nodeid=1,cpus=1,memdev=ram-node1 \ -uuid ef1bdff4-27f3-4e85-a807-5fb4d58463cc \ -display none \ 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/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 756ca7a77f..d4d64b0d21 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -919,11 +919,13 @@ mymain(void) QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-pages", QEMU_CAPS_OBJECT_MEMORY_RAM, - QEMU_CAPS_OBJECT_MEMORY_FILE); + QEMU_CAPS_OBJECT_MEMORY_FILE, + QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD); DO_TEST("hugepages-pages2", QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-pages3", QEMU_CAPS_OBJECT_MEMORY_RAM, - QEMU_CAPS_OBJECT_MEMORY_FILE); + QEMU_CAPS_OBJECT_MEMORY_FILE, + QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD); DO_TEST("hugepages-shared", QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE); @@ -933,7 +935,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, May 11, 2018 at 05:09:18PM +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.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_command.c | 27 ++++++++++++++++++++++++--- tests/qemuxml2argvdata/hugepages-pages.args | 12 ++++++------ tests/qemuxml2argvdata/hugepages-pages3.args | 3 ++- tests/qemuxml2argvdata/hugepages-pages7.args | 3 ++- tests/qemuxml2argvtest.c | 9 ++++++--- 5 files changed, 40 insertions(+), 14 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano
participants (2)
-
Ján Tomko
-
Michal Privoznik