query-cpu-model-baseline/comparison will accept a list of features as part of the command. Since CPUs may be defined with CPU feature policies, let's parse it to the appropriate boolean that the QMP command expects. A feature that is set to required, force, or if it is a hypervisor CPU feature (-1), then set the property value to true. Otherwise (optional, disabled) set the value to false. Signed-off-by: Collin Walling <walling@xxxxxxxxxxxxx> --- src/qemu/qemu_monitor_json.c | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 3c6c330..77113c0 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -5787,6 +5787,7 @@ qemuMonitorJSONMakeCPUModel(virCPUDefPtr cpu, { virJSONValuePtr model = NULL; virJSONValuePtr props = NULL; + size_t i; if (!(model = virJSONValueNewObject())) goto error; @@ -5794,12 +5795,31 @@ qemuMonitorJSONMakeCPUModel(virCPUDefPtr cpu, if (virJSONValueObjectAppendString(model, "name", cpu->model) < 0) goto error; - if (!migratable) { - if (!(props = virJSONValueNewObject()) || - virJSONValueObjectAppendBoolean(props, "migratable", false) < 0 || - virJSONValueObjectAppend(model, "props", props) < 0) + if (cpu->nfeatures || !migratable) { + if (!(props = virJSONValueNewObject())) + goto error; + + for (i = 0; i < cpu->nfeatures; i++) { + char *name = cpu->features[i].name; + bool enabled = false; + + /* policy may be reported as -1 if the CPU def is a host model */ + if (cpu->features[i].policy == VIR_CPU_FEATURE_REQUIRE || + cpu->features[i].policy == VIR_CPU_FEATURE_FORCE || + cpu->features[i].policy == -1) + enabled = true; + + if (virJSONValueObjectAppendBoolean(props, name, enabled) < 0) + goto error; + } + + if (!migratable && + virJSONValueObjectAppendBoolean(props, "migratable", false) < 0) { + goto error; + } + + if (virJSONValueObjectAppend(model, "props", props) < 0) goto error; - props = NULL; } return model; -- 2.7.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list