From nobody Sun Dec 14 20:15:59 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 1750845226955969.1822801235297; Wed, 25 Jun 2025 02:53:46 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id C2A3D14EE; Wed, 25 Jun 2025 05:53:45 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 36B42147D; Wed, 25 Jun 2025 05:50:59 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 2C3B9145F; Wed, 25 Jun 2025 05:50:49 -0400 (EDT) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (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 F00AF145C for ; Wed, 25 Jun 2025 05:50:34 -0400 (EDT) Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2025 02:49:33 -0700 Received: from spr-s2600bt.bj.intel.com ([10.240.192.127]) by fmviesa007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2025 02:49:30 -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=1750845036; x=1782381036; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vkKAgo+o74IAdLFDQurwzSdSmysvN1hZvquJoj74hpM=; b=Ab7dZq7gr/Eendq+gwXTL9mbmyBIIhtyxWMGXbHoaoWudziciNgeLXJy 6h1rBPDRlJzi7+jQUUuDsOLf7rN52bYqzSuLejTRQkU4/Fk/cSINUQtHO gGAL2j0u6PCQH8RMIgfGwzMUvzMOQeTEGm9DBNnRXhNtAhiXtOX8tGHG7 oGH0m21k46mF1jLARS6JjzVS13qH8M+vgjKYBZ1uvvsWFKNz6OoHiNayc 2aDkwHOuqCP7bHqazNK6ADG5WoC4lvxjoyUqnIkysjsblRu8o1m9J9k0d Y6n0QUWNR/eHNixplzz8ewYVcJWRIGUMiIPKlZX4EHGdIMnm0mjiA0NKS g==; X-CSE-ConnectionGUID: jnCKAKqpTfiEZRcJvpe4XA== X-CSE-MsgGUID: CTv1c8/uQ369WFTRJFeOZg== X-IronPort-AV: E=McAfee;i="6800,10657,11474"; a="70680295" X-IronPort-AV: E=Sophos;i="6.16,264,1744095600"; d="scan'208";a="70680295" X-CSE-ConnectionGUID: BGvhAkMQTC6Xe0RfHtMJLw== X-CSE-MsgGUID: k7Jewd50S9iu1BSSCKRCSQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,264,1744095600"; d="scan'208";a="151786567" From: Zhenzhong Duan To: devel@lists.libvirt.org Subject: [PATCH v2 01/21] tools: Secure guest check for Intel in virt-host-validate Date: Wed, 25 Jun 2025 17:45:13 +0800 Message-Id: <20250625094533.234897-2-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250625094533.234897-1-zhenzhong.duan@intel.com> References: <20250625094533.234897-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: C2UBA2XO5KPFYBDFA5BRM4EJ5T3MV3R6 X-Message-ID-Hash: C2UBA2XO5KPFYBDFA5BRM4EJ5T3MV3R6 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: 1750845228351116600 Content-Type: text/plain; charset="utf-8" Add check in virt-host-validate for secure guest support on x86 for Intel Trust Domain Extentions. Suggested-by: Daniel P. Berrang=C3=A9 Signed-off-by: Zhenzhong Duan Reviewed-by: Daniel P. Berrang=C3=A9 --- tools/virt-host-validate-common.c | 31 ++++++++++++++++++++++++++++++- tools/virt-host-validate-common.h | 1 + 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/tools/virt-host-validate-common.c b/tools/virt-host-validate-c= ommon.c index 63cc3dbe7b..59f6ac3319 100644 --- a/tools/virt-host-validate-common.c +++ b/tools/virt-host-validate-common.c @@ -44,7 +44,8 @@ VIR_ENUM_IMPL(virHostValidateCPUFlag, "svm", "sie", "158", - "sev"); + "sev", + "tdx_host_platform"); =20 =20 int virHostValidateDeviceExists(const char *hvname, @@ -434,12 +435,36 @@ virHostValidateAMDSev(const char *hvname, } =20 =20 +static int virHostValidateIntelTDX(virValidateLevel level) +{ + g_autofree char *mod_value =3D NULL; + + if (virFileReadValueString(&mod_value, "/sys/module/kvm_intel/paramete= rs/tdx") < 0) { + virValidateFail(level, "Intel Trust Domain Extentions not " + "supported by the currently used kernel"); + return VIR_VALIDATE_FAILURE(level); + } + + if (mod_value[0] !=3D 'Y') { + virValidateFail(level, + "Intel Trust Domain Extentions appears to be " + "disabled in kernel. Add kvm_intel.tdx=3DY " + "to the kernel cmdline arguments"); + return VIR_VALIDATE_FAILURE(level); + } + + virValidatePass(); + return 1; +} + + int virHostValidateSecureGuests(const char *hvname, virValidateLevel level) { g_autoptr(virBitmap) flags =3D NULL; bool hasFac158 =3D false; bool hasAMDSev =3D false; + bool hasIntelTDX =3D false; virArch arch =3D virArchFromHost(); g_autofree char *cmdline =3D NULL; static const char *kIBMValues[] =3D {"y", "Y", "on", "ON", "oN", "On",= "1"}; @@ -450,6 +475,8 @@ int virHostValidateSecureGuests(const char *hvname, hasFac158 =3D true; else if (flags && virBitmapIsBitSet(flags, VIR_HOST_VALIDATE_CPU_FLAG_= SEV)) hasAMDSev =3D true; + else if (flags && virBitmapIsBitSet(flags, VIR_HOST_VALIDATE_CPU_FLAG_= TDX)) + hasIntelTDX =3D true; =20 virValidateCheck(hvname, "%s", _("Checking for secure guest support")); if (ARCH_IS_S390(arch)) { @@ -485,6 +512,8 @@ int virHostValidateSecureGuests(const char *hvname, } } else if (hasAMDSev) { return virHostValidateAMDSev(hvname, level); + } else if (hasIntelTDX) { + return virHostValidateIntelTDX(level); } =20 virValidateFail(level, diff --git a/tools/virt-host-validate-common.h b/tools/virt-host-validate-c= ommon.h index 7fb3545fe3..c81d203933 100644 --- a/tools/virt-host-validate-common.h +++ b/tools/virt-host-validate-common.h @@ -32,6 +32,7 @@ typedef enum { VIR_HOST_VALIDATE_CPU_FLAG_SIE, VIR_HOST_VALIDATE_CPU_FLAG_FACILITY_158, VIR_HOST_VALIDATE_CPU_FLAG_SEV, + VIR_HOST_VALIDATE_CPU_FLAG_TDX, =20 VIR_HOST_VALIDATE_CPU_FLAG_LAST, } virHostValidateCPUFlag; --=20 2.34.1 From nobody Sun Dec 14 20:15:59 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 175084524950513.38435981596706; Wed, 25 Jun 2025 02:54:09 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 8CFB913ED; Wed, 25 Jun 2025 05:54:08 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id E33051420; Wed, 25 Jun 2025 05:51:01 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 96E40145C; Wed, 25 Jun 2025 05:50:49 -0400 (EDT) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (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 C86DD140E for ; Wed, 25 Jun 2025 05:50:37 -0400 (EDT) Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2025 02:49:36 -0700 Received: from spr-s2600bt.bj.intel.com ([10.240.192.127]) by fmviesa007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2025 02:49:33 -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=1750845038; x=1782381038; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vUREPmr5YkyBUeSAuKXvMmRkyrnyAOXSRB/rX5t3PNQ=; b=C8aSZ8F7zvCCDxwkdOXqs8Ots+tJsC/9sZoD5fCIDrEzg0HQT7DpR8Vg 2wKwh98kgouufgCnXFcpuT4k2PgTh6Q5UDgsgUjqK8TPSSvGGH24TtFK7 rW1Tx8k8M4SselDOH/dwRpPLgC1F3oByH83MQZ12bINZD6+NB0tpStM7r iI7Ob6aXLtqeattHnBRCgt/5oC6Xrphkuy7JE4734Y7i0IAe733MOpZb+ linQV+zjuPwrWyQkVeSUfI4Sk0/UXnelYGCtfVJuplw0jFnVUAdK+Heer 6qM5qkP0ByjyXhAOH9ohoRBn0q3ol73dgv8sSCJFBzOjxzoLVPxXf0qwR g==; X-CSE-ConnectionGUID: UffmSGNeQD+gDBd05j0gcQ== X-CSE-MsgGUID: qCMQD5iXSj+YtMbh3sKlIA== X-IronPort-AV: E=McAfee;i="6800,10657,11474"; a="70680299" X-IronPort-AV: E=Sophos;i="6.16,264,1744095600"; d="scan'208";a="70680299" X-CSE-ConnectionGUID: Z+8d+RiNTvanKJz5JP41PA== X-CSE-MsgGUID: EkW/cA2tQiqxLoxs1tLKZw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,264,1744095600"; d="scan'208";a="151786576" From: Zhenzhong Duan To: devel@lists.libvirt.org Subject: [PATCH v2 02/21] qemu: Check if INTEL Trust Domain Extention support is enabled Date: Wed, 25 Jun 2025 17:45:14 +0800 Message-Id: <20250625094533.234897-3-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250625094533.234897-1-zhenzhong.duan@intel.com> References: <20250625094533.234897-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: PAWR3RCXV3DT5DRO2PGJNRWMEXNZ4SOO X-Message-ID-Hash: PAWR3RCXV3DT5DRO2PGJNRWMEXNZ4SOO 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: 1750845250669116600 Content-Type: text/plain; charset="utf-8" Implement TDX check in order to generate domain feature capability correctly in case the availability of the feature changed. For INTEL TDX the verification is: - checking if "/sys/module/kvm_intel/parameters/tdx" contains the value 'Y': meaning TDX is enabled in the host kernel. Signed-off-by: Zhenzhong Duan Reviewed-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_capabilities.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b02f8e7a01..732c89fe29 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -5322,6 +5322,24 @@ virQEMUCapsKVMSupportsSecureGuestAMD(void) } =20 =20 +/* + * Check whether INTEL Trust Domain Extention (x86) is enabled + */ +static bool +virQEMUCapsKVMSupportsSecureGuestTDX(void) +{ + g_autofree char *modValue =3D NULL; + + if (virFileReadValueString(&modValue, "/sys/module/kvm_intel/parameter= s/tdx") < 0) + return false; + + if (modValue[0] !=3D 'Y') + return false; + + return true; +} + + /* * Check whether the secure guest functionality is enabled. * See the specific architecture function for details on the verifications= made. @@ -5335,7 +5353,8 @@ virQEMUCapsKVMSupportsSecureGuest(void) return virQEMUCapsKVMSupportsSecureGuestS390(); =20 if (ARCH_IS_X86(arch)) - return virQEMUCapsKVMSupportsSecureGuestAMD(); + return virQEMUCapsKVMSupportsSecureGuestAMD() || + virQEMUCapsKVMSupportsSecureGuestTDX(); =20 return false; } --=20 2.34.1 From nobody Sun Dec 14 20:15:59 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 1750845324548895.4152047725339; Wed, 25 Jun 2025 02:55:24 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 90A0B14EC; Wed, 25 Jun 2025 05:55:23 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id CFB8513D4; Wed, 25 Jun 2025 05:51:10 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 2E69F1391; Wed, 25 Jun 2025 05:50:51 -0400 (EDT) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (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 1E5DD13CC for ; Wed, 25 Jun 2025 05:50:41 -0400 (EDT) Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2025 02:49:39 -0700 Received: from spr-s2600bt.bj.intel.com ([10.240.192.127]) by fmviesa007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2025 02:49:36 -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=1750845041; x=1782381041; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=X6SkugNfdXL9t1/pLKy+wviRyqu0t7y7eyKXzmN55x0=; b=E0HeMRoiIQbD+o/rQafe93Iw7gPPpbPfxbTJx7T4p0wTVFKf2mWW9by8 0m0K053GQNwNCTgfti3RkRue/XIZtNix/wZe4AFjV9VrQKfPf3IKMYIin zdp2607YbCUKFc6Q3C4Sp4jxP3YX27u+JZgw6VpN1WrLINsVnZjvXfJgM sagbzkhS0XqNXX/h06EaAl9hWOVIy8JfpKU7F80HZ0h0W2vi8nrdHzdr6 sosp1oXS1Sr0fBhhzle7pimk0QUp4+woltPBKgS22RyPLmsiC2UxmyePo oWPO2iClN/YzCiG1o26bTykb+cU8K/XJ4RRExUL8oSw6hMSGghIx+wzpe A==; X-CSE-ConnectionGUID: vKNHIaVYSnizWRfCDjn94A== X-CSE-MsgGUID: PM98CYA9QL2KuN9a/yu4QA== X-IronPort-AV: E=McAfee;i="6800,10657,11474"; a="70680318" X-IronPort-AV: E=Sophos;i="6.16,264,1744095600"; d="scan'208";a="70680318" X-CSE-ConnectionGUID: sQRfslMpQamBA+rAMmX31A== X-CSE-MsgGUID: /ioQSMPOQbqTeUQOqV9yxA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,264,1744095600"; d="scan'208";a="151786581" From: Zhenzhong Duan To: devel@lists.libvirt.org Subject: [PATCH v2 03/21] qemu: Add TDX capability Date: Wed, 25 Jun 2025 17:45:15 +0800 Message-Id: <20250625094533.234897-4-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250625094533.234897-1-zhenzhong.duan@intel.com> References: <20250625094533.234897-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: T6ROCK3M73BRA6XFN37HQF5W3BKTGKCU X-Message-ID-Hash: T6ROCK3M73BRA6XFN37HQF5W3BKTGKCU 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: 1750845325263116600 Content-Type: text/plain; charset="utf-8" QEMU_CAPS_TDX_GUEST set means TDX supported with this QEMU. Signed-off-by: Chenyi Qiang Signed-off-by: Zhenzhong Duan Reviewed-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + 2 files changed, 3 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 732c89fe29..3def894a22 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -741,6 +741,7 @@ VIR_ENUM_IMPL(virQEMUCaps, "amd-iommu", /* QEMU_CAPS_AMD_IOMMU */ "amd-iommu.pci-id", /* QEMU_CAPS_AMD_IOMMU_PCI_ID */ "usb-bot", /* QEMU_CAPS_DEVICE_USB_BOT */ + "tdx-guest", /* QEMU_CAPS_TDX_GUEST */ ); =20 =20 @@ -1429,6 +1430,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[= ] =3D { { "nvme-ns", QEMU_CAPS_DEVICE_NVME_NS }, { "amd-iommu", QEMU_CAPS_AMD_IOMMU }, { "usb-bot", QEMU_CAPS_DEVICE_USB_BOT }, + { "tdx-guest", QEMU_CAPS_TDX_GUEST}, }; =20 =20 diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 966e30fa11..2c78ea14f3 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -722,6 +722,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ QEMU_CAPS_AMD_IOMMU, /* -device amd-iommu */ QEMU_CAPS_AMD_IOMMU_PCI_ID, /* amd-iommu.pci-id */ QEMU_CAPS_DEVICE_USB_BOT, /* -device usb-bot */ + QEMU_CAPS_TDX_GUEST, /* -object tdx-guest,... */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; --=20 2.34.1 From nobody Sun Dec 14 20:15:59 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 175084535720733.1622161553164; Wed, 25 Jun 2025 02:55:57 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 345FB14CD; Wed, 25 Jun 2025 05:55:56 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 45E6114A2; Wed, 25 Jun 2025 05:51:15 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 726C01459; Wed, 25 Jun 2025 05:51:10 -0400 (EDT) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (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 66EFB13DF for ; Wed, 25 Jun 2025 05:50:44 -0400 (EDT) Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2025 02:49:42 -0700 Received: from spr-s2600bt.bj.intel.com ([10.240.192.127]) by fmviesa007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2025 02:49:39 -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=1750845045; x=1782381045; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=FH7ixINd2sQVJoRP3VJQvhDpGaJoRHfm/JdhPVgRwK0=; b=bPCOdqr0Ntzm68AhKdK3MMNQuxH9j0byxlEDPDGCvP4eK/P687WTEY1E XY2IEmAheJD7CyTgs2CgYP7es3kDN3YFsIZqgIRgL83gU36/cqNsDECMH vpbcO8rep4xNhmRVEs5KEpfOByIspgk3JE4rm2DIpOhxve1ApD0V+4bP2 2+s/cyZl0UTgUKKX7Q6K3R0fZ635K7xAGFNDZZsRjZz6uIeIm1ckwhGMz FbZpJBPxOBYeVym+jrJGtNdvNmUD+89CRgVEMisMLkTRcdzxw+5ebil3a bpSmkZpKFPzlaoOLAzViDMIdJGVCEk0+YZxxNgo0F09pVCymD/2etQefF Q==; X-CSE-ConnectionGUID: n4rr21VwRu6a7JKTuLj4kg== X-CSE-MsgGUID: O9DIwVenRiKWxbgw8u2m6A== X-IronPort-AV: E=McAfee;i="6800,10657,11474"; a="70680324" X-IronPort-AV: E=Sophos;i="6.16,264,1744095600"; d="scan'208";a="70680324" X-CSE-ConnectionGUID: U1d4Ap8oTaSX5PRktUDidA== X-CSE-MsgGUID: ET29dRZ6R0y9q41+DknbwQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,264,1744095600"; d="scan'208";a="151786590" From: Zhenzhong Duan To: devel@lists.libvirt.org Subject: [PATCH v2 04/21] conf: Expose TDX feature in domain capabilities Date: Wed, 25 Jun 2025 17:45:16 +0800 Message-Id: <20250625094533.234897-5-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250625094533.234897-1-zhenzhong.duan@intel.com> References: <20250625094533.234897-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: OJDS62HAPZRPNUR5OGYGPHMWVY2AHSGD X-Message-ID-Hash: OJDS62HAPZRPNUR5OGYGPHMWVY2AHSGD 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: 1750845357629116600 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 +++++++++++++ 5 files changed, 25 insertions(+) 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); --=20 2.34.1 From nobody Sun Dec 14 20:15:59 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 1750845420349210.97837142569745; Wed, 25 Jun 2025 02:57:00 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 5B83813DD; Wed, 25 Jun 2025 05:56:59 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 15D4B14AA; Wed, 25 Jun 2025 05:51:20 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 14F05144F; Wed, 25 Jun 2025 05:51:11 -0400 (EDT) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (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 C135F13C8 for ; Wed, 25 Jun 2025 05:50:46 -0400 (EDT) Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2025 02:49:45 -0700 Received: from spr-s2600bt.bj.intel.com ([10.240.192.127]) by fmviesa007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2025 02:49:42 -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=1750845047; x=1782381047; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6JyVeezqos6mOGL4ZFLKlcE4/0OdGtA9eihyAHCp1pA=; b=nLEXZ6el3C0Hfj18giymCjUNjHGtiMNdNEh52nqD9A6r770CWLsCf0/R 3h8Iqtjx1WsrYPQ36Z2HEtcmC+rjDEJh9wa0CbP5bdii9Y078qAbpysc9 A0EM62CpAgzjuQz2XE+tnww6/r26grU1GuPwMwL690Km8T1v8ORyppT9f nM2XFl8DtNuUejdDnH+gws92n7drUvwPmBmlIaZjiNrCTxDToar6V69ZI b2/DJCfrN6vbr+LgoN8qCSyEjfH+j+oPywTQnGDjWB005M46FpsT/Cq7L 90+XcsWvlEJ1NrGbbaGufGjTG5G483steRZhHxrLbOmH16lh6pi85WwlQ A==; X-CSE-ConnectionGUID: VfXQjmNvSEOnQDvGSJYddA== X-CSE-MsgGUID: 7i+/PLOMRHGYjHQFucyfBw== X-IronPort-AV: E=McAfee;i="6800,10657,11474"; a="70680335" X-IronPort-AV: E=Sophos;i="6.16,264,1744095600"; d="scan'208";a="70680335" X-CSE-ConnectionGUID: svHIteloRxCiyMA0RPEnTQ== X-CSE-MsgGUID: 68txZCL5TGqpjR/8QmafGg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,264,1744095600"; d="scan'208";a="151786601" From: Zhenzhong Duan To: devel@lists.libvirt.org Subject: [PATCH v2 05/21] conf: Add tdx as launch security type Date: Wed, 25 Jun 2025 17:45:17 +0800 Message-Id: <20250625094533.234897-6-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250625094533.234897-1-zhenzhong.duan@intel.com> References: <20250625094533.234897-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: UBT3LISRC3SMMVEDKQCRDD3HXO4JLGD4 X-Message-ID-Hash: UBT3LISRC3SMMVEDKQCRDD3HXO4JLGD4 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: 1750845422587116600 Content-Type: text/plain; charset="utf-8" When 'tdx' is used, the VM will be launched with Intel TDX feature enabled. TDX feature supports running encrypted VM (Trust Domain, TD) under the control of KVM. A TD runs in a CPU model which protects the confidentiality of its memory and its CPU state from other software. There are four optional child elements. Element policy is 64bit hex, bit 0 is set to enable TDX debug, bit 28 is set to enable sept-ve-disable, other bits are reserved currently. When policy isn't specified, QEMU will use its own default value 0x10000000. mrConfigId, mrOwner and mrOwnerConfig are base64 encoded SHA384 digest string. For example: 0x10000001 xxx xxx xxx Signed-off-by: Zhenzhong Duan --- src/conf/domain_conf.c | 49 +++++++++++++++++++++++++++++++ src/conf/domain_conf.h | 11 +++++++ src/conf/domain_validate.c | 1 + src/conf/schemas/domaincommon.rng | 32 ++++++++++++++++++++ src/conf/virconftypes.h | 2 ++ src/qemu/qemu_cgroup.c | 1 + src/qemu/qemu_command.c | 2 ++ src/qemu/qemu_driver.c | 1 + src/qemu/qemu_firmware.c | 1 + src/qemu/qemu_namespace.c | 1 + src/qemu/qemu_process.c | 2 ++ src/qemu/qemu_validate.c | 1 + src/security/security_dac.c | 2 ++ 13 files changed, 106 insertions(+) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 1e24e41a48..d2f01a9397 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1543,6 +1543,7 @@ VIR_ENUM_IMPL(virDomainLaunchSecurity, "sev", "sev-snp", "s390-pv", + "tdx", ); =20 VIR_ENUM_IMPL(virDomainPstoreBackend, @@ -3958,6 +3959,11 @@ virDomainSecDefFree(virDomainSecDef *def) g_free(def->data.sev_snp.id_auth); g_free(def->data.sev_snp.host_data); break; + case VIR_DOMAIN_LAUNCH_SECURITY_TDX: + g_free(def->data.tdx.mrconfigid); + g_free(def->data.tdx.mrowner); + g_free(def->data.tdx.mrownerconfig); + break; case VIR_DOMAIN_LAUNCH_SECURITY_PV: case VIR_DOMAIN_LAUNCH_SECURITY_NONE: case VIR_DOMAIN_LAUNCH_SECURITY_LAST: @@ -14204,6 +14210,29 @@ virDomainSEVSNPDefParseXML(virDomainSEVSNPDef *def, } =20 =20 +static int +virDomainTDXDefParseXML(virDomainTDXDef *def, + xmlXPathContextPtr ctxt) +{ + int rc; + + rc =3D virXPathULongLongBase("string(./policy)", ctxt, 16, &def->polic= y); + if (rc =3D=3D 0) { + def->havePolicy =3D true; + } else if (rc =3D=3D -2) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("failed to get launch security policy for launch = security type TDX")); + return -1; + } + + def->mrconfigid =3D virXPathString("string(./mrConfigId)", ctxt); + def->mrowner =3D virXPathString("string(./mrOwner)", ctxt); + def->mrownerconfig =3D virXPathString("string(./mrOwnerConfig)", ctxt); + + return 0; +} + + static virDomainSecDef * virDomainSecDefParseXML(xmlNodePtr lsecNode, xmlXPathContextPtr ctxt) @@ -14227,6 +14256,10 @@ virDomainSecDefParseXML(xmlNodePtr lsecNode, if (virDomainSEVSNPDefParseXML(&sec->data.sev_snp, ctxt) < 0) return NULL; break; + case VIR_DOMAIN_LAUNCH_SECURITY_TDX: + if (virDomainTDXDefParseXML(&sec->data.tdx, ctxt) < 0) + return NULL; + break; case VIR_DOMAIN_LAUNCH_SECURITY_PV: break; case VIR_DOMAIN_LAUNCH_SECURITY_NONE: @@ -27704,6 +27737,18 @@ virDomainSEVSNPDefFormat(virBuffer *attrBuf, } =20 =20 +static void +virDomainTDXDefFormat(virBuffer *childBuf, virDomainTDXDef *def) +{ + if (def->havePolicy) + virBufferAsprintf(childBuf, "0x%llx\n", def->poli= cy); + + virBufferEscapeString(childBuf, "%s\n", def->= mrconfigid); + virBufferEscapeString(childBuf, "%s\n", def->mrowne= r); + virBufferEscapeString(childBuf, "%s\n",= def->mrownerconfig); +} + + static void virDomainSecDefFormat(virBuffer *buf, virDomainSecDef *sec) { @@ -27725,6 +27770,10 @@ virDomainSecDefFormat(virBuffer *buf, virDomainSec= Def *sec) virDomainSEVSNPDefFormat(&attrBuf, &childBuf, &sec->data.sev_snp); break; =20 + case VIR_DOMAIN_LAUNCH_SECURITY_TDX: + virDomainTDXDefFormat(&childBuf, &sec->data.tdx); + break; + case VIR_DOMAIN_LAUNCH_SECURITY_PV: break; =20 diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 6997cf7c09..e216c63018 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2964,6 +2964,7 @@ typedef enum { VIR_DOMAIN_LAUNCH_SECURITY_SEV, VIR_DOMAIN_LAUNCH_SECURITY_SEV_SNP, VIR_DOMAIN_LAUNCH_SECURITY_PV, + VIR_DOMAIN_LAUNCH_SECURITY_TDX, =20 VIR_DOMAIN_LAUNCH_SECURITY_LAST, } virDomainLaunchSecurity; @@ -2998,11 +2999,21 @@ struct _virDomainSEVSNPDef { }; =20 =20 +struct _virDomainTDXDef { + bool havePolicy; + unsigned long long policy; + char *mrconfigid; + char *mrowner; + char *mrownerconfig; +}; + + struct _virDomainSecDef { virDomainLaunchSecurity sectype; union { virDomainSEVDef sev; virDomainSEVSNPDef sev_snp; + virDomainTDXDef tdx; } data; }; =20 diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index b28af7fa56..7d68ea2478 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -1936,6 +1936,7 @@ virDomainDefLaunchSecurityValidate(const virDomainDef= *def) case VIR_DOMAIN_LAUNCH_SECURITY_NONE: case VIR_DOMAIN_LAUNCH_SECURITY_SEV: case VIR_DOMAIN_LAUNCH_SECURITY_PV: + case VIR_DOMAIN_LAUNCH_SECURITY_TDX: case VIR_DOMAIN_LAUNCH_SECURITY_LAST: break; } diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index 183dd5db5e..56dbddcb43 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -549,6 +549,9 @@ s390-pv + + + @@ -644,6 +647,35 @@ + + + + tdx + + + + + + + + + + + + + + + + + + + + + + + + +