diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index aadfaddc17..96bc7aadeb 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -336,6 +336,12 @@ testAddCPUModels(virQEMUCaps *caps, bool skipLegacy) return 0; } +static void +testUpdateQEMUCapsHostCPUModel(virQEMUCaps *qemuCaps, virArch hostArch) +{ + virQEMUCapsUpdateHostCPUModel(qemuCaps, hostArch, VIR_DOMAIN_VIRT_KVM); + virQEMUCapsUpdateHostCPUModel(qemuCaps, hostArch, VIR_DOMAIN_VIRT_QEMU); +} static int testUpdateQEMUCaps(const struct testQemuInfo *info, @@ -353,10 +359,7 @@ testUpdateQEMUCaps(const struct testQemuInfo *info, !!(info->flags & FLAG_SKIP_LEGACY_CPUS)) < 0) return -1; - virQEMUCapsUpdateHostCPUModel(info->qemuCaps, caps->host.arch, - VIR_DOMAIN_VIRT_KVM); - virQEMUCapsUpdateHostCPUModel(info->qemuCaps, caps->host.arch, - VIR_DOMAIN_VIRT_QEMU); + testUpdateQEMUCapsHostCPUModel(info->qemuCaps, caps->host.arch); return 0; } @@ -650,6 +653,13 @@ testCompareXMLToArgv(const void *data) if (info->arch != VIR_ARCH_NONE && info->arch != VIR_ARCH_X86_64) qemuTestSetHostArch(&driver, info->arch); + if (info->args.capsHostCPUModel) { + virCPUDef *hostCPUModel = qemuTestGetCPUDef(info->args.capsHostCPUModel); + + qemuTestSetHostCPU(&driver, driver.hostarch, hostCPUModel); + testUpdateQEMUCapsHostCPUModel(info->qemuCaps, driver.hostarch); + } + if (!(conn = virGetConnect())) goto cleanup; diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 004c7cf1d6..7e4e5d28b7 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -886,6 +886,10 @@ testQemuInfoSetArgs(struct testQemuInfo *info, info->args.capsver = va_arg(argptr, char *); break; + case ARG_CAPS_HOST_CPU_MODEL: + info->args.capsHostCPUModel = va_arg(argptr, int); + break; + case ARG_HOST_OS: info->args.hostOS = va_arg(argptr, int); break; diff --git a/tests/testutilsqemu.h b/tests/testutilsqemu.h index 99897e6b79..5419b813ea 100644 --- a/tests/testutilsqemu.h +++ b/tests/testutilsqemu.h @@ -47,6 +47,7 @@ typedef enum { ARG_PARSEFLAGS, ARG_CAPS_ARCH, ARG_CAPS_VER, + ARG_CAPS_HOST_CPU_MODEL, ARG_HOST_OS, ARG_END, } testQemuInfoArgName; @@ -66,12 +67,20 @@ struct testQemuConf { GHashTable *qapiSchemaCache; }; +typedef enum { + QEMU_CPU_DEF_DEFAULT, + QEMU_CPU_DEF_HASWELL, + QEMU_CPU_DEF_POWER8, + QEMU_CPU_DEF_POWER9, +} qemuTestCPUDef; + struct testQemuArgs { bool newargs; virQEMUCaps *fakeCaps; bool fakeCapsUsed; char *capsver; char *capsarch; + qemuTestCPUDef capsHostCPUModel; int gic; testQemuHostOS hostOS; bool invalidarg; @@ -101,15 +110,6 @@ virDomainXMLOption *testQemuXMLConfInit(void); virQEMUCaps *qemuTestParseCapabilitiesArch(virArch arch, const char *capsFile); - - -typedef enum { - QEMU_CPU_DEF_DEFAULT, - QEMU_CPU_DEF_HASWELL, - QEMU_CPU_DEF_POWER8, - QEMU_CPU_DEF_POWER9, -} qemuTestCPUDef; - virCPUDef *qemuTestGetCPUDef(qemuTestCPUDef d); void qemuTestSetHostArch(virQEMUDriver *driver,