Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
src/cpu/cpu_x86.c | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
index 670b02e..914352d 100644
--- a/src/cpu/cpu_x86.c
+++ b/src/cpu/cpu_x86.c
@@ -1019,21 +1019,28 @@ x86ModelFromCPU(const virCPUDef *cpu,
virCPUx86ModelPtr model = NULL;
size_t i;
+ /* host CPU only contains required features; requesting other features
+ * just returns an empty model
+ */
+ if (cpu->type == VIR_CPU_TYPE_HOST &&
+ policy != VIR_CPU_FEATURE_REQUIRE)
+ return x86ModelNew();
+
if (policy == VIR_CPU_FEATURE_REQUIRE) {
if (!(model = x86ModelFind(map, cpu->model))) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown CPU model %s"), cpu->model);
- goto error;
+ return NULL;
}
- if (!(model = x86ModelCopy(model)))
- goto error;
- } else if (!(model = x86ModelNew())) {
- goto error;
- } else if (cpu->type == VIR_CPU_TYPE_HOST) {
- return model;
+ model = x86ModelCopy(model);
+ } else {
+ model = x86ModelNew();
}
+ if (!model)
+ return NULL;
+
for (i = 0; i < cpu->nfeatures; i++) {
virCPUx86FeaturePtr feature;
--
2.9.2