From nobody Wed Feb 11 10:04:35 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1490382165981349.8444429428041; Fri, 24 Mar 2017 12:02:45 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 391787AEA2; Fri, 24 Mar 2017 19:02:45 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0514C60BEF; Fri, 24 Mar 2017 19:02:45 +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 AD71818523CA; Fri, 24 Mar 2017 19:02:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v2OJ0QI5019044 for ; Fri, 24 Mar 2017 15:00:26 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5CDB883EB3; Fri, 24 Mar 2017 19:00:26 +0000 (UTC) Received: from caroline.brq.redhat.com (dhcp129-198.brq.redhat.com [10.34.129.198]) by smtp.corp.redhat.com (Postfix) with ESMTP id D8FAC19630 for ; Fri, 24 Mar 2017 19:00:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 391787AEA2 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 391787AEA2 From: Martin Kletzander To: libvir-list@redhat.com Date: Fri, 24 Mar 2017 19:59:50 +0100 Message-Id: <159781d53c90f57b2066fc46182f52c0de62010e.1490381160.git.mkletzan@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 02/23] Introduce virCPUProbeHost 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Fri, 24 Mar 2017 19:02:45 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Both QEMU and bhyve are using the same function for setting up the CPU in virCapabilities, so de-duplicate it, save code and time, and help other drivers adopt it. Signed-off-by: Martin Kletzander --- src/bhyve/bhyve_capabilities.c | 19 ++----------------- src/cpu/cpu.c | 13 +++++++++++++ src/cpu/cpu.h | 3 +++ src/libvirt_private.syms | 1 + src/qemu/qemu_capabilities.c | 15 +-------------- src/vmware/vmware_conf.c | 12 +++++------- 6 files changed, 25 insertions(+), 38 deletions(-) diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c index 4bf1d84fafc5..169f3644bcbc 100644 --- a/src/bhyve/bhyve_capabilities.c +++ b/src/bhyve/bhyve_capabilities.c @@ -41,21 +41,6 @@ VIR_LOG_INIT("bhyve.bhyve_capabilities"); -static int -virBhyveCapsInitCPU(virCapsPtr caps, - virArch arch) -{ - virNodeInfo nodeinfo; - - if (nodeGetInfo(&nodeinfo)) - return -1; - - if (!(caps->host.cpu =3D virCPUGetHost(arch, VIR_CPU_TYPE_HOST, - &nodeinfo, NULL, 0))) - return -1; - - return 0; -} virCapsPtr virBhyveCapsBuild(void) @@ -77,8 +62,8 @@ virBhyveCapsBuild(void) NULL, NULL, 0, NULL) =3D=3D NULL) goto error; - if (virBhyveCapsInitCPU(caps, virArchFromHost()) < 0) - VIR_WARN("Failed to get host CPU: %s", virGetLastErrorMessage()); + if (!(caps->host.cpu =3D virCPUProbeHost(caps->host.arch))) + VIR_WARN("Failed to get host CPU"); return caps; diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index 1461190bac2a..1bbc2b2f849e 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -26,6 +26,7 @@ #include "virlog.h" #include "viralloc.h" #include "virxml.h" +#include "nodeinfo.h" #include "cpu.h" #include "cpu_map.h" #include "cpu_x86.h" @@ -462,6 +463,18 @@ virCPUGetHost(virArch arch, } +virCPUDefPtr +virCPUProbeHost(virArch arch) +{ + virNodeInfo nodeinfo; + + if (nodeGetInfo(&nodeinfo)) + return NULL; + + return virCPUGetHost(arch, VIR_CPU_TYPE_HOST, &nodeinfo, NULL, 0); +} + + /** * cpuBaselineXML: * diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index d23409a4f068..c8e6b1846382 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -183,6 +183,9 @@ virCPUGetHost(virArch arch, const char **models, unsigned int nmodels); +virCPUDefPtr +virCPUProbeHost(virArch arch); + char * cpuBaselineXML(const char **xmlCPUs, unsigned int ncpus, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index a71b56d7ba9c..7627be9956eb 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1016,6 +1016,7 @@ virCPUDataNew; virCPUDataParse; virCPUGetHost; virCPUGetModels; +virCPUProbeHost; virCPUTranslate; virCPUUpdate; virCPUUpdateLive; diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 8bd39c729b6b..8e7b20ba187c 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1065,19 +1065,6 @@ virQEMUCapsInitGuestFromBinary(virCapsPtr caps, } -static virCPUDefPtr -virQEMUCapsProbeHostCPU(virCapsPtr caps) -{ - virNodeInfo nodeinfo; - - if (nodeGetInfo(&nodeinfo)) - return NULL; - - return virCPUGetHost(caps->host.arch, VIR_CPU_TYPE_HOST, - &nodeinfo, NULL, 0); -} - - virCPUDefPtr virQEMUCapsProbeHostCPUForEmulator(virCapsPtr caps, virQEMUCapsPtr qemuCaps, @@ -1140,7 +1127,7 @@ virCapsPtr virQEMUCapsInit(virQEMUCapsCachePtr cache) VIR_WARN("Failed to query host NUMA topology, disabling NUMA capab= ilities"); } - if (!(caps->host.cpu =3D virQEMUCapsProbeHostCPU(caps))) + if (!(caps->host.cpu =3D virCPUProbeHost(caps->host.arch))) VIR_WARN("Failed to get host CPU"); /* Add the power management features of the host */ diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c index 659c4737a301..0c2b0f4c0be3 100644 --- a/src/vmware/vmware_conf.c +++ b/src/vmware/vmware_conf.c @@ -61,7 +61,6 @@ vmwareCapsInit(void) { virCapsPtr caps =3D NULL; virCapsGuestPtr guest =3D NULL; - virCPUDefPtr cpu =3D NULL; if ((caps =3D virCapabilitiesNew(virArchFromHost(), false, false)) =3D=3D NULL) @@ -81,9 +80,9 @@ vmwareCapsInit(void) VIR_DOMAIN_VIRT_VMWARE, NULL, NULL, 0, NULL) =3D=3D NULL) goto error; + guest =3D NULL; - if (!(cpu =3D virCPUGetHost(caps->host.arch, VIR_CPU_TYPE_HOST, - NULL, NULL, 0))) + if (!(caps->host.cpu =3D virCPUProbeHost(caps->host.arch))) goto error; /* x86_64 guests are supported if @@ -92,9 +91,9 @@ vmwareCapsInit(void) * - Host CPU is x86_64 with virtualization extensions */ if (caps->host.arch =3D=3D VIR_ARCH_X86_64 || - (virCPUCheckFeature(cpu->arch, cpu, "lm") && - (virCPUCheckFeature(cpu->arch, cpu, "vmx") || - virCPUCheckFeature(cpu->arch, cpu, "svm")))) { + (virCPUCheckFeature(caps->host.cpu->arch, caps->host.cpu, "lm") && + (virCPUCheckFeature(caps->host.cpu->arch, caps->host.cpu, "vmx") = || + virCPUCheckFeature(caps->host.cpu->arch, caps->host.cpu, "svm"))= )) { if ((guest =3D virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_HVM, @@ -109,7 +108,6 @@ vmwareCapsInit(void) } cleanup: - virCPUDefFree(cpu); return caps; error: --=20 2.12.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list