|
|
c480ed |
From f047006a60d92f9c5e66ac9c2c532f8ac4c2ba28 Mon Sep 17 00:00:00 2001
|
|
|
c480ed |
Message-Id: <f047006a60d92f9c5e66ac9c2c532f8ac4c2ba28@dist-git>
|
|
|
c480ed |
From: Jiri Denemark <jdenemar@redhat.com>
|
|
|
c480ed |
Date: Fri, 21 Jun 2019 09:25:56 +0200
|
|
|
c480ed |
Subject: [PATCH] qemu: Translate feature names from query-cpu-model-expansion
|
|
|
c480ed |
MIME-Version: 1.0
|
|
|
c480ed |
Content-Type: text/plain; charset=UTF-8
|
|
|
c480ed |
Content-Transfer-Encoding: 8bit
|
|
|
c480ed |
|
|
|
c480ed |
By default query-cpu-model-expansion only reports canonical names of all
|
|
|
c480ed |
CPU features. We do some magic and call the command twice to get all
|
|
|
c480ed |
possible spellings of the features, but being able to consume canonical
|
|
|
c480ed |
names will allow us to drop this magic.
|
|
|
c480ed |
|
|
|
c480ed |
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
|
c480ed |
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
|
c480ed |
(cherry picked from commit ec232c5ddc3cc47651a815dcf4cff7cd31910b3e)
|
|
|
c480ed |
|
|
|
c480ed |
https://bugzilla.redhat.com/show_bug.cgi?id=1697627
|
|
|
c480ed |
|
|
|
c480ed |
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
|
c480ed |
Message-Id: <5a50943665bc9df69bb99c25763f0b99a7364d8c.1561068591.git.jdenemar@redhat.com>
|
|
|
c480ed |
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
|
c480ed |
---
|
|
|
c480ed |
src/qemu/qemu_capabilities.c | 19 +++++++++++--------
|
|
|
c480ed |
src/qemu/qemu_capspriv.h | 3 ++-
|
|
|
c480ed |
tests/cputest.c | 2 +-
|
|
|
c480ed |
3 files changed, 14 insertions(+), 10 deletions(-)
|
|
|
c480ed |
|
|
|
c480ed |
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
|
|
|
c480ed |
index c48d66b39b..88c651ea7b 100644
|
|
|
c480ed |
--- a/src/qemu/qemu_capabilities.c
|
|
|
c480ed |
+++ b/src/qemu/qemu_capabilities.c
|
|
|
c480ed |
@@ -2868,11 +2868,12 @@ virQEMUCapsInitCPUModelS390(virQEMUCapsPtr qemuCaps,
|
|
|
c480ed |
for (i = 0; i < modelInfo->nprops; i++) {
|
|
|
c480ed |
virCPUFeatureDefPtr feature = cpu->features + cpu->nfeatures;
|
|
|
c480ed |
qemuMonitorCPUPropertyPtr prop = modelInfo->props + i;
|
|
|
c480ed |
+ const char *name = virQEMUCapsCPUFeatureFromQEMU(qemuCaps, prop->name);
|
|
|
c480ed |
|
|
|
c480ed |
if (prop->type != QEMU_MONITOR_CPU_PROPERTY_BOOLEAN)
|
|
|
c480ed |
continue;
|
|
|
c480ed |
|
|
|
c480ed |
- if (VIR_STRDUP(feature->name, prop->name) < 0)
|
|
|
c480ed |
+ if (VIR_STRDUP(feature->name, name) < 0)
|
|
|
c480ed |
return -1;
|
|
|
c480ed |
|
|
|
c480ed |
if (!prop->value.boolean ||
|
|
|
c480ed |
@@ -2888,7 +2889,8 @@ virQEMUCapsInitCPUModelS390(virQEMUCapsPtr qemuCaps,
|
|
|
c480ed |
|
|
|
c480ed |
|
|
|
c480ed |
virCPUDataPtr
|
|
|
c480ed |
-virQEMUCapsGetCPUModelX86Data(qemuMonitorCPUModelInfoPtr model,
|
|
|
c480ed |
+virQEMUCapsGetCPUModelX86Data(virQEMUCapsPtr qemuCaps,
|
|
|
c480ed |
+ qemuMonitorCPUModelInfoPtr model,
|
|
|
c480ed |
bool migratable)
|
|
|
c480ed |
{
|
|
|
c480ed |
unsigned long long sigFamily = 0;
|
|
|
c480ed |
@@ -2903,6 +2905,7 @@ virQEMUCapsGetCPUModelX86Data(qemuMonitorCPUModelInfoPtr model,
|
|
|
c480ed |
|
|
|
c480ed |
for (i = 0; i < model->nprops; i++) {
|
|
|
c480ed |
qemuMonitorCPUPropertyPtr prop = model->props + i;
|
|
|
c480ed |
+ const char *name = virQEMUCapsCPUFeatureFromQEMU(qemuCaps, prop->name);
|
|
|
c480ed |
|
|
|
c480ed |
switch (prop->type) {
|
|
|
c480ed |
case QEMU_MONITOR_CPU_PROPERTY_BOOLEAN:
|
|
|
c480ed |
@@ -2910,23 +2913,23 @@ virQEMUCapsGetCPUModelX86Data(qemuMonitorCPUModelInfoPtr model,
|
|
|
c480ed |
(migratable && prop->migratable == VIR_TRISTATE_BOOL_NO))
|
|
|
c480ed |
continue;
|
|
|
c480ed |
|
|
|
c480ed |
- if (virCPUx86DataAddFeature(data, prop->name) < 0)
|
|
|
c480ed |
+ if (virCPUx86DataAddFeature(data, name) < 0)
|
|
|
c480ed |
goto cleanup;
|
|
|
c480ed |
|
|
|
c480ed |
break;
|
|
|
c480ed |
|
|
|
c480ed |
case QEMU_MONITOR_CPU_PROPERTY_STRING:
|
|
|
c480ed |
- if (STREQ(prop->name, "vendor") &&
|
|
|
c480ed |
+ if (STREQ(name, "vendor") &&
|
|
|
c480ed |
virCPUx86DataSetVendor(data, prop->value.string) < 0)
|
|
|
c480ed |
goto cleanup;
|
|
|
c480ed |
break;
|
|
|
c480ed |
|
|
|
c480ed |
case QEMU_MONITOR_CPU_PROPERTY_NUMBER:
|
|
|
c480ed |
- if (STREQ(prop->name, "family"))
|
|
|
c480ed |
+ if (STREQ(name, "family"))
|
|
|
c480ed |
sigFamily = prop->value.number;
|
|
|
c480ed |
- else if (STREQ(prop->name, "model"))
|
|
|
c480ed |
+ else if (STREQ(name, "model"))
|
|
|
c480ed |
sigModel = prop->value.number;
|
|
|
c480ed |
- else if (STREQ(prop->name, "stepping"))
|
|
|
c480ed |
+ else if (STREQ(name, "stepping"))
|
|
|
c480ed |
sigStepping = prop->value.number;
|
|
|
c480ed |
break;
|
|
|
c480ed |
|
|
|
c480ed |
@@ -2964,7 +2967,7 @@ virQEMUCapsInitCPUModelX86(virQEMUCapsPtr qemuCaps,
|
|
|
c480ed |
if (!model)
|
|
|
c480ed |
return 1;
|
|
|
c480ed |
|
|
|
c480ed |
- if (!(data = virQEMUCapsGetCPUModelX86Data(model, migratable)))
|
|
|
c480ed |
+ if (!(data = virQEMUCapsGetCPUModelX86Data(qemuCaps, model, migratable)))
|
|
|
c480ed |
goto cleanup;
|
|
|
c480ed |
|
|
|
c480ed |
if (cpuDecode(cpu, data, virQEMUCapsGetCPUDefinitions(qemuCaps, type)) < 0)
|
|
|
c480ed |
diff --git a/src/qemu/qemu_capspriv.h b/src/qemu/qemu_capspriv.h
|
|
|
c480ed |
index c3b7f934a9..b17deb01d7 100644
|
|
|
c480ed |
--- a/src/qemu/qemu_capspriv.h
|
|
|
c480ed |
+++ b/src/qemu/qemu_capspriv.h
|
|
|
c480ed |
@@ -85,7 +85,8 @@ virQEMUCapsSetCPUModelInfo(virQEMUCapsPtr qemuCaps,
|
|
|
c480ed |
qemuMonitorCPUModelInfoPtr modelInfo);
|
|
|
c480ed |
|
|
|
c480ed |
virCPUDataPtr
|
|
|
c480ed |
-virQEMUCapsGetCPUModelX86Data(qemuMonitorCPUModelInfoPtr model,
|
|
|
c480ed |
+virQEMUCapsGetCPUModelX86Data(virQEMUCapsPtr qemuCaps,
|
|
|
c480ed |
+ qemuMonitorCPUModelInfoPtr model,
|
|
|
c480ed |
bool migratable);
|
|
|
c480ed |
|
|
|
c480ed |
virCPUDefPtr
|
|
|
c480ed |
diff --git a/tests/cputest.c b/tests/cputest.c
|
|
|
c480ed |
index e62cda34b7..1ce50caccd 100644
|
|
|
c480ed |
--- a/tests/cputest.c
|
|
|
c480ed |
+++ b/tests/cputest.c
|
|
|
c480ed |
@@ -941,7 +941,7 @@ cpuTestJSONSignature(const void *arg)
|
|
|
c480ed |
goto cleanup;
|
|
|
c480ed |
|
|
|
c480ed |
modelInfo = virQEMUCapsGetCPUModelInfo(qemuCaps, VIR_DOMAIN_VIRT_KVM);
|
|
|
c480ed |
- if (!(hostData = virQEMUCapsGetCPUModelX86Data(modelInfo, false)))
|
|
|
c480ed |
+ if (!(hostData = virQEMUCapsGetCPUModelX86Data(qemuCaps, modelInfo, false)))
|
|
|
c480ed |
goto cleanup;
|
|
|
c480ed |
|
|
|
c480ed |
ret = cpuTestCompareSignature(data, hostData);
|
|
|
c480ed |
--
|
|
|
c480ed |
2.22.0
|
|
|
c480ed |
|