From: "Collin L. Walling" <walling(a)linux.vnet.ibm.com>
Tests Qemu capabilities on s390x before and after the availability of
the query-cpu-model-expansion QMP command. The host CPU is mocked to use
the zEC12.2-base model for these tests, which has a defined set of features
expected to be available on this model.
Signed-off-by: Collin L. Walling <walling(a)linux.vnet.ibm.com>
Signed-off-by: Jason J. Herne <jjherne(a)linux.vnet.ibm.com>
---
tests/qemucapabilitiestest.c | 4 ++++
tests/testutilsqemu.c | 39 ++++++++++++++++++++++++++++++++++++++-
tests/testutilsqemu.h | 1 +
3 files changed, 43 insertions(+), 1 deletion(-)
diff --git a/tests/qemucapabilitiestest.c b/tests/qemucapabilitiestest.c
index 51d0cc4..1214d7c 100644
--- a/tests/qemucapabilitiestest.c
+++ b/tests/qemucapabilitiestest.c
@@ -172,6 +172,10 @@ mymain(void)
DO_TEST("aarch64", "caps_2.6.0-gicv2");
DO_TEST("aarch64", "caps_2.6.0-gicv3");
DO_TEST("ppc64le", "caps_2.6.0");
+ qemuTestSetHostCPU(driver.caps, cpuS390zEC12_2_base);
+ DO_TEST("s390x", "caps_2.7.0");
+ DO_TEST("s390x", "caps_2.8.0");
+ qemuTestSetHostCPU(driver.caps, NULL);
/*
* Run "tests/qemucapsprobe /path/to/qemu/binary >foo.replies"
diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c
index 56a89c9..a93987e 100644
--- a/tests/testutilsqemu.c
+++ b/tests/testutilsqemu.c
@@ -17,6 +17,7 @@
virCPUDefPtr cpuDefault;
virCPUDefPtr cpuHaswell;
virCPUDefPtr cpuPower8;
+virCPUDefPtr cpuS390zEC12_2_base;
static virCPUFeatureDef cpuDefaultFeatures[] = {
{ (char *) "ds", -1 },
@@ -93,6 +94,40 @@ static virCPUDef cpuHaswellData = {
cpuHaswellFeatures, /* features */
};
+static virCPUFeatureDef cpuS390zEC12_2_base_Features[] = {
+ { (char *) "aefsi", -1 },
+ { (char *) "msa5", -1 },
+ { (char *) "msa4", -1 },
+ { (char *) "msa3", -1 },
+ { (char *) "msa2", -1 },
+ { (char *) "msa1", -1 },
+ { (char *) "sthyi", -1 },
+ { (char *) "edat", -1 },
+ { (char *) "ri", -1 },
+ { (char *) "edat2", -1 },
+ { (char *) "ipter", -1 },
+ { (char *) "esop", -1 },
+ { (char *) "cte", -1 },
+ { (char *) "te", -1 },
+ { (char *) "cmm", -1 },
+};
+static virCPUDef cpuS390zEC12_2_base_Data = {
+ VIR_CPU_TYPE_HOST, /* type */
+ 0, /* mode */
+ 0, /* match */
+ VIR_ARCH_S390X, /* arch */
+ (char *) "zEC12-base", /* model */
+ NULL, /* vendor_id */
+ 0, /* fallback */
+ NULL, /* vendor */
+ 1, /* sockets */
+ 1, /* cores */
+ 1, /* threads */
+ ARRAY_CARDINALITY(cpuS390zEC12_2_base_Features), /* nfeatures */
+ ARRAY_CARDINALITY(cpuS390zEC12_2_base_Features), /* nfeatures_max */
+ cpuS390zEC12_2_base_Features, /* features */
+};
+
static virCPUDef cpuPower8Data = {
.type = VIR_CPU_TYPE_HOST,
.arch = VIR_ARCH_PPC64,
@@ -342,7 +377,8 @@ virCapsPtr testQemuCapsInit(void)
if (!(cpuDefault = virCPUDefCopy(&cpuDefaultData)) ||
!(cpuHaswell = virCPUDefCopy(&cpuHaswellData)) ||
- !(cpuPower8 = virCPUDefCopy(&cpuPower8Data)))
+ !(cpuPower8 = virCPUDefCopy(&cpuPower8Data)) ||
+ !(cpuS390zEC12_2_base = virCPUDefCopy(&cpuS390zEC12_2_base_Data)))
goto cleanup;
qemuTestSetHostCPU(caps, NULL);
@@ -455,6 +491,7 @@ virCapsPtr testQemuCapsInit(void)
virCPUDefFree(cpuDefault);
virCPUDefFree(cpuHaswell);
virCPUDefFree(cpuPower8);
+ virCPUDefFree(cpuS390zEC12_2_base);
virObjectUnref(caps);
return NULL;
}
diff --git a/tests/testutilsqemu.h b/tests/testutilsqemu.h
index 047a64d..3c62466 100644
--- a/tests/testutilsqemu.h
+++ b/tests/testutilsqemu.h
@@ -21,6 +21,7 @@ virQEMUCapsPtr qemuTestParseCapabilities(virCapsPtr caps,
extern virCPUDefPtr cpuDefault;
extern virCPUDefPtr cpuHaswell;
extern virCPUDefPtr cpuPower8;
+extern virCPUDefPtr cpuS390zEC12_2_base;
void qemuTestSetHostArch(virCapsPtr caps,
virArch arch);
--
2.7.4