This ensures comparison of two CPU definitions will be consistent
regardless of the fact that it is performed using cpuCompare() or
cpuGuestData(). The x86 driver uses the same exact code.
---
src/cpu/cpu_ppc64.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/src/cpu/cpu_ppc64.c b/src/cpu/cpu_ppc64.c
index 0769956..efac739 100644
--- a/src/cpu/cpu_ppc64.c
+++ b/src/cpu/cpu_ppc64.c
@@ -438,16 +438,22 @@ ppc64DriverCompare(virCPUDefPtr host,
virCPUDefPtr cpu,
bool failIncompatible)
{
- if ((cpu->arch == VIR_ARCH_NONE || host->arch == cpu->arch) &&
- STREQ(host->model, cpu->model))
- return VIR_CPU_COMPARE_IDENTICAL;
+ virCPUCompareResult ret;
+ char *message = NULL;
- if (failIncompatible) {
- virReportError(VIR_ERR_CPU_INCOMPATIBLE, NULL);
- return VIR_CPU_COMPARE_ERROR;
- } else {
- return VIR_CPU_COMPARE_INCOMPATIBLE;
+ ret = ppc64Compute(host, cpu, NULL, &message);
+
+ if (failIncompatible && ret == VIR_CPU_COMPARE_INCOMPATIBLE) {
+ ret = VIR_CPU_COMPARE_ERROR;
+ if (message) {
+ virReportError(VIR_ERR_CPU_INCOMPATIBLE, "%s", message);
+ } else {
+ virReportError(VIR_ERR_CPU_INCOMPATIBLE, NULL);
+ }
}
+ VIR_FREE(message);
+
+ return ret;
}
static int
--
2.4.3