From nobody Tue Sep 9 13:50:28 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1756306208; cv=none; d=zohomail.com; s=zohoarc; b=TVFKHAZfkgb9pTYudDz9btdiyML2PblM3ChW2leXimB4/Dn4N0ygHxLlfzC/xhE9xb0MY4poigz46fxcMs7z7zvjTgbU3otEJGijlVzifJjvixxCsjP50A8Bf2utD+PdbBxaIVINxGGTgMW3vmpO7pF0P+PaFAMquFMP0xXWAKI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756306208; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=6fsx1jnlZKWStsSj2y+nM0EHrRKPo+QQR2aZj4n5zhI=; b=dqjHUrNvdxN97CpMQeMGcSg19nkgM0XzD9Q05JXol2g/7K0HBRmf2BLe6Uj3jZAku6k66O9VbzLXDcR7QGJaYn/TASga0rdV5h4816Q6y0wAcAAjzDUNrI1RCou+rT/3b9lpCeSKEMljANb6oiX9kmVwmChiVY79gCnakeRki48= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1756306208601741.7234604863745; Wed, 27 Aug 2025 07:50:08 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 1A9BF4410C; Wed, 27 Aug 2025 10:50:08 -0400 (EDT) Received: from [172.19.199.3] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id C693C44117; Wed, 27 Aug 2025 10:47:54 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 7932443E80; Wed, 27 Aug 2025 10:47:25 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 651BF4402F for ; Wed, 27 Aug 2025 10:47:04 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-107-B70M8GWAOsm5jgtu4kW15w-1; Wed, 27 Aug 2025 10:47:02 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A1E1318002AC for ; Wed, 27 Aug 2025 14:47:01 +0000 (UTC) Received: from speedmetal.redhat.com (unknown [10.44.22.3]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DACA730001A5 for ; Wed, 27 Aug 2025 14:47:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1756306024; h=from:from: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; bh=6fsx1jnlZKWStsSj2y+nM0EHrRKPo+QQR2aZj4n5zhI=; b=fmaQHes37/Iq1R9V0Esbvb4v1d22EECe7i0UeNlbn+KqcPMzCqpKe999Q8m7BDVNM8UUh3 L3nHREaJgQKRM8zmd5HPQFXgDzEtx8QNrHDB430+Iq6Sr1Ze8yvj0Nd+W+xoTomWuwlZ7W hFuNmfYdnV7J1mupgZXqnFFCinlrT98= X-MC-Unique: B70M8GWAOsm5jgtu4kW15w-1 X-Mimecast-MFC-AGG-ID: B70M8GWAOsm5jgtu4kW15w_1756306021 To: devel@lists.libvirt.org Subject: [PATCH 04/10] qemu: capabilities: Detect TPM related capabilities from 'qom-list-types' Date: Wed, 27 Aug 2025 16:46:47 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: LUz0JmN_hFOBFecQACPS3Y-2GVU7UDvUSLdFbr3u2fc_1756306021 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: T567X72R5F3BEQI7IW6IHFPXG37U7ENM X-Message-ID-Hash: T567X72R5F3BEQI7IW6IHFPXG37U7ENM X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1756306211546124100 Content-Type: text/plain; charset="utf-8" From: Peter Krempa All the information needed to detect supported TPM front and backends is present in the QOM types we already query, thus we don't need to invoke specific commands for querying TPM stuff. The only discrepancy is that there are 3 versions of 'tpm-tis' based on the backed they use. This patch reworks the probing but keeps the query commands in place. Signed-off-by: Peter Krempa --- src/qemu/qemu_capabilities.c | 53 ++++++------------------------------ 1 file changed, 8 insertions(+), 45 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 75ce877b58..e7404ad27f 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1427,6 +1427,13 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes= [] =3D { { "amd-iommu", QEMU_CAPS_AMD_IOMMU }, { "usb-bot", QEMU_CAPS_DEVICE_USB_BOT }, { "tdx-guest", QEMU_CAPS_TDX_GUEST}, + { "tpm-crb", QEMU_CAPS_DEVICE_TPM_CRB }, + { "tpm-tis", QEMU_CAPS_DEVICE_TPM_TIS }, + { "tpm-tis-device", QEMU_CAPS_DEVICE_TPM_TIS }, + { "tpm-tis-i2c", QEMU_CAPS_DEVICE_TPM_TIS }, + { "tpm-spapr", QEMU_CAPS_DEVICE_TPM_SPAPR }, + { "tpm-emulator", QEMU_CAPS_DEVICE_TPM_EMULATOR }, + { "tpm-passthrough", QEMU_CAPS_DEVICE_TPM_PASSTHROUGH }, }; @@ -3381,44 +3388,12 @@ virQEMUCapsUpdateCPUDeprecatedFeatures(virQEMUCaps = *qemuCaps, } -struct tpmTypeToCaps { - int type; - virQEMUCapsFlags caps; -}; - -static const struct tpmTypeToCaps virQEMUCapsTPMTypesToCaps[] =3D { - { - .type =3D VIR_DOMAIN_TPM_TYPE_PASSTHROUGH, - .caps =3D QEMU_CAPS_DEVICE_TPM_PASSTHROUGH, - }, - { - .type =3D VIR_DOMAIN_TPM_TYPE_EMULATOR, - .caps =3D QEMU_CAPS_DEVICE_TPM_EMULATOR, - }, -}; - -const struct tpmTypeToCaps virQEMUCapsTPMModelsToCaps[] =3D { - { - .type =3D VIR_DOMAIN_TPM_MODEL_TIS, - .caps =3D QEMU_CAPS_DEVICE_TPM_TIS, - }, - { - .type =3D VIR_DOMAIN_TPM_MODEL_CRB, - .caps =3D QEMU_CAPS_DEVICE_TPM_CRB, - }, - { - .type =3D VIR_DOMAIN_TPM_MODEL_SPAPR, - .caps =3D QEMU_CAPS_DEVICE_TPM_SPAPR, - }, -}; - static int -virQEMUCapsProbeQMPTPM(virQEMUCaps *qemuCaps, +virQEMUCapsProbeQMPTPM(virQEMUCaps *qemuCaps G_GNUC_UNUSED, qemuMonitor *mon) { g_auto(GStrv) models =3D NULL; g_auto(GStrv) types =3D NULL; - size_t i; if (qemuMonitorGetTPMModels(mon, &models) < 0) return -1; @@ -3426,24 +3401,12 @@ virQEMUCapsProbeQMPTPM(virQEMUCaps *qemuCaps, if (!models) return 0; - for (i =3D 0; i < G_N_ELEMENTS(virQEMUCapsTPMModelsToCaps); i++) { - const char *needle =3D virDomainTPMModelTypeToString(virQEMUCapsTP= MModelsToCaps[i].type); - if (g_strv_contains((const char **)models, needle)) - virQEMUCapsSet(qemuCaps, virQEMUCapsTPMModelsToCaps[i].caps); - } - if (qemuMonitorGetTPMTypes(mon, &types) < 0) return -1; if (!types) return 0; - for (i =3D 0; i < G_N_ELEMENTS(virQEMUCapsTPMTypesToCaps); i++) { - const char *needle =3D virDomainTPMBackendTypeToString(virQEMUCaps= TPMTypesToCaps[i].type); - if (g_strv_contains((const char **)types, needle)) - virQEMUCapsSet(qemuCaps, virQEMUCapsTPMTypesToCaps[i].caps); - } - return 0; } --=20 2.51.0