|
|
7a3408 |
From 22376689ed26a2bba1c8a9fa328a046eee0da4c4 Mon Sep 17 00:00:00 2001
|
|
|
7a3408 |
Message-Id: <22376689ed26a2bba1c8a9fa328a046eee0da4c4@dist-git>
|
|
|
7a3408 |
From: Andrea Bolognani <abologna@redhat.com>
|
|
|
7a3408 |
Date: Tue, 11 Aug 2015 17:16:00 +0200
|
|
|
7a3408 |
Subject: [PATCH] cpu: Never skip CPU model name check in ppc64 driver
|
|
|
7a3408 |
|
|
|
7a3408 |
ppc64Compute(), called by cpuNodeData(), is used not only to retrieve
|
|
|
7a3408 |
the driver-specific data associated to a guest CPU definition, but
|
|
|
7a3408 |
also to check whether said guest CPU is compatible with the host CPU.
|
|
|
7a3408 |
|
|
|
7a3408 |
If the user is not interested in the CPU data, it's perfectly fine
|
|
|
7a3408 |
to pass a NULL pointer instead of a return location, and the
|
|
|
7a3408 |
compatibility data returned should not be affected by this. One of
|
|
|
7a3408 |
the checks, specifically the one on CPU model name, was however
|
|
|
7a3408 |
only performed if the return location was non-NULL.
|
|
|
7a3408 |
|
|
|
7a3408 |
(cherry picked from commit 8382136d42fd2caf2e5c7ad3b579f4fc5f104533)
|
|
|
7a3408 |
|
|
|
7a3408 |
Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1250977
|
|
|
7a3408 |
|
|
|
7a3408 |
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
|
|
7a3408 |
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
|
7a3408 |
---
|
|
|
7a3408 |
src/cpu/cpu_ppc64.c | 31 +++++++++++++++----------------
|
|
|
7a3408 |
1 file changed, 15 insertions(+), 16 deletions(-)
|
|
|
7a3408 |
|
|
|
7a3408 |
diff --git a/src/cpu/cpu_ppc64.c b/src/cpu/cpu_ppc64.c
|
|
|
7a3408 |
index 5921263..53d8fb0 100644
|
|
|
7a3408 |
--- a/src/cpu/cpu_ppc64.c
|
|
|
7a3408 |
+++ b/src/cpu/cpu_ppc64.c
|
|
|
7a3408 |
@@ -407,26 +407,25 @@ ppc64Compute(virCPUDefPtr host,
|
|
|
7a3408 |
!(guest_model = ppc64ModelFromCPU(cpu, map)))
|
|
|
7a3408 |
goto cleanup;
|
|
|
7a3408 |
|
|
|
7a3408 |
- if (guestData) {
|
|
|
7a3408 |
- if (cpu->type == VIR_CPU_TYPE_GUEST &&
|
|
|
7a3408 |
- cpu->match == VIR_CPU_MATCH_STRICT &&
|
|
|
7a3408 |
- STRNEQ(guest_model->name, host_model->name)) {
|
|
|
7a3408 |
- VIR_DEBUG("host CPU model does not match required CPU model %s",
|
|
|
7a3408 |
- guest_model->name);
|
|
|
7a3408 |
- if (message &&
|
|
|
7a3408 |
- virAsprintf(message,
|
|
|
7a3408 |
- _("host CPU model does not match required "
|
|
|
7a3408 |
- "CPU model %s"),
|
|
|
7a3408 |
- guest_model->name) < 0)
|
|
|
7a3408 |
- goto cleanup;
|
|
|
7a3408 |
-
|
|
|
7a3408 |
- ret = VIR_CPU_COMPARE_INCOMPATIBLE;
|
|
|
7a3408 |
+ if (cpu->type == VIR_CPU_TYPE_GUEST &&
|
|
|
7a3408 |
+ cpu->match == VIR_CPU_MATCH_STRICT &&
|
|
|
7a3408 |
+ STRNEQ(guest_model->name, host_model->name)) {
|
|
|
7a3408 |
+ VIR_DEBUG("host CPU model does not match required CPU model %s",
|
|
|
7a3408 |
+ guest_model->name);
|
|
|
7a3408 |
+ if (message &&
|
|
|
7a3408 |
+ virAsprintf(message,
|
|
|
7a3408 |
+ _("host CPU model does not match required "
|
|
|
7a3408 |
+ "CPU model %s"),
|
|
|
7a3408 |
+ guest_model->name) < 0)
|
|
|
7a3408 |
goto cleanup;
|
|
|
7a3408 |
- }
|
|
|
7a3408 |
|
|
|
7a3408 |
+ ret = VIR_CPU_COMPARE_INCOMPATIBLE;
|
|
|
7a3408 |
+ goto cleanup;
|
|
|
7a3408 |
+ }
|
|
|
7a3408 |
+
|
|
|
7a3408 |
+ if (guestData)
|
|
|
7a3408 |
if (!(*guestData = ppc64MakeCPUData(arch, &guest_model->data)))
|
|
|
7a3408 |
goto cleanup;
|
|
|
7a3408 |
- }
|
|
|
7a3408 |
|
|
|
7a3408 |
ret = VIR_CPU_COMPARE_IDENTICAL;
|
|
|
7a3408 |
|
|
|
7a3408 |
--
|
|
|
7a3408 |
2.5.0
|
|
|
7a3408 |
|