From nobody Sun Dec 14 12:13:22 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 header.i=@intel.com; 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=fail(p=none dis=none) header.from=intel.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1751264672550769.0352747701386; Sun, 29 Jun 2025 23:24:32 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 99098144A; Mon, 30 Jun 2025 02:24:31 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 69B5612F8; Mon, 30 Jun 2025 02:22:14 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 87D13144B; Mon, 30 Jun 2025 02:22:08 -0400 (EDT) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 19BE71442 for ; Mon, 30 Jun 2025 02:21:49 -0400 (EDT) Received: from orviesa007.jf.intel.com ([10.64.159.147]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2025 23:21:49 -0700 Received: from spr-s2600bt.bj.intel.com ([10.240.192.127]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2025 23:21:47 -0700 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1751264510; x=1782800510; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=UTOtfZJ5cYWf8tRM4unYNAtKdgko8cGdzd6ANHpzjsM=; b=hYl7+xz6vO/A4k2gTPD2WG38F+3Sa0yhVDX7DUY4kKKnLMnmhaCZ5/PX pUzQxyT4jiLlJgTcxbhDRzJTLdTkr/GQcT5Npckf/n2ruOhwAT9FAwn61 1PbY7YqkfNFBrCqnVpjw3ofrmKSXmj+LaK5YgHeHb4vsrCmk7S1XzwRyh hj4J0hCOjI7DHgOtkH3+7ap9mwiuYOy8x0klF+YnluhDTEK/C00lNPW9t 1R/AAu+qGEYprBlpplbNf4KuVqhK3hrkTlWyU4oCGCRzRR6fSKWffx1VU 8QEdLwLxv8RZFIm8zF+OrmX/yjsebl0W8ogQIfdcEJf2XnJ1X20fUWsgk w==; X-CSE-ConnectionGUID: Lhl4oDe6ThiI953C/sBn/w== X-CSE-MsgGUID: Ff1QrGU9SLKMGzQKjszulg== X-IronPort-AV: E=McAfee;i="6800,10657,11479"; a="70912520" X-IronPort-AV: E=Sophos;i="6.16,277,1744095600"; d="scan'208";a="70912520" X-CSE-ConnectionGUID: PkORVcdOQ9GypZ8yuj0W0A== X-CSE-MsgGUID: S7m5JJpeRjeHQpiT1J/A3g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,277,1744095600"; d="scan'208";a="153549314" From: Zhenzhong Duan To: devel@lists.libvirt.org Subject: [PATCH v3 06/21] conf: Expose TDX feature in domain capabilities Date: Mon, 30 Jun 2025 14:17:17 +0800 Message-Id: <20250630061732.303374-7-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250630061732.303374-1-zhenzhong.duan@intel.com> References: <20250630061732.303374-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: BE4UEEJAJRJ42VNYSUVQRMVALDHD2ZMH X-Message-ID-Hash: BE4UEEJAJRJ42VNYSUVQRMVALDHD2ZMH X-MailFrom: zhenzhong.duan@intel.com X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0 CC: phrdina@redhat.com, pkrempa@redhat.com, jjongsma@redhat.com, jsuchane@redhat.com, chenyi.qiang@intel.com, isaku.yamahata@intel.com, xiaoyao.li@intel.com, chao.p.peng@intel.com, Zhenzhong Duan X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1751264672835116600 Content-Type: text/plain; charset="utf-8" Extend qemu TDX capability to domain capabilities. Signed-off-by: Chenyi Qiang Signed-off-by: Zhenzhong Duan Reviewed-by: Daniel P. Berrang=C3=A9 --- docs/formatdomaincaps.rst | 1 + src/conf/domain_capabilities.c | 1 + src/conf/domain_capabilities.h | 1 + src/conf/schemas/domaincaps.rng | 9 +++++++++ src/qemu/qemu_capabilities.c | 13 +++++++++++++ .../qemu_10.1.0-q35.x86_64+inteltdx.xml | 1 + .../domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml | 1 + tests/domaincapsmock.c | 3 ++- 8 files changed, 29 insertions(+), 1 deletion(-) diff --git a/docs/formatdomaincaps.rst b/docs/formatdomaincaps.rst index ed95af4fee..664194b16d 100644 --- a/docs/formatdomaincaps.rst +++ b/docs/formatdomaincaps.rst @@ -720,6 +720,7 @@ capabilities. All features occur as children of the mai= n ``features`` element. + 47 1 diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index f7cce92ca1..f29c4e0515 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -44,6 +44,7 @@ VIR_ENUM_IMPL(virDomainCapsFeature, "async-teardown", "s390-pv", "ps2", + "tdx", ); =20 static virClass *virDomainCapsClass; diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h index 60d5fe77de..43141dbdd5 100644 --- a/src/conf/domain_capabilities.h +++ b/src/conf/domain_capabilities.h @@ -281,6 +281,7 @@ typedef enum { VIR_DOMAIN_CAPS_FEATURE_ASYNC_TEARDOWN, VIR_DOMAIN_CAPS_FEATURE_S390_PV, VIR_DOMAIN_CAPS_FEATURE_PS2, + VIR_DOMAIN_CAPS_FEATURE_TDX, =20 VIR_DOMAIN_CAPS_FEATURE_LAST } virDomainCapsFeature; diff --git a/src/conf/schemas/domaincaps.rng b/src/conf/schemas/domaincaps.= rng index 8bc34691c7..7edae54931 100644 --- a/src/conf/schemas/domaincaps.rng +++ b/src/conf/schemas/domaincaps.rng @@ -367,6 +367,9 @@ + + + @@ -431,6 +434,12 @@ =20 + + + + + + diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 3def894a22..f4f77a491c 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -7012,6 +7012,18 @@ virQEMUCapsFillDomainFeatureHypervCaps(virQEMUCaps *= qemuCaps, } =20 =20 +static void +virQEMUCapsFillDomainFeatureTDXCaps(virQEMUCaps *qemuCaps, + virDomainCaps *domCaps) +{ + if (domCaps->arch =3D=3D VIR_ARCH_X86_64 && + domCaps->virttype =3D=3D VIR_DOMAIN_VIRT_KVM && + virQEMUCapsGet(qemuCaps, QEMU_CAPS_TDX_GUEST) && + virQEMUCapsGetKVMSupportsSecureGuest(qemuCaps)) + domCaps->features[VIR_DOMAIN_CAPS_FEATURE_TDX] =3D VIR_TRISTAT= E_BOOL_YES; +} + + int virQEMUCapsFillDomainCaps(virQEMUDriverConfig *cfg, virQEMUCaps *qemuCaps, @@ -7076,6 +7088,7 @@ virQEMUCapsFillDomainCaps(virQEMUDriverConfig *cfg, virQEMUCapsFillDomainFeaturePS2Caps(qemuCaps, domCaps); virQEMUCapsFillDomainFeatureSGXCaps(qemuCaps, domCaps); virQEMUCapsFillDomainFeatureHypervCaps(qemuCaps, domCaps); + virQEMUCapsFillDomainFeatureTDXCaps(qemuCaps, domCaps); virQEMUCapsFillDomainDeviceCryptoCaps(qemuCaps, crypto); virQEMUCapsFillDomainLaunchSecurity(qemuCaps, launchSecurity); virQEMUCapsFillDomainDeviceNetCaps(qemuCaps, net); diff --git a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml b/tes= ts/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml index 2bca47b8b1..61aa1aafd0 100644 --- a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml +++ b/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml @@ -739,6 +739,7 @@ + yes diff --git a/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml b/tests/d= omaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml index ffa95830f4..6048a66b87 100644 --- a/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml +++ b/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml @@ -739,6 +739,7 @@ + yes diff --git a/tests/domaincapsmock.c b/tests/domaincapsmock.c index 6ae0c4ad45..cb6e98dbb8 100644 --- a/tests/domaincapsmock.c +++ b/tests/domaincapsmock.c @@ -54,7 +54,8 @@ bool virQEMUCapsGetKVMSupportsSecureGuest(virQEMUCaps *qemuCaps) { if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_CONFIDENTAL_GUEST_SUPPO= RT) && - virQEMUCapsGet(qemuCaps, QEMU_CAPS_S390_PV_GUEST)) + (virQEMUCapsGet(qemuCaps, QEMU_CAPS_S390_PV_GUEST) || + virQEMUCapsGet(qemuCaps, QEMU_CAPS_TDX_GUEST))) return true; =20 if (!real_virQEMUCapsGetKVMSupportsSecureGuest) --=20 2.34.1