From nobody Sat Feb 7 03:05:45 2026 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 1743676405846860.8727484708251; Thu, 3 Apr 2025 03:33:25 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id E522B15A6; Thu, 3 Apr 2025 06:33:24 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id D36101500; Thu, 3 Apr 2025 06:32:25 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id CF28311BC; Thu, 3 Apr 2025 06:32:21 -0400 (EDT) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) (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 2BBC6E88 for ; Thu, 3 Apr 2025 06:32:21 -0400 (EDT) Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Apr 2025 03:32:21 -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; 03 Apr 2025 03:32:18 -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=1743676341; x=1775212341; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vkKAgo+o74IAdLFDQurwzSdSmysvN1hZvquJoj74hpM=; b=kpuzMuTcSD2U6YIW6TGHrbrCVIAW0yCRPXcvp8Mt4pfPc1NxlxrSvP2t 0nGuCzy0YCya9VKV2Ziis1brJNC/eO0SUPTCUba6ibeuKWGCiD2yVpyKA 4PR1QwJYjXI2DGEABwelRRSlb3kyglv0cYpKinoCA8z1fpA1kg9cOlhqo pjDttcox8Is+F5EPjT72ke7axtTULtB3afCuc1iRNHeCHLWqfpMmS8Kh/ P218TXh+W3vi4V7/+5hu93iYpRaxYAOlhIIx1pqRF3Jq9lty+954PhQOr HPQjk5HJNaEoSrknPi/xRUrdQ+iZDgYY8M2XvRboNAM07knbql739G4p9 Q==; X-CSE-ConnectionGUID: lan2Fw3LR4OD39EwR//8Hg== X-CSE-MsgGUID: RnI+3GPmQVWuxgxhCzvzTQ== X-IronPort-AV: E=McAfee;i="6700,10204,11392"; a="56065203" X-IronPort-AV: E=Sophos;i="6.15,184,1739865600"; d="scan'208";a="56065203" X-CSE-ConnectionGUID: fvKrzub2SnmDVqjLD4lNOg== X-CSE-MsgGUID: nlfCdkxcQFev0lnIq6Vz4g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,184,1739865600"; d="scan'208";a="126959259" From: Zhenzhong Duan To: devel@lists.libvirt.org Subject: [PATCH v1 01/18] tools: Secure guest check for Intel in virt-host-validate Date: Thu, 3 Apr 2025 18:28:24 +0800 Message-Id: <20250403102841.3137534-2-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250403102841.3137534-1-zhenzhong.duan@intel.com> References: <20250403102841.3137534-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: XWVM7PTF2QV365UUDQAV5XILGG6VQJ2G X-Message-ID-Hash: XWVM7PTF2QV365UUDQAV5XILGG6VQJ2G 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: 1743676408310019100 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 Sat Feb 7 03:05:45 2026 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 1743676430604387.1583729125837; Thu, 3 Apr 2025 03:33:50 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id AB6271510; Thu, 3 Apr 2025 06:33:49 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id B11AD1446; Thu, 3 Apr 2025 06:32:36 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 00CEA1412; Thu, 3 Apr 2025 06:32:31 -0400 (EDT) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) (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 218A41319 for ; Thu, 3 Apr 2025 06:32:24 -0400 (EDT) Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Apr 2025 03:32:24 -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; 03 Apr 2025 03:32:21 -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=1743676344; x=1775212344; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=o2YWYalxfHSK7+2VNfmOVAU6Dyua11XNnOkixE5VaVI=; b=hedKUyRwQwoZ7S98jf8UbsJyVjj71rN5uShswn4fz5mKmGdmw1raPVtv UjbfQtw6LWZ0nrs8Bfy1gbda4NjKBqbnHM2tBaKByg+HZMb+fYIu6VLTb M2+9GgTAauhdmsTU+5AwvLKJXxLTRZ67+FRPO63AJf5YmrIwUAXZNnqDJ ih7aGamBxO8pMxLFno3pr+68hV1/cdozyHhuTbUA6GTSe9j9S6XK7O5lh qPUV7+LUeRolTbBL5EkFE1wzG7zAYnD9v+chzTvnanzt4vMyvstimk+XQ MBeu03u3Rzr8MF85qbpPdklsPcn1b5jezXlRsFaIt8bw59HuyNN5uFRVS A==; X-CSE-ConnectionGUID: pQwMqQbcTOGPNPOVDGIwAw== X-CSE-MsgGUID: KaKPVO22SdyX1QEiKIF3mw== X-IronPort-AV: E=McAfee;i="6700,10204,11392"; a="56065208" X-IronPort-AV: E=Sophos;i="6.15,184,1739865600"; d="scan'208";a="56065208" X-CSE-ConnectionGUID: 5QPh+Ig8QlGx4+hqpPBOiA== X-CSE-MsgGUID: O/fgdJ/mR7+1QrwIoeKJ+Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,184,1739865600"; d="scan'208";a="126959267" From: Zhenzhong Duan To: devel@lists.libvirt.org Subject: [PATCH v1 02/18] qemu: Check if INTEL Trust Domain Extention support is enabled Date: Thu, 3 Apr 2025 18:28:25 +0800 Message-Id: <20250403102841.3137534-3-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250403102841.3137534-1-zhenzhong.duan@intel.com> References: <20250403102841.3137534-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: CXJQA5DWVVJN5V77RA42OPATXPA6Q65W X-Message-ID-Hash: CXJQA5DWVVJN5V77RA42OPATXPA6Q65W 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: 1743676432406019100 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 665f5e225e..280854d6a6 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -5299,6 +5299,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. @@ -5312,7 +5330,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 Sat Feb 7 03:05:45 2026 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 1743676460517540.1444774337745; Thu, 3 Apr 2025 03:34:20 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 81E5E1654; Thu, 3 Apr 2025 06:34:19 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 29A131404; Thu, 3 Apr 2025 06:32:50 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 9303814E0; Thu, 3 Apr 2025 06:32:45 -0400 (EDT) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) (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 2A89D1511 for ; Thu, 3 Apr 2025 06:32:27 -0400 (EDT) Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Apr 2025 03:32:27 -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; 03 Apr 2025 03:32:24 -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=1743676347; x=1775212347; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NkGkY5VvFkEF/E0oICl2JNgmn7GUQQcmJUZELgomfoU=; b=boXFCPYYczSJ9ONQqXCR6F+WEvsUht4viKl+av3H8B0tTBXT/3QnoWjH MpcckUO84Fk6KiUi9VzrmRfuMhb/Gygp7Iiyw33gKwX3Hy1Yw09cfK+fi 38dcuL2X4TdXvqHCx6cXT0hq+i9omZSW2yMzLNr+AGgRA5pQp6jvYVTr9 fw2NPxEJHEMfVAbk2tUOB9IFUwa+HtM8jKDtpgoewtNsQSW5CTHoUya3n yQ5QL0QR+cRyF8BEwKUWo4OcKimliW9woV5w4/rsQMd3RsJiKlqcAE98P bH0ZRb43aR2W7Xt6FY9Zblott9n5dArLW4gcCsB0sMEHohGNlLP1VuyNH g==; X-CSE-ConnectionGUID: 3pFPkahGR26hOxKNXH5rEA== X-CSE-MsgGUID: 1CzTsaKaTRqt2hzFteEwZg== X-IronPort-AV: E=McAfee;i="6700,10204,11392"; a="56065214" X-IronPort-AV: E=Sophos;i="6.15,184,1739865600"; d="scan'208";a="56065214" X-CSE-ConnectionGUID: HnSiT17CRwua7qUkDxkiPA== X-CSE-MsgGUID: Fp6ZHHLEQCSh0H/ouxCJWQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,184,1739865600"; d="scan'208";a="126959279" From: Zhenzhong Duan To: devel@lists.libvirt.org Subject: [PATCH v1 03/18] qemu: Add TDX capability Date: Thu, 3 Apr 2025 18:28:26 +0800 Message-Id: <20250403102841.3137534-4-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250403102841.3137534-1-zhenzhong.duan@intel.com> References: <20250403102841.3137534-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 2LSNIKCGSSHA7SQAZYYVVMSB5FU3GWVG X-Message-ID-Hash: 2LSNIKCGSSHA7SQAZYYVVMSB5FU3GWVG 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: 1743676462237019100 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 280854d6a6..f241321b0d 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -732,6 +732,7 @@ VIR_ENUM_IMPL(virQEMUCaps, =20 /* 475 */ "virtio-scsi.iothread-mapping", /* QEMU_CAPS_VIRTIO_SCSI_IOT= HREAD_MAPPING */ + "tdx-guest", /* QEMU_CAPS_TDX_GUEST */ ); =20 =20 @@ -1420,6 +1421,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[= ] =3D { { "sev-snp-guest", QEMU_CAPS_SEV_SNP_GUEST }, { "acpi-erst", QEMU_CAPS_DEVICE_ACPI_ERST }, { "virtio-mem-ccw", QEMU_CAPS_DEVICE_VIRTIO_MEM_CCW }, + { "tdx-guest", QEMU_CAPS_TDX_GUEST}, }; =20 =20 diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 685a938bbc..b7263d9348 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -713,6 +713,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ =20 /* 475 */ QEMU_CAPS_VIRTIO_SCSI_IOTHREAD_MAPPING, /* virtio-scsi supports per-vi= rtqueue iothread mapping */ + 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 Sat Feb 7 03:05:45 2026 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 1743676485094226.03467727495843; Thu, 3 Apr 2025 03:34:45 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 7B6BF14CF; Thu, 3 Apr 2025 06:34:44 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 2DF55156B; Thu, 3 Apr 2025 06:32:53 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 7F35D1441; Thu, 3 Apr 2025 06:32:47 -0400 (EDT) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) (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 238451518 for ; Thu, 3 Apr 2025 06:32:30 -0400 (EDT) Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Apr 2025 03:32:30 -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; 03 Apr 2025 03:32:27 -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=1743676350; x=1775212350; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=feiYwgYXDrlZTeCa6vncr0+UAAj/qCX/zngIFuOv2r8=; b=PpUTENoCpYvAqUzxkq0Z/gfjIo4BAT5eBT1fAdiN4M2BXaCDWZsDW+YG T7wLm7xzrOjjVshJphanXLo0G1NK4pOryGAG+ZfvPM1iGBgWOw5E+DHzr 9K09n88BfK5kNOgm0aFSGrV4eL8Ayf/CFCjTTXWByNvhQbxe6qXHKrSf1 a1VFmS7VsbhwQgPij+OrGNBCNHbdvZhqbK+74yLTnfXLa6/BdTAoIaNEZ k3H2i/qlQv64qDWEEXqJuA0jW5PVWebvzSFf+cxO+gVefVMA+YDcDzYs1 jy6ciw29zT0vb4vVZT8DBJJV7X5y5YZFt40yzEu2exm/f2tvzvbaDElmO A==; X-CSE-ConnectionGUID: TT4iW4ziTqSoBF2NxgPE5Q== X-CSE-MsgGUID: SuUqmp68RNOpOExV3QjVgw== X-IronPort-AV: E=McAfee;i="6700,10204,11392"; a="56065219" X-IronPort-AV: E=Sophos;i="6.15,184,1739865600"; d="scan'208";a="56065219" X-CSE-ConnectionGUID: ZMDbLz2cSbiCL/9JrGoJww== X-CSE-MsgGUID: kHOQCK82ROaN3AzL7cqhGQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,184,1739865600"; d="scan'208";a="126959282" From: Zhenzhong Duan To: devel@lists.libvirt.org Subject: [PATCH v1 04/18] conf: Expose TDX feature in domain capabilities Date: Thu, 3 Apr 2025 18:28:27 +0800 Message-Id: <20250403102841.3137534-5-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250403102841.3137534-1-zhenzhong.duan@intel.com> References: <20250403102841.3137534-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: A3JHORNLEBXNNR7P76OHFCSA732UVZLU X-Message-ID-Hash: A3JHORNLEBXNNR7P76OHFCSA732UVZLU 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: 1743676486188019000 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 27551f6102..524246c1e2 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 69dd1a15c1..eacbd6b6b3 100644 --- a/src/conf/domain_capabilities.h +++ b/src/conf/domain_capabilities.h @@ -274,6 +274,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 595dbcd634..c33edbea5f 100644 --- a/src/conf/schemas/domaincaps.rng +++ b/src/conf/schemas/domaincaps.rng @@ -357,6 +357,9 @@ + + + @@ -421,6 +424,12 @@ =20 + + + + + + diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index f241321b0d..5b8afa3c41 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -6956,6 +6956,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, @@ -7023,6 +7035,7 @@ virQEMUCapsFillDomainCaps(virQEMUDriverConfig *cfg, virQEMUCapsFillDomainLaunchSecurity(qemuCaps, launchSecurity); virQEMUCapsFillDomainDeviceNetCaps(qemuCaps, net); virQEMUCapsFillDomainDevicePanicCaps(qemuCaps, domCaps->machine, panic= ); + virQEMUCapsFillDomainFeatureTDXCaps(qemuCaps, domCaps); =20 return 0; } --=20 2.34.1 From nobody Sat Feb 7 03:05:45 2026 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 174367652587072.09148861866186; Thu, 3 Apr 2025 03:35:25 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id AD98B14BA; Thu, 3 Apr 2025 06:35:24 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id BF8D115A5; Thu, 3 Apr 2025 06:32:55 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 2802F11BE; Thu, 3 Apr 2025 06:32:50 -0400 (EDT) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) (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 4F0DB1463 for ; Thu, 3 Apr 2025 06:32:33 -0400 (EDT) Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Apr 2025 03:32: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; 03 Apr 2025 03:32: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=1743676353; x=1775212353; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yca8A2l+0oIoJ+lT+ZjAl5jYsBaj/0jNXvGGxKZZoj8=; b=WliU/GJMfw+cH9Fl7TBLd/ciQOvi0SsUSoPJIzdN7Yf7sWkhpwFmd23D wYfZrphyMxbZX3mPbFtTg7lUGwTwZrNNt/lX8Kre2W+0qmfSZkXv6Gqgj lYoLGDLupOscBX7y8YS/XOqb8i1Kqqe/4YUbIdG0HoMBj2+pGFL9ZX/HU E8Elr7n36RJyAfUiK0uGu1BnB0zDetTCN9/xgTpctXYaD+lr5w6ZZzvoK WigKTUY3dlVafsnxRN1SoUf9lA2W/XNCYHgf2cJnjlkr8Fnp6OS9uxHLT HiBC0xS4nzP3vkuc5zLdDFTLl5c3jaBLhuQBEVJLI09asmHx2viv56H9v w==; X-CSE-ConnectionGUID: sNXZOSPaQy2r4S033A7gVA== X-CSE-MsgGUID: QaISjCgkT1S77+wOniHjrg== X-IronPort-AV: E=McAfee;i="6700,10204,11392"; a="56065223" X-IronPort-AV: E=Sophos;i="6.15,184,1739865600"; d="scan'208";a="56065223" X-CSE-ConnectionGUID: qFo+5dZvQ0WEws4UaiDbPA== X-CSE-MsgGUID: 2tn+hjugQ2K0QxezL9mDCA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,184,1739865600"; d="scan'208";a="126959285" From: Zhenzhong Duan To: devel@lists.libvirt.org Subject: [PATCH v1 05/18] conf: Add tdx as launch security type Date: Thu, 3 Apr 2025 18:28:28 +0800 Message-Id: <20250403102841.3137534-6-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250403102841.3137534-1-zhenzhong.duan@intel.com> References: <20250403102841.3137534-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: NQBQLZPBNMX5DJEENZRCA6YAYMZ7SWVF X-Message-ID-Hash: NQBQLZPBNMX5DJEENZRCA6YAYMZ7SWVF 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: 1743676528732019100 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 c724638180..458852854b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1538,6 +1538,7 @@ VIR_ENUM_IMPL(virDomainLaunchSecurity, "sev", "sev-snp", "s390-pv", + "tdx", ); =20 VIR_ENUM_IMPL(virDomainPstoreBackend, @@ -3949,6 +3950,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: @@ -14174,6 +14180,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) @@ -14197,6 +14226,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: @@ -27597,6 +27630,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) { @@ -27618,6 +27663,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 8dfadbb98d..f838f39aee 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2956,6 +2956,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; @@ -2990,11 +2991,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 d0d4bc0bf4..1902a0544a 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -1934,6 +1934,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 5597d5a66b..4581a7288d 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -549,6 +549,9 @@ s390-pv + + + @@ -644,6 +647,35 @@ + + + + tdx + + + + + + + + + + + + + + + + + + + + + + + + +