[libvirt] [PATCHv1 03/12] qemu_monitor: Introduce qemuMonitorGetCPUModelBaseline (query-cpu-model-baseline)

Collin Walling walling at linux.ibm.com
Wed Jun 27 22:37:44 UTC 2018


On 06/22/2018 12:42 AM, Chris Venteicher wrote:
> Wrap QMP query-cpu-model-baseline command transaction with QEMU.
> ---
>  src/qemu/qemu_monitor.c      | 13 ++++++++
>  src/qemu/qemu_monitor.h      |  5 +++
>  src/qemu/qemu_monitor_json.c | 65 ++++++++++++++++++++++++++++++++++++
>  src/qemu/qemu_monitor_json.h |  7 ++++
>  4 files changed, 90 insertions(+)
> 
> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
> index 16de54dac7..c5c640b0d8 100644
> --- a/src/qemu/qemu_monitor.c
> +++ b/src/qemu/qemu_monitor.c
> @@ -3738,6 +3738,19 @@ qemuMonitorCPUModelInfoCopy(const qemuMonitorCPUModelInfo *orig)
>      return NULL;
>  }
>  
> +int
> +qemuMonitorGetCPUModelBaseline(qemuMonitorPtr mon,
> +                               qemuMonitorCPUModelInfoPtr model_a,
> +                               qemuMonitorCPUModelInfoPtr model_b,
> +                               qemuMonitorCPUModelInfoPtr *model_baseline)
> +{
> +    VIR_DEBUG("model_a->name=%s", model_a->name);
> +    VIR_DEBUG("model_b->name=%s", model_b->name);

It might be useful to also print out nprops here too, so debuggers can at least see that
the features are at least present in the object.

> +
> +    QEMU_CHECK_MONITOR(mon);
> +
> +    return qemuMonitorJSONGetCPUModelBaseline(mon, model_a, model_b, model_baseline);
> +}
>  
>  int
>  qemuMonitorGetCommands(qemuMonitorPtr mon,

[...]

> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> index afbf000fa2..729578414b 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c
> @@ -5553,6 +5553,71 @@ qemuMonitorJSONGetCPUModelExpansion(qemuMonitorPtr mon,
>  }
>  
>  
> +/* Note: *model_baseline == NULL && return == 0 if command not supported by QEMU
> + */
> +int
> +qemuMonitorJSONGetCPUModelBaseline(qemuMonitorPtr mon,
> +                                   qemuMonitorCPUModelInfoPtr model_a,
> +                                   qemuMonitorCPUModelInfoPtr model_b,
> +                                   qemuMonitorCPUModelInfoPtr *model_baseline)
> +{
> +    int ret = -1;
> +    virJSONValuePtr cmd = NULL;
> +    virJSONValuePtr reply = NULL;
> +    virJSONValuePtr data = NULL;
> +    virJSONValuePtr modela = NULL;
> +    virJSONValuePtr modelb = NULL;
> +    virJSONValuePtr cpu_model = NULL;
> +
> +    *model_baseline = NULL;
> +
> +    if (!(modela = qemuMonitorJSONBuildCPUModelInfoToJSON(model_a)))
> +        goto cleanup;
> +
> +    if (!(modelb = qemuMonitorJSONBuildCPUModelInfoToJSON(model_b)))
> +        goto cleanup;

Small nit: maybe combine the above two into one if-statement?

Other than that, this patch looks good to me.

[...]


-- 
Respectfully,
- Collin Walling




More information about the libvir-list mailing list