[PATCH V4] Modify virCPUarmCompare to perform compare actions
Daniel Henrique Barboza
danielhb413 at gmail.com
Fri Oct 2 13:45:09 UTC 2020
On 9/24/20 11:12 AM, Zhenyu Zheng wrote:
> Modify virCPUarmCompare in cpu_arm.c to perform compare action.
> This patch only adds host to host CPU compare, the rest cases
> remains the same. This is useful for source and destination host
> compare during migrations to avoid migration between different
> CPU models that have different CPU freatures.
>
> Signed-off-by: Zhenyu Zheng <zheng.zhenyu at outlook.com>
> ---
Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> src/cpu/cpu_arm.c | 39 ++++++++++++++++++++++++++++++++++++---
> 1 file changed, 36 insertions(+), 3 deletions(-)
>
> diff --git a/src/cpu/cpu_arm.c b/src/cpu/cpu_arm.c
> index 939a3b8390..64bd0f03c2 100644
> --- a/src/cpu/cpu_arm.c
> +++ b/src/cpu/cpu_arm.c
> @@ -463,10 +463,43 @@ virCPUarmBaseline(virCPUDefPtr *cpus,
> }
>
> static virCPUCompareResult
> -virCPUarmCompare(virCPUDefPtr host G_GNUC_UNUSED,
> - virCPUDefPtr cpu G_GNUC_UNUSED,
> - bool failMessages G_GNUC_UNUSED)
> +virCPUarmCompare(virCPUDefPtr host,
> + virCPUDefPtr cpu,
> + bool failIncompatible
> +)
> {
> + /* Only support host to host CPU compare for ARM*/
> + if (cpu->type != VIR_CPU_TYPE_HOST)
> + return VIR_CPU_COMPARE_IDENTICAL;
> +
> + if (!host || !host->model) {
> + if (failIncompatible) {
> + virReportError(VIR_ERR_CPU_INCOMPATIBLE, "%s",
> + _("unknown host CPU"));
> + return VIR_CPU_COMPARE_ERROR;
> + } else {
> + VIR_WARN("unknown host CPU");
> + return VIR_CPU_COMPARE_INCOMPATIBLE;
> + }
> + }
> +
> + /* Compare vendor and model to check if CPUs are identical */
> + if (STRNEQ_NULLABLE(host->vendor, cpu->vendor) ||
> + STRNEQ_NULLABLE(host->model, cpu->model)) {
> + VIR_DEBUG("Host CPU model does not match required CPU "
> + "vendor %s or(and) model %s",
> + NULLSTR(cpu->vendor), NULLSTR(cpu->model));
> +
> + if (failIncompatible) {
> + virReportError(VIR_ERR_CPU_INCOMPATIBLE,
> + _("Host CPU model does not match required CPU "
> + "vendor %s or(and) model %s"),
> + NULLSTR(cpu->vendor), NULLSTR(cpu->model));
> + return VIR_CPU_COMPARE_ERROR;
> + } else {
> + return VIR_CPU_COMPARE_INCOMPATIBLE;
> + }
> + }
> return VIR_CPU_COMPARE_IDENTICAL;
> }
>
>
More information about the libvir-list
mailing list