From nobody Mon Feb 9 01:17:14 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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 (zoho.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=1572960522; cv=none; d=zoho.com; s=zohoarc; b=S/UMUTaW+deWzIugq7pfUAsr/y7F0tEkpkZOD1tpN0DPmtC4v4wd3CvcjmnJ/z2YrTrvsLPRYE6ZLKj+88VPpBKfCeCZiBBldm+1ybHP696sPP662S+MVbQZ+KvNps2d193LfHAxAx90NJ3TuhWPIXuiwZxOSKzTNNw9g9R+Yaw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1572960522; 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=kp60a32zLNdQmTqGrwtv+t+iF7efvhVSkt+2vB8WXZE=; b=e8RU4ODt53/an8ZmTy5uZMmJ/0ONT3OBEqjUZjpuvzSQXy4+M41xxq/y9mGxPRnUZnW36YClGUD0sUo7l19pRiP1L24daFQ7dvg5KJAzNyYsF1dQg/1oSZo+SEYmeCDFneYiX/7/k1mTtiosMjJCtVW2C5aZmwE63tzCJE9qhEI= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.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 1572960522713915.4434515063057; Tue, 5 Nov 2019 05:28:42 -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-285-DJeU-G2KMp-QkwrTf1d8lA-1; Tue, 05 Nov 2019 08:28:38 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9FA97801E6B; Tue, 5 Nov 2019 13:28:32 +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 697A9600CC; Tue, 5 Nov 2019 13:28:32 +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 1A5F018034EE; Tue, 5 Nov 2019 13:28:32 +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 xA5DRxh2003955 for ; Tue, 5 Nov 2019 08:27:59 -0500 Received: by smtp.corp.redhat.com (Postfix) id AFA37600CC; Tue, 5 Nov 2019 13:27:59 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.188]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 60CB7600C4 for ; Tue, 5 Nov 2019 13:27:59 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id BA92C105D6D; Tue, 5 Nov 2019 14:27:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1572960521; 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=kp60a32zLNdQmTqGrwtv+t+iF7efvhVSkt+2vB8WXZE=; b=RclhAboe3Y5dGog8IypqtD3hst+eN07bDSZNEb9qxYgU8XEqpCM8iPYg0qOT6OZYX2s7Ha dkPxv14s9GujiSNjfGxf2ggT+uWQDY+4Hluduibv6BXJv8nheFo7j0Dm0mpjyhujGdpAUx kjMOaEprAL3guhuR752t2X4qCx2oWKo= From: Jiri Denemark To: libvir-list@redhat.com Date: Tue, 5 Nov 2019 14:27:22 +0100 Message-Id: <46ce6a21a426c28bac950313a2c1a4fde2648ac6.1572958254.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 24/52] qemu: Introduce virQEMUCapsAccel structure 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.11 X-MC-Unique: DJeU-G2KMp-QkwrTf1d8lA-1 X-Mimecast-Spam-Score: 0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" This is container for capabilities data that depend on the accelerator. Signed-off-by: Jiri Denemark Reviewed-by: J=C3=A1n Tomko --- Notes: Version 3: - new patch src/qemu/qemu_capabilities.c | 66 ++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 54f2ecb7f4..c6a2f65239 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -576,6 +576,13 @@ struct _virQEMUCapsHostCPUData { virCPUDefPtr full; }; =20 +typedef struct _virQEMUCapsAccel virQEMUCapsAccel; +typedef virQEMUCapsAccel *virQEMUCapsAccelPtr; +struct _virQEMUCapsAccel { + virQEMUCapsHostCPUData hostCPU; + qemuMonitorCPUDefsPtr cpuModels; +}; + /* * Update the XML parser/formatter when adding more * information to this struct so that it gets cached @@ -607,8 +614,6 @@ struct _virQEMUCaps { virArch arch; =20 virHashTablePtr domCapsCache; - qemuMonitorCPUDefsPtr kvmCPUModels; - qemuMonitorCPUDefsPtr tcgCPUModels; =20 size_t nmachineTypes; struct virQEMUCapsMachineType *machineTypes; @@ -618,8 +623,9 @@ struct _virQEMUCaps { =20 virSEVCapability *sevCapabilities; =20 - virQEMUCapsHostCPUData kvmCPU; - virQEMUCapsHostCPUData tcgCPU; + /* Capabilities which may differ depending on the accelerator. */ + virQEMUCapsAccel kvm; + virQEMUCapsAccel tcg; }; =20 struct virQEMUCapsSearchData { @@ -1620,11 +1626,11 @@ virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qe= muCaps) =20 ret->arch =3D qemuCaps->arch; =20 - ret->kvmCPUModels =3D qemuMonitorCPUDefsCopy(qemuCaps->kvmCPUModels); - ret->tcgCPUModels =3D qemuMonitorCPUDefsCopy(qemuCaps->tcgCPUModels); + ret->kvm.cpuModels =3D qemuMonitorCPUDefsCopy(qemuCaps->kvm.cpuModels); + ret->tcg.cpuModels =3D qemuMonitorCPUDefsCopy(qemuCaps->tcg.cpuModels); =20 - if (virQEMUCapsHostCPUDataCopy(&ret->kvmCPU, &qemuCaps->kvmCPU) < 0 || - virQEMUCapsHostCPUDataCopy(&ret->tcgCPU, &qemuCaps->tcgCPU) < 0) + if (virQEMUCapsHostCPUDataCopy(&ret->kvm.hostCPU, &qemuCaps->kvm.hostC= PU) < 0 || + virQEMUCapsHostCPUDataCopy(&ret->tcg.hostCPU, &qemuCaps->tcg.hostC= PU) < 0) goto error; =20 if (VIR_ALLOC_N(ret->machineTypes, qemuCaps->nmachineTypes) < 0) @@ -1670,8 +1676,8 @@ void virQEMUCapsDispose(void *obj) VIR_FREE(qemuCaps->machineTypes); =20 virHashFree(qemuCaps->domCapsCache); - virObjectUnref(qemuCaps->kvmCPUModels); - virObjectUnref(qemuCaps->tcgCPUModels); + virObjectUnref(qemuCaps->kvm.cpuModels); + virObjectUnref(qemuCaps->tcg.cpuModels); =20 virBitmapFree(qemuCaps->flags); =20 @@ -1683,8 +1689,8 @@ void virQEMUCapsDispose(void *obj) =20 virSEVCapabilitiesFree(qemuCaps->sevCapabilities); =20 - virQEMUCapsHostCPUDataClear(&qemuCaps->kvmCPU); - virQEMUCapsHostCPUDataClear(&qemuCaps->tcgCPU); + virQEMUCapsHostCPUDataClear(&qemuCaps->kvm.hostCPU); + virQEMUCapsHostCPUDataClear(&qemuCaps->tcg.hostCPU); } =20 void @@ -1849,10 +1855,10 @@ virQEMUCapsAddCPUDefinitions(virQEMUCapsPtr qemuCap= s, size_t start; qemuMonitorCPUDefsPtr defs =3D NULL; =20 - if (type =3D=3D VIR_DOMAIN_VIRT_KVM && qemuCaps->kvmCPUModels) - defs =3D qemuCaps->kvmCPUModels; - else if (type =3D=3D VIR_DOMAIN_VIRT_QEMU && qemuCaps->tcgCPUModels) - defs =3D qemuCaps->tcgCPUModels; + if (type =3D=3D VIR_DOMAIN_VIRT_KVM && qemuCaps->kvm.cpuModels) + defs =3D qemuCaps->kvm.cpuModels; + else if (type =3D=3D VIR_DOMAIN_VIRT_QEMU && qemuCaps->tcg.cpuModels) + defs =3D qemuCaps->tcg.cpuModels; =20 if (defs) { start =3D defs->ncpus; @@ -1866,9 +1872,9 @@ virQEMUCapsAddCPUDefinitions(virQEMUCapsPtr qemuCaps, return -1; =20 if (type =3D=3D VIR_DOMAIN_VIRT_KVM) - qemuCaps->kvmCPUModels =3D defs; + qemuCaps->kvm.cpuModels =3D defs; else - qemuCaps->tcgCPUModels =3D defs; + qemuCaps->tcg.cpuModels =3D defs; } =20 for (i =3D 0; i < count; i++) { @@ -1921,9 +1927,9 @@ virQEMUCapsGetCPUModels(virQEMUCapsPtr qemuCaps, qemuMonitorCPUDefsPtr defs; =20 if (type =3D=3D VIR_DOMAIN_VIRT_KVM) - defs =3D qemuCaps->kvmCPUModels; + defs =3D qemuCaps->kvm.cpuModels; else - defs =3D qemuCaps->tcgCPUModels; + defs =3D qemuCaps->tcg.cpuModels; =20 if (!defs) return NULL; @@ -1937,9 +1943,9 @@ virQEMUCapsGetHostCPUData(virQEMUCapsPtr qemuCaps, virDomainVirtType type) { if (type =3D=3D VIR_DOMAIN_VIRT_KVM) - return &qemuCaps->kvmCPU; + return &qemuCaps->kvm.hostCPU; else - return &qemuCaps->tcgCPU; + return &qemuCaps->tcg.hostCPU; } =20 =20 @@ -2001,9 +2007,9 @@ virQEMUCapsIsCPUModeSupported(virQEMUCapsPtr qemuCaps, =20 case VIR_CPU_MODE_CUSTOM: if (type =3D=3D VIR_DOMAIN_VIRT_KVM) - cpus =3D qemuCaps->kvmCPUModels; + cpus =3D qemuCaps->kvm.cpuModels; else - cpus =3D qemuCaps->tcgCPUModels; + cpus =3D qemuCaps->tcg.cpuModels; return cpus && cpus->ncpus > 0; =20 case VIR_CPU_MODE_LAST: @@ -2532,9 +2538,9 @@ virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemu= Caps, return -1; =20 if (tcg || !virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM)) - qemuCaps->tcgCPUModels =3D defs; + qemuCaps->tcg.cpuModels =3D defs; else - qemuCaps->kvmCPUModels =3D defs; + qemuCaps->kvm.cpuModels =3D defs; =20 return 0; } @@ -3547,9 +3553,9 @@ virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps, } =20 if (type =3D=3D VIR_DOMAIN_VIRT_KVM) - qemuCaps->kvmCPUModels =3D g_steal_pointer(&defs); + qemuCaps->kvm.cpuModels =3D g_steal_pointer(&defs); else - qemuCaps->tcgCPUModels =3D g_steal_pointer(&defs); + qemuCaps->tcg.cpuModels =3D g_steal_pointer(&defs); =20 return 0; } @@ -3976,10 +3982,10 @@ virQEMUCapsFormatCPUModels(virQEMUCapsPtr qemuCaps, =20 if (type =3D=3D VIR_DOMAIN_VIRT_KVM) { typeStr =3D "kvm"; - defs =3D qemuCaps->kvmCPUModels; + defs =3D qemuCaps->kvm.cpuModels; } else { typeStr =3D "tcg"; - defs =3D qemuCaps->tcgCPUModels; + defs =3D qemuCaps->tcg.cpuModels; } =20 if (!defs) --=20 2.23.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list