[libvirt] [PATCH v4 8/8] qemu_driver: hook up query-cpu-model-comparison
Boris Fiuczynski
fiuczy at linux.ibm.com
Fri Jul 26 09:59:18 UTC 2019
On 7/25/19 8:26 PM, Collin Walling wrote:
> [...]
>
>>> +
>>> +virCPUCompareResult
>>> +virQEMUCapsCPUModelComparison(virQEMUCapsPtr qemuCaps,
>>> + const char *libDir,
>>> + uid_t runUid,
>>> + gid_t runGid,
>>> + virCPUDefPtr cpu_a,
>>> + virCPUDefPtr cpu_b,
>>> + bool failIncompatible)
>>> +{
>>> + qemuProcessQMPPtr proc = NULL;
>>> + qemuMonitorCPUModelInfoPtr result = NULL;
>
> Set ret = VIR_CPU_COMPARE_INCOMPATIBLE
>
>>> + int ret = -1;
>>> +
>>> + if (!(proc = qemuProcessQMPNew(qemuCaps->binary, libDir,
>>> + runUid, runGid, false)))
>>> + goto cleanup;
>>> +
>>> + if (qemuProcessQMPStart(proc) < 0)
>>> + goto cleanup;
>>> +
>>> + if (qemuMonitorGetCPUModelComparison(proc->mon, cpu_a->model,
>>> + cpu_a->nfeatures,
>>> cpu_a->features,
>>> + cpu_b->model,
>>> cpu_b->nfeatures,
>>> + cpu_b->features, &result) < 0)
>>> + goto cleanup;
>>> +
>>> + if (STREQ(result->name, "incompatible") ||
>>> + STREQ(result->name, "subset"))
>>> + ret = VIR_CPU_COMPARE_INCOMPATIBLE;
>>> + else if (STREQ(result->name, "identical"))
>>> + ret = VIR_CPU_COMPARE_IDENTICAL;
>>> + else if (STREQ(result->name, "superset"))
>>> + ret = VIR_CPU_COMPARE_SUPERSET;
>
> and change this:
>
>>> +
>>> + if (failIncompatible && ret == VIR_CPU_COMPARE_INCOMPATIBLE) {
>>> + ret = VIR_CPU_COMPARE_ERROR;
>>> + virReportError(VIR_ERR_CPU_INCOMPATIBLE, NULL);
>>> + }
>>> +
>>> + cleanup:
>>> + if (ret < 0)
>>> + virQEMUCapsLogProbeFailure(qemuCaps->binary);
>
> To this:
>
> cleanup:
> if (failIncompatible && ret == VIR_CPU_COMPARE_INCOMPATIBLE) {
> ret = VIR_CPU_COMPARE_ERROR;
> virReportError(VIR_ERR_CPU_INCOMPATIBLE, NULL);
> virQEMUCapsLogProbeFailure(qemuCaps->binary);
> }
>
>>> +
>>> + qemuMonitorCPUModelInfoFree(result);
>>> + qemuProcessQMPFree(proc);
>>> + return ret;
>>> +}
>
> And now the output will look like this when the xml contains an
> erroneous CPU model or feature:
>
> virsh hypervisor-cpu-compare cpufail.xml
> CPU described in cpufail.xml is incompatible with the CPU provided by
> hypervisor on the host
>
>
> virsh hypervisor-cpu-compare cpufail.xml --error
> error: Failed to compare hypervisor CPU with cpufail.xml
> error: the CPU is incompatible with host CPU
>
> If this output is not acceptable, then perhaps we should further explore
> option 2 that I described on patch 5.
>
> [...]
Please see my response in patch 5.
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
--
Mit freundlichen Grüßen/Kind regards
Boris Fiuczynski
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Matthias Hartmann
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
More information about the libvir-list
mailing list