mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-11-03 11:51:11 +00:00
qemu_monitor: add features to CPU model for QMP command
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@linux.ibm.com> Message-Id: <1568924706-2311-5-git-send-email-walling@linux.ibm.com> Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
67a4dcc151
commit
708f48525a
@ -5690,6 +5690,7 @@ qemuMonitorJSONMakeCPUModel(virCPUDefPtr cpu,
|
|||||||
{
|
{
|
||||||
virJSONValuePtr model = NULL;
|
virJSONValuePtr model = NULL;
|
||||||
virJSONValuePtr props = NULL;
|
virJSONValuePtr props = NULL;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
if (!(model = virJSONValueNewObject()))
|
if (!(model = virJSONValueNewObject()))
|
||||||
goto error;
|
goto error;
|
||||||
@ -5697,12 +5698,31 @@ qemuMonitorJSONMakeCPUModel(virCPUDefPtr cpu,
|
|||||||
if (virJSONValueObjectAppendString(model, "name", cpu->model) < 0)
|
if (virJSONValueObjectAppendString(model, "name", cpu->model) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (!migratable) {
|
if (cpu->nfeatures || !migratable) {
|
||||||
if (!(props = virJSONValueNewObject()) ||
|
if (!(props = virJSONValueNewObject()))
|
||||||
virJSONValueObjectAppendBoolean(props, "migratable", false) < 0 ||
|
goto error;
|
||||||
virJSONValueObjectAppend(model, "props", props) < 0)
|
|
||||||
|
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;
|
goto error;
|
||||||
props = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return model;
|
return model;
|
||||||
|
Loading…
Reference in New Issue
Block a user