From nobody Sun Feb 8 14:10:34 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1575469326; cv=none; d=zohomail.com; s=zohoarc; b=BEZB04xuCKJ4X+OMMVb/aKmRC/JKmLVelpOr7e6kxeypqH8lu1OwLBw9hF0yMlWhsD9kb0jF2vFbNi88AMv30xOirJrog98rGabVzaAoXNmUI4vBou7mbs0lWSyezpZvEXFu4Eruo7pIe36aFCgcTm+Adn3g0TnLDJqz2QeIzKk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1575469326; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=nO98ljpb8ucs9/JKfk+Ka5zKAcewbNt2TveexYAN2ew=; b=f2tshdx1FO2tCTFnn4JhU1zie+bPDft5OTkQoUD+0lk4l5xHmctHGAujtZ8FggQTQ6LqRQk+6AVZWylr5x6VkQ3FdXaQVsz6wqY3VbHHAFQ6iU7hUXmnoYEHPJ+P7377hUxHPOaGVmSaeBOwZ1K/cVFczFGXn0XzmCGuTmRAN08= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by mx.zohomail.com with SMTPS id 1575469326206153.64037033758882; Wed, 4 Dec 2019 06:22:06 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-207-_YPJyPwXOCGvnVTAxoNxdg-1; Wed, 04 Dec 2019 09:21:44 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 263068D0936; Wed, 4 Dec 2019 14:21:36 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F01665D6AE; Wed, 4 Dec 2019 14:21:35 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id A2A2E5BC12; Wed, 4 Dec 2019 14:21:35 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id xB4ELKtq008062 for ; Wed, 4 Dec 2019 09:21:20 -0500 Received: by smtp.corp.redhat.com (Postfix) id 0B39B691A7; Wed, 4 Dec 2019 14:21:20 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-112-55.ams2.redhat.com [10.36.112.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id E88DA691A2; Wed, 4 Dec 2019 14:21:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1575469325; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=nO98ljpb8ucs9/JKfk+Ka5zKAcewbNt2TveexYAN2ew=; b=R00qaSsc2MtzxlvhXLWFiuEnO6wLVx2qHv2bbvWOQICk5/UsXhzE+kKjeeb04XIv3JKaP/ 1qHDp2Ojps0oVVQwgwg7yDnopUjG2YThYYBw/hSvHIaPsEOhAUi4AL0s96BMqYjFF4N/TV IFSNyAcSdHMkcHv3CuBbb19XjPX0SnY= From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Wed, 4 Dec 2019 14:20:44 +0000 Message-Id: <20191204142113.2961028-2-berrange@redhat.com> In-Reply-To: <20191204142113.2961028-1-berrange@redhat.com> References: <20191204142113.2961028-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 01/30] qemu: cache host arch separately from virCapsPtr X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-MC-Unique: _YPJyPwXOCGvnVTAxoNxdg-1 X-Mimecast-Spam-Score: 0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) As part of a goal to eliminate the need to use virCapsPtr for anything other than the virConnectGetCapabilies() API impl, cache the host arch against the QEMU driver struct and use that field directly. In the tests we move virArchFromHost() globally in testutils.c so that every test runs with a fixed default architecture reported. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_capabilities.c | 20 ++++++++++---------- src/qemu/qemu_capabilities.h | 6 +++--- src/qemu/qemu_command.c | 6 +----- src/qemu/qemu_conf.c | 6 +----- src/qemu/qemu_conf.h | 3 +++ src/qemu/qemu_domain.c | 8 ++++---- src/qemu/qemu_driver.c | 3 ++- src/qemu/qemu_process.c | 14 +++++++------- tests/domaincapstest.c | 2 +- tests/qemumemlocktest.c | 4 ++-- tests/qemuxml2argvtest.c | 16 ++++++++-------- tests/testutils.c | 9 +++++++++ tests/testutils.h | 2 ++ tests/testutilsqemu.c | 11 ++++++++--- tests/testutilsqemu.h | 4 ++-- 15 files changed, 63 insertions(+), 51 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index edb128c881..cfc16ba63e 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -2096,7 +2096,7 @@ virQEMUCapsSetHostModel(virQEMUCapsPtr qemuCaps, =20 bool virQEMUCapsIsCPUModeSupported(virQEMUCapsPtr qemuCaps, - virCapsPtr caps, + virArch hostarch, virDomainVirtType type, virCPUMode mode) { @@ -2105,7 +2105,7 @@ virQEMUCapsIsCPUModeSupported(virQEMUCapsPtr qemuCaps, switch (mode) { case VIR_CPU_MODE_HOST_PASSTHROUGH: return type =3D=3D VIR_DOMAIN_VIRT_KVM && - virQEMUCapsGuestIsNative(caps->host.arch, qemuCaps->arch); + virQEMUCapsGuestIsNative(hostarch, qemuCaps->arch); =20 case VIR_CPU_MODE_HOST_MODEL: return !!virQEMUCapsGetHostModel(qemuCaps, type, @@ -5412,22 +5412,22 @@ virQEMUCapsFillDomainOSCaps(virDomainCapsOSPtr os, =20 =20 static void -virQEMUCapsFillDomainCPUCaps(virCapsPtr caps, - virQEMUCapsPtr qemuCaps, +virQEMUCapsFillDomainCPUCaps(virQEMUCapsPtr qemuCaps, + virArch hostarch, virDomainCapsPtr domCaps) { - if (virQEMUCapsIsCPUModeSupported(qemuCaps, caps, domCaps->virttype, + if (virQEMUCapsIsCPUModeSupported(qemuCaps, hostarch, domCaps->virttyp= e, VIR_CPU_MODE_HOST_PASSTHROUGH)) domCaps->cpu.hostPassthrough =3D true; =20 - if (virQEMUCapsIsCPUModeSupported(qemuCaps, caps, domCaps->virttype, + if (virQEMUCapsIsCPUModeSupported(qemuCaps, hostarch, domCaps->virttyp= e, VIR_CPU_MODE_HOST_MODEL)) { virCPUDefPtr cpu =3D virQEMUCapsGetHostModel(qemuCaps, domCaps->vi= rttype, VIR_QEMU_CAPS_HOST_CPU_= REPORTED); domCaps->cpu.hostModel =3D virCPUDefCopy(cpu); } =20 - if (virQEMUCapsIsCPUModeSupported(qemuCaps, caps, domCaps->virttype, + if (virQEMUCapsIsCPUModeSupported(qemuCaps, hostarch, domCaps->virttyp= e, VIR_CPU_MODE_CUSTOM)) { const char *blacklist[] =3D { "host", NULL }; VIR_AUTOSTRINGLIST models =3D NULL; @@ -5746,9 +5746,9 @@ virQEMUCapsFillDomainFeatureSEVCaps(virQEMUCapsPtr qe= muCaps, =20 =20 int -virQEMUCapsFillDomainCaps(virCapsPtr caps, +virQEMUCapsFillDomainCaps(virQEMUCapsPtr qemuCaps, + virArch hostarch, virDomainCapsPtr domCaps, - virQEMUCapsPtr qemuCaps, bool privileged, virFirmwarePtr *firmwares, size_t nfirmwares) @@ -5781,7 +5781,7 @@ virQEMUCapsFillDomainCaps(virCapsPtr caps, firmwares, nfirmwares) < 0) return -1; =20 - virQEMUCapsFillDomainCPUCaps(caps, qemuCaps, domCaps); + virQEMUCapsFillDomainCPUCaps(qemuCaps, hostarch, domCaps); virQEMUCapsFillDomainDeviceDiskCaps(qemuCaps, domCaps->machine, disk); virQEMUCapsFillDomainDeviceGraphicsCaps(qemuCaps, graphics); virQEMUCapsFillDomainDeviceVideoCaps(qemuCaps, video); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 4d7d836e8c..399496796d 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -604,7 +604,7 @@ int virQEMUCapsGetCPUFeatures(virQEMUCapsPtr qemuCaps, char ***features); =20 bool virQEMUCapsIsCPUModeSupported(virQEMUCapsPtr qemuCaps, - virCapsPtr caps, + virArch hostarch, virDomainVirtType type, virCPUMode mode); const char *virQEMUCapsGetCanonicalMachine(virQEMUCapsPtr qemuCaps, @@ -665,9 +665,9 @@ int virQEMUCapsInitGuestFromBinary(virCapsPtr caps, virQEMUCapsPtr qemuCaps, virArch guestarch); =20 -int virQEMUCapsFillDomainCaps(virCapsPtr caps, +int virQEMUCapsFillDomainCaps(virQEMUCapsPtr qemuCaps, + virArch hostarch, virDomainCapsPtr domCaps, - virQEMUCapsPtr qemuCaps, bool privileged, virFirmwarePtr *firmwares, size_t nfirmwares); diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 3465d28b84..49a0dad8d4 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6657,18 +6657,14 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, virQEMUCapsPtr qemuCaps) { size_t i; - g_autoptr(virCaps) caps =3D NULL; virCPUDefPtr cpu =3D def->cpu; =20 - if (!(caps =3D virQEMUDriverGetCapabilities(driver, false))) - return -1; - switch ((virCPUMode) cpu->mode) { case VIR_CPU_MODE_HOST_PASSTHROUGH: virBufferAddLit(buf, "host"); =20 if (def->os.arch =3D=3D VIR_ARCH_ARMV7L && - caps->host.arch =3D=3D VIR_ARCH_AARCH64) { + driver->hostarch =3D=3D VIR_ARCH_AARCH64) { if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_AARCH64_OFF)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("QEMU binary does not support CPU " diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 30637b21ac..53658c80e8 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -1341,7 +1341,6 @@ virQEMUDriverGetDomainCapabilities(virQEMUDriverPtr d= river, virDomainVirtType virttype) { g_autoptr(virDomainCaps) domCaps =3D NULL; - g_autoptr(virCaps) caps =3D NULL; g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); virHashTablePtr domCapsCache =3D virQEMUCapsGetDomainCapsCache(qemuCap= s); struct virQEMUDriverSearchDomcapsData data =3D { @@ -1351,9 +1350,6 @@ virQEMUDriverGetDomainCapabilities(virQEMUDriverPtr d= river, .virttype =3D virttype, }; =20 - if (!(caps =3D virQEMUDriverGetCapabilities(driver, false))) - return NULL; - domCaps =3D virHashSearch(domCapsCache, virQEMUDriverSearchDomcaps, &data, NULL); if (!domCaps) { @@ -1364,7 +1360,7 @@ virQEMUDriverGetDomainCapabilities(virQEMUDriverPtr d= river, data.arch, data.virttype))) return NULL; =20 - if (virQEMUCapsFillDomainCaps(caps, domCaps, qemuCaps, + if (virQEMUCapsFillDomainCaps(qemuCaps, driver->hostarch, domCaps, driver->privileged, cfg->firmwares, cfg->nfirmwares) < 0) return NULL; diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index 95b33a1093..7c56226b8c 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -262,6 +262,9 @@ struct _virQEMUDriver { */ virCapsPtr caps; =20 + /* Immutable value */ + virArch hostarch; + /* Immutable pointer, Immutable object */ virDomainXMLOptionPtr xmlopt; =20 diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 470d342afc..939e6fc01c 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4446,7 +4446,7 @@ qemuDomainDefVcpusPostParse(virDomainDefPtr def) =20 static int qemuDomainDefSetDefaultCPU(virDomainDefPtr def, - virCapsPtr caps, + virArch hostarch, virQEMUCapsPtr qemuCaps) { const char *model; @@ -4484,7 +4484,7 @@ qemuDomainDefSetDefaultCPU(virDomainDefPtr def, =20 if (STREQ(model, "host")) { if (ARCH_IS_S390(def->os.arch) && - virQEMUCapsIsCPUModeSupported(qemuCaps, caps, def->virtType, + virQEMUCapsIsCPUModeSupported(qemuCaps, hostarch, def->virtTyp= e, VIR_CPU_MODE_HOST_MODEL)) { def->cpu->mode =3D VIR_CPU_MODE_HOST_MODEL; } else { @@ -4691,7 +4691,7 @@ qemuDomainDefPostParseBasic(virDomainDefPtr def, =20 static int qemuDomainDefPostParse(virDomainDefPtr def, - virCapsPtr caps, + virCapsPtr caps G_GNUC_UNUSED, unsigned int parseFlags, void *opaque, void *parseOpaque) @@ -4723,7 +4723,7 @@ qemuDomainDefPostParse(virDomainDefPtr def, if (qemuCanonicalizeMachine(def, qemuCaps) < 0) return -1; =20 - if (qemuDomainDefSetDefaultCPU(def, caps, qemuCaps) < 0) + if (qemuDomainDefSetDefaultCPU(def, driver->hostarch, qemuCaps) < 0) return -1; =20 qemuDomainDefEnableDefaultFeatures(def, qemuCaps); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 1911073f3e..594b683b80 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -673,6 +673,7 @@ qemuStateInitialize(bool privileged, qemu_driver->inhibitOpaque =3D opaque; =20 qemu_driver->privileged =3D privileged; + qemu_driver->hostarch =3D virArchFromHost(); =20 if (!(qemu_driver->domains =3D virDomainObjListNew())) goto error; @@ -13418,7 +13419,7 @@ qemuConnectCompareCPU(virConnectPtr conn, if (!(caps =3D virQEMUDriverGetCapabilities(driver, false))) return VIR_CPU_COMPARE_ERROR; =20 - return virCPUCompareXML(caps->host.arch, caps->host.cpu, + return virCPUCompareXML(driver->hostarch, caps->host.cpu, xmlDesc, failIncompatible); } =20 diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 75ee3893c6..480fcd075d 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6047,7 +6047,7 @@ qemuProcessDropUnknownCPUFeatures(const char *name, static int qemuProcessUpdateGuestCPU(virDomainDefPtr def, virQEMUCapsPtr qemuCaps, - virCapsPtr caps, + virArch hostarch, unsigned int flags) { if (!def->cpu) @@ -6069,7 +6069,7 @@ qemuProcessUpdateGuestCPU(virDomainDefPtr def, def->cpu->mode =3D VIR_CPU_MODE_CUSTOM; } =20 - if (!virQEMUCapsIsCPUModeSupported(qemuCaps, caps, def->virtType, + if (!virQEMUCapsIsCPUModeSupported(qemuCaps, hostarch, def->virtType, def->cpu->mode)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("CPU mode '%s' for %s %s domain on %s host is not= " @@ -6077,11 +6077,11 @@ qemuProcessUpdateGuestCPU(virDomainDefPtr def, virCPUModeTypeToString(def->cpu->mode), virArchToString(def->os.arch), virDomainVirtTypeToString(def->virtType), - virArchToString(caps->host.arch)); + virArchToString(hostarch)); return -1; } =20 - if (virCPUConvertLegacy(caps->host.arch, def->cpu) < 0) + if (virCPUConvertLegacy(hostarch, def->cpu) < 0) return -1; =20 /* nothing to update for host-passthrough */ @@ -6089,7 +6089,7 @@ qemuProcessUpdateGuestCPU(virDomainDefPtr def, g_autoptr(virDomainCapsCPUModels) cpuModels =3D NULL; =20 if (def->cpu->check =3D=3D VIR_CPU_CHECK_PARTIAL && - virCPUCompare(caps->host.arch, + virCPUCompare(hostarch, virQEMUCapsGetHostModel(qemuCaps, def->virtType, VIR_QEMU_CAPS_HOST_CPU_F= ULL), def->cpu, true) < 0) @@ -6351,7 +6351,7 @@ qemuProcessPrepareDomain(virQEMUDriverPtr driver, priv->pausedReason =3D VIR_DOMAIN_PAUSED_UNKNOWN; =20 VIR_DEBUG("Updating guest CPU definition"); - if (qemuProcessUpdateGuestCPU(vm->def, priv->qemuCaps, caps, flags) < = 0) + if (qemuProcessUpdateGuestCPU(vm->def, priv->qemuCaps, driver->hostarc= h, flags) < 0) goto cleanup; =20 for (i =3D 0; i < vm->def->nshmems; i++) @@ -7825,7 +7825,7 @@ qemuProcessRefreshCPU(virQEMUDriverPtr driver, if (!caps) return -1; =20 - if (!virQEMUCapsGuestIsNative(caps->host.arch, vm->def->os.arch) || + if (!virQEMUCapsGuestIsNative(driver->hostarch, vm->def->os.arch) || !caps->host.cpu || !vm->def->cpu) { ret =3D 0; diff --git a/tests/domaincapstest.c b/tests/domaincapstest.c index c6700f7e78..94e5831706 100644 --- a/tests/domaincapstest.c +++ b/tests/domaincapstest.c @@ -106,7 +106,7 @@ fillQemuCaps(virDomainCapsPtr domCaps, if (!domCaps->machine) domCaps->machine =3D g_strdup(virQEMUCapsGetPreferredMachine(qemuC= aps, virtType)); =20 - if (virQEMUCapsFillDomainCaps(caps, domCaps, qemuCaps, + if (virQEMUCapsFillDomainCaps(qemuCaps, caps->host.arch, domCaps, false, cfg->firmwares, cfg->nfirmwares) < 0) diff --git a/tests/qemumemlocktest.c b/tests/qemumemlocktest.c index ef3bfa0345..55f65dcb6a 100644 --- a/tests/qemumemlocktest.c +++ b/tests/qemumemlocktest.c @@ -101,7 +101,7 @@ mymain(void) * ensure settings are prioritized as expected. */ =20 - qemuTestSetHostArch(driver.caps, VIR_ARCH_X86_64); + qemuTestSetHostArch(&driver, VIR_ARCH_X86_64); =20 DO_TEST("pc-kvm", 0); DO_TEST("pc-tcg", 0); @@ -115,7 +115,7 @@ mymain(void) DO_TEST("pc-hardlimit+locked+hostdev", 2147483648); DO_TEST("pc-locked+hostdev", VIR_DOMAIN_MEMORY_PARAM_UNLIMITED); =20 - qemuTestSetHostArch(driver.caps, VIR_ARCH_PPC64); + qemuTestSetHostArch(&driver, VIR_ARCH_PPC64); if (!(qemuCaps =3D virQEMUCapsNew())) { ret =3D -1; goto cleanup; diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 86b8899921..546cdae245 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -413,7 +413,7 @@ testCompareXMLToArgv(const void *data) qemuDomainObjPrivatePtr priv =3D NULL; =20 if (info->arch !=3D VIR_ARCH_NONE && info->arch !=3D VIR_ARCH_X86_64) - qemuTestSetHostArch(driver.caps, info->arch); + qemuTestSetHostArch(&driver, info->arch); =20 memset(&monitor_chr, 0, sizeof(monitor_chr)); =20 @@ -584,7 +584,7 @@ testCompareXMLToArgv(const void *data) virObjectUnref(conn); VIR_FREE(migrateURI); if (info->arch !=3D VIR_ARCH_NONE && info->arch !=3D VIR_ARCH_X86_64) - qemuTestSetHostArch(driver.caps, VIR_ARCH_NONE); + qemuTestSetHostArch(&driver, VIR_ARCH_NONE); =20 return ret; } @@ -1724,11 +1724,11 @@ mymain(void) DO_TEST("cpu-host-passthrough", QEMU_CAPS_KVM); DO_TEST_FAILURE("cpu-qemu-host-passthrough", QEMU_CAPS_KVM); =20 - qemuTestSetHostArch(driver.caps, VIR_ARCH_S390X); + qemuTestSetHostArch(&driver, VIR_ARCH_S390X); DO_TEST("cpu-s390-zEC12", QEMU_CAPS_KVM, QEMU_CAPS_CCW, QEMU_CAPS_VIRT= IO_S390); DO_TEST("cpu-s390-features", QEMU_CAPS_KVM, QEMU_CAPS_QUERY_CPU_MODEL_= EXPANSION); DO_TEST_FAILURE("cpu-s390-features", QEMU_CAPS_KVM); - qemuTestSetHostArch(driver.caps, VIR_ARCH_NONE); + qemuTestSetHostArch(&driver, VIR_ARCH_NONE); =20 qemuTestSetHostCPU(driver.caps, cpuHaswell); DO_TEST("cpu-Haswell", QEMU_CAPS_KVM); @@ -1855,7 +1855,7 @@ mymain(void) QEMU_CAPS_DEVICE_SPAPR_VTY); DO_TEST_PARSE_ERROR("pseries-no-parallel", NONE); =20 - qemuTestSetHostArch(driver.caps, VIR_ARCH_PPC64); + qemuTestSetHostArch(&driver, VIR_ARCH_PPC64); DO_TEST("pseries-cpu-compat", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, QEMU_CAPS_DEVICE_SPAPR_VTY); @@ -1877,7 +1877,7 @@ mymain(void) QEMU_CAPS_DEVICE_SPAPR_VTY); qemuTestSetHostCPU(driver.caps, NULL); =20 - qemuTestSetHostArch(driver.caps, VIR_ARCH_NONE); + qemuTestSetHostArch(&driver, VIR_ARCH_NONE); =20 DO_TEST("pseries-panic-missing", QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, @@ -2552,7 +2552,7 @@ mymain(void) QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM); DO_TEST("aarch64-virt-default-nic", QEMU_CAPS_DEVICE_VIRTIO_MMIO); - qemuTestSetHostArch(driver.caps, VIR_ARCH_AARCH64); + qemuTestSetHostArch(&driver, VIR_ARCH_AARCH64); DO_TEST("aarch64-cpu-passthrough", QEMU_CAPS_DEVICE_VIRTIO_MMIO, QEMU_CAPS_KVM); @@ -2668,7 +2668,7 @@ mymain(void) /* SVE aarch64 CPU features work on modern QEMU */ DO_TEST_CAPS_ARCH_LATEST("aarch64-features-sve", "aarch64"); =20 - qemuTestSetHostArch(driver.caps, VIR_ARCH_NONE); + qemuTestSetHostArch(&driver, VIR_ARCH_NONE); =20 DO_TEST("kvm-pit-delay", QEMU_CAPS_KVM_PIT_TICK_POLICY); DO_TEST("kvm-pit-discard", QEMU_CAPS_KVM_PIT_TICK_POLICY); diff --git a/tests/testutils.c b/tests/testutils.c index d9c0d5abbe..387ba55908 100644 --- a/tests/testutils.c +++ b/tests/testutils.c @@ -60,6 +60,15 @@ static virBitmapPtr testBitmap; char *progname; static char *perl; =20 +virArch virTestHostArch =3D VIR_ARCH_X86_64; + +virArch +virArchFromHost(void) +{ + return virTestHostArch; +} + + static int virTestUseTerminalColors(void) { return isatty(STDOUT_FILENO); diff --git a/tests/testutils.h b/tests/testutils.h index 76090c5522..c3f2cee85f 100644 --- a/tests/testutils.h +++ b/tests/testutils.h @@ -43,6 +43,8 @@ extern char *progname; # error Fix Makefile.am #endif =20 +extern virArch virTestHostArch; + int virTestRun(const char *title, int (*body)(const void *data), const void *data); diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 4cb128559a..97f63e7d5d 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -576,13 +576,16 @@ virCapsPtr testQemuCapsInit(void) =20 =20 void -qemuTestSetHostArch(virCapsPtr caps, +qemuTestSetHostArch(virQEMUDriverPtr driver, virArch arch) { if (arch =3D=3D VIR_ARCH_NONE) arch =3D VIR_ARCH_X86_64; - caps->host.arch =3D arch; - qemuTestSetHostCPU(caps, NULL); + + virTestHostArch =3D arch; + driver->hostarch =3D virArchFromHost(); + driver->caps->host.arch =3D virArchFromHost(); + qemuTestSetHostCPU(driver->caps, NULL); } =20 =20 @@ -694,6 +697,8 @@ int qemuTestDriverInit(virQEMUDriver *driver) if (virMutexInit(&driver->lock) < 0) return -1; =20 + driver->hostarch =3D virArchFromHost(); + driver->config =3D virQEMUDriverConfigNew(false); if (!driver->config) goto error; diff --git a/tests/testutilsqemu.h b/tests/testutilsqemu.h index da3bf3ab7a..8dcc930ac3 100644 --- a/tests/testutilsqemu.h +++ b/tests/testutilsqemu.h @@ -80,8 +80,8 @@ extern virCPUDefPtr cpuHaswell; extern virCPUDefPtr cpuPower8; extern virCPUDefPtr cpuPower9; =20 -void qemuTestSetHostArch(virCapsPtr caps, - virArch arch); +void qemuTestSetHostArch(virQEMUDriverPtr driver, + virArch arch); void qemuTestSetHostCPU(virCapsPtr caps, virCPUDefPtr cpu); =20 --=20 2.23.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list