[libvirt] [PATCH 09/18] cpu: Don't skip CPU model name check in ppc64 driver
Jiri Denemark
jdenemar at redhat.com
Thu Aug 6 07:48:00 UTC 2015
On Tue, Aug 04, 2015 at 11:38:00 +0200, Andrea Bolognani wrote:
> ppc64Compute(), called by cpuNodeData(), is used not only to retrieve
> the driver-specific data associated to a guest CPU definition, but
> also to check whether said guest CPU is compatible with the host CPU.
>
> If the user is not interested in the CPU data, it's perfectly fine
> to pass a NULL pointer instead of a return location, and the
> compatibility data returned should not be affected by this. One of
> the checks, specifically the one on CPU model name, was however
> only performed if the return location was non-NULL.
> ---
> src/cpu/cpu_ppc64.c | 31 +++++++++++++++----------------
> 1 file changed, 15 insertions(+), 16 deletions(-)
>
> diff --git a/src/cpu/cpu_ppc64.c b/src/cpu/cpu_ppc64.c
> index 20c68ca..633515f 100644
> --- a/src/cpu/cpu_ppc64.c
> +++ b/src/cpu/cpu_ppc64.c
> @@ -418,26 +418,25 @@ ppc64Compute(virCPUDefPtr host,
> !(guest_model = ppc64ModelFromCPU(cpu, map)))
> goto cleanup;
>
> - if (guestData) {
> - if (cpu->type == VIR_CPU_TYPE_GUEST &&
> - cpu->match == VIR_CPU_MATCH_STRICT &&
> - STRNEQ(guest_model->name, host_model->name)) {
> - VIR_DEBUG("host CPU model does not match required CPU model %s",
> - guest_model->name);
> - if (message &&
> - virAsprintf(message,
> - _("host CPU model does not match required "
> - "CPU model %s"),
> - guest_model->name) < 0)
> - goto cleanup;
> -
> - ret = VIR_CPU_COMPARE_INCOMPATIBLE;
> + if (cpu->type == VIR_CPU_TYPE_GUEST &&
> + cpu->match == VIR_CPU_MATCH_STRICT &&
> + STRNEQ(guest_model->name, host_model->name)) {
> + VIR_DEBUG("host CPU model does not match required CPU model %s",
> + guest_model->name);
> + if (message &&
> + virAsprintf(message,
> + _("host CPU model does not match required "
> + "CPU model %s"),
> + guest_model->name) < 0)
> goto cleanup;
> - }
>
> + ret = VIR_CPU_COMPARE_INCOMPATIBLE;
> + goto cleanup;
> + }
> +
> + if (guestData)
> if (!(*guestData = ppc64MakeCPUData(arch, &guest_model->data)))
> goto cleanup;
I would probably simplify this as
if (guestData &&
!(*guestData = ppc64MakeCPUData(arch, &guest_model->data)))
goto cleanup;
but not a big deal.
ACK
Jirka
More information about the libvir-list
mailing list