[PATCH v1] qemu: monitor: substitute missing model name for host-passthrough

Collin Walling walling at linux.ibm.com
Fri Jun 26 18:31:08 UTC 2020


On 6/26/20 3:22 AM, Peter Krempa wrote:
> On Thu, Jun 25, 2020 at 17:58:46 -0400, Collin Walling wrote:
>> When executing the hypervisor-cpu-compare/baseline commands and
>> the XML file contains a CPU definition using host-passthrough
>> and no model name, the commands will fail and return an error
>> message from the QMP response.
> 
> This kind of logic does not seem to belong ...
> 
>> Let's fix this by checking for host-passthrough and a missing
>> model name when converting a CPU definition to a JSON object.
>> If these conditions are matched, then the JSON object will be
>> constructed using "host" as the model name.
>>
>> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1850680
>>
>> Signed-off-by: Collin Walling <walling at linux.ibm.com>
>> ---
>>  src/qemu/qemu_monitor_json.c | 13 ++++++++++++-
>>  1 file changed, 12 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
>> index 3070c1e6b3..448a3a9356 100644
>> --- a/src/qemu/qemu_monitor_json.c
>> +++ b/src/qemu/qemu_monitor_json.c
>> @@ -5804,9 +5804,20 @@ qemuMonitorJSONMakeCPUModel(virCPUDefPtr cpu,
>>  {
>>      virJSONValuePtr model = virJSONValueNewObject();
>>      virJSONValuePtr props = NULL;
>> +    const char *model_name = cpu->model;
>>      size_t i;
>>  
>> -    if (virJSONValueObjectAppendString(model, "name", cpu->model) < 0)
>> +    if (!model_name) {
>> +        if (cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH) {
>> +            model_name = "host";
>> +        } else {
>> +            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>> +                           _("cpu parameter is missing a model name"));
>> +            goto error;
>> +        }
>> +    }
> 
> ... to the monitor code, where we try to just deal with the monitor
> itself rather than hiding any logic.
> 

That's fair. Perhaps it should belong to the qemu driver code after the
CPU XML to a CPU def conversion. I'm also unsure if "host" is an s390
specific thing, or if other archs use it as well.

> But the final word needs to be from Jirka, but he is on holidays until
> the end of next week.
> 
> 
>> +
>> +    if (virJSONValueObjectAppendString(model, "name", model_name) < 0)
>>          goto error;
>>  
>>      if (cpu->nfeatures || !migratable) {
>> -- 
>> 2.26.2
>>
> 


-- 
Regards,
Collin

Stay safe and stay healthy




More information about the libvir-list mailing list