From nobody Wed May 15 17:25:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+88862+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+88862+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1649840924; cv=none; d=zohomail.com; s=zohoarc; b=bAAgWhc/byV2pzJ3/FgBUyTaXhUj5Qm4lWybqCWrQ/hx4oxu4locGJKWnJCGPQFYOOCDF0ChxJOmQwSKlahIku5vKY4VkaUdfSVpc59eHbwIiRciiuH7Wa6D4TsfMkmqckMGyc1STktLIXxlHceW0b9m8OpWXdJ8Mb7naZ7lE30= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1649840924; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=HSc/kgqqnzpL+DTYYGHsKOmG+lujOYuiBGB4elTurnk=; b=V5WSv4pseRvk5xxREtzu3FmTwXXm0lHQFjuh0/M97MaHPdWssPP/XviZPclaptibU5+FLHg0vh2PjQww3Fpm2tkdhJRHVNldDioMJC+9kbkAdZchHhkZY4RoNTYMFK4yLIFYWNzgtrK8HrtXss7XfbX9TUYWnV/71IsqqSxVXPk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+88862+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1649840924429497.89997405456313; Wed, 13 Apr 2022 02:08:44 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id FiygYY1788612xOHV6yNnOp2; Wed, 13 Apr 2022 02:08:43 -0700 X-Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web09.4082.1649840922150046074 for ; Wed, 13 Apr 2022 02:08:42 -0700 X-IronPort-AV: E=McAfee;i="6400,9594,10315"; a="242551910" X-IronPort-AV: E=Sophos;i="5.90,256,1643702400"; d="scan'208";a="242551910" X-Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2022 02:08:41 -0700 X-IronPort-AV: E=Sophos;i="5.90,256,1643702400"; d="scan'208";a="573183410" X-Received: from mxu9-mobl1.ccr.corp.intel.com ([10.255.28.56]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2022 02:08:39 -0700 From: "Min Xu" To: devel@edk2.groups.io Cc: Min Xu , Michael D Kinney , Liming Gao , Zhiguang Liu , James Bottomley , Jiewen Yao , Gerd Hoffmann Subject: [edk2-devel] [PATCH 1/4] MdePkg: Add TdProbeLib Date: Wed, 13 Apr 2022 17:08:21 +0800 Message-Id: <3fcbbc0d9b2b82f3a6bdc132c01462d73bfc02bc.1649840073.git.min.m.xu@intel.com> In-Reply-To: References: MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,min.m.xu@intel.com X-Gm-Message-State: 9OCEdzysaGgpaSHGPIPQAtU4x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1649840923; bh=HvLBKlqqabzHXst63zg+7ua7Cvn9ohcNekFxNwWQMVg=; h=Cc:Date:From:Reply-To:Subject:To; b=bMd3aH9HsYKxua4S36/jBEHZYnhqL4HLy3r5f1w8L9Ud/m8obvBRDPvhRHD0V2mwqbx ihb95ZAsaTLAWurtLByAr1lqscBYA3/xETtvgqS6Hv6NTUQbKJd74aquvnHv45ygjR9Wp +UdDjTZutJBIoT2aQE9g/mX4LJALyP/I+4U= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1649840925822100006 Content-Type: text/plain; charset="utf-8" BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3902 TdProbeLib is used to probe if the working system is of Td guest. This library is designed to run on SEC / PEI / DXE phases. A null instance of the library returns Non-Td anyway. A platform specific TdProbeLib will be implemented, for example, in OvmfPkg. Cc: Michael D Kinney Cc: Liming Gao Cc: Zhiguang Liu Cc: James Bottomley Cc: Jiewen Yao Cc: Gerd Hoffmann Signed-off-by: Min Xu Tested-by: James Bottomley --- MdePkg/Include/Library/TdProbeLib.h | 26 +++++++++++++++++++ .../Library/TdProbeLibNull/TdProbeLibNull.c | 25 ++++++++++++++++++ .../Library/TdProbeLibNull/TdProbeLibNull.inf | 21 +++++++++++++++ MdePkg/MdePkg.dec | 5 ++++ MdePkg/MdePkg.dsc | 1 + 5 files changed, 78 insertions(+) create mode 100644 MdePkg/Include/Library/TdProbeLib.h create mode 100644 MdePkg/Library/TdProbeLibNull/TdProbeLibNull.c create mode 100644 MdePkg/Library/TdProbeLibNull/TdProbeLibNull.inf diff --git a/MdePkg/Include/Library/TdProbeLib.h b/MdePkg/Include/Library/T= dProbeLib.h new file mode 100644 index 000000000000..363a30fce649 --- /dev/null +++ b/MdePkg/Include/Library/TdProbeLib.h @@ -0,0 +1,26 @@ +/** @file + +Copyright (c) 2022, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef TD_PROBE_LIB_H_ +#define TD_PROBE_LIB_H_ + +#define TD_PROBE_NON 0 +#define TD_PROBE_TDX 1 + +/** + Probe if it is Tdx guest. + + @return TD_PROBE_TDX if it is Tdx guest. Otherwise return TD_PROBE_NON. + +**/ +UINTN +EFIAPI +TdProbe ( + VOID + ); + +#endif diff --git a/MdePkg/Library/TdProbeLibNull/TdProbeLibNull.c b/MdePkg/Librar= y/TdProbeLibNull/TdProbeLibNull.c new file mode 100644 index 000000000000..8aa2baf9053d --- /dev/null +++ b/MdePkg/Library/TdProbeLibNull/TdProbeLibNull.c @@ -0,0 +1,25 @@ +/** @file + + Null stub of TdProbeLib + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +/** + Probe if it is Tdx guest. + + @return TD_PROBE_TDX if it is Tdx guest. Otherwise return TD_PROBE_NON. + +**/ +UINTN +EFIAPI +TdProbe ( + VOID + ) +{ + return TD_PROBE_NON; +} diff --git a/MdePkg/Library/TdProbeLibNull/TdProbeLibNull.inf b/MdePkg/Libr= ary/TdProbeLibNull/TdProbeLibNull.inf new file mode 100644 index 000000000000..7db961e6ea2d --- /dev/null +++ b/MdePkg/Library/TdProbeLibNull/TdProbeLibNull.inf @@ -0,0 +1,21 @@ +## @file +# TdProbeLib null instance. +# +# Copyright (c) 2022, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D TdProbeLibNull + FILE_GUID =3D B15D67FE-0DAC-4316-8E26-8A6b85E43782 + MODULE_TYPE =3D BASE + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D TdProbeLib + +[Sources] + TdProbeLibNull.c + +[Packages] + MdePkg/MdePkg.dec diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index 1934c9840423..9cc713e3d5af 100644 --- a/MdePkg/MdePkg.dec +++ b/MdePkg/MdePkg.dec @@ -267,6 +267,11 @@ # RegisterFilterLib|Include/Library/RegisterFilterLib.h =20 + ## @libraryclass This library provides interfances to probe Td guest. + # + # + TdProbeLib|Include/Library/TdProbeLib.h + [LibraryClasses.IA32, LibraryClasses.X64, LibraryClasses.AARCH64] ## @libraryclass Provides services to generate random number. # diff --git a/MdePkg/MdePkg.dsc b/MdePkg/MdePkg.dsc index d6a7af412be7..c2a68056f48a 100644 --- a/MdePkg/MdePkg.dsc +++ b/MdePkg/MdePkg.dsc @@ -130,6 +130,7 @@ MdePkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLib= .inf =20 MdePkg/Library/RegisterFilterLibNull/RegisterFilterLibNull.inf + MdePkg/Library/TdProbeLibNull/TdProbeLibNull.inf =20 [Components.IA32, Components.X64, Components.ARM, Components.AARCH64] # --=20 2.29.2.windows.2 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#88862): https://edk2.groups.io/g/devel/message/88862 Mute This Topic: https://groups.io/mt/90436750/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 15 17:25:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+88863+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+88863+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1649840925; cv=none; d=zohomail.com; s=zohoarc; b=YtoJo2Vqn4JI497ifqAiX1UwhBRmIwLFYf4xoKTMuzeguI1flRkBRQX4H1hdN6/rsu+IgfuO5tcpRf0CtLl1VBTvCk8/seOvME1AteixI7csc/k63tCMeIYUiwXGO3Gs5Fi5vzrsA8FRiltcosSEZeNX64H7Jv4hhPrr15N9ThE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1649840925; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=O0PU3zr7wlw6RJg8eFnbnap2qDQxPkKgipBaKFgCeuk=; b=nnPsDdoXRIULeqcf5Qdm4EmB5gWYuwA/CXAzFYJhU33M8tXPqFmrKM6gZFCPhWkzz6dwavzdBRsFgewhIJLSpN8l+TtnMZQI3rAl1yhUsqaa/gEVVkXDZzM+v0PeBUqpxSJCl4Uki5ixb6ItsTR79OazMkTtBfqi1wjRETmS/wY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+88863+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1649840925938271.2635993348697; Wed, 13 Apr 2022 02:08:45 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id LezJYY1788612xaBPXdbrKwj; Wed, 13 Apr 2022 02:08:45 -0700 X-Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web09.4082.1649840922150046074 for ; Wed, 13 Apr 2022 02:08:45 -0700 X-IronPort-AV: E=McAfee;i="6400,9594,10315"; a="242551930" X-IronPort-AV: E=Sophos;i="5.90,256,1643702400"; d="scan'208";a="242551930" X-Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2022 02:08:44 -0700 X-IronPort-AV: E=Sophos;i="5.90,256,1643702400"; d="scan'208";a="573183427" X-Received: from mxu9-mobl1.ccr.corp.intel.com ([10.255.28.56]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2022 02:08:41 -0700 From: "Min Xu" To: devel@edk2.groups.io Cc: Min Xu , Michael D Kinney , Liming Gao , Zhiguang Liu , James Bottomley , James Bottomley , Jiewen Yao , Gerd Hoffmann , Brijesh Singh , Erdem Aktas , Tom Lendacky Subject: [edk2-devel] [PATCH 2/4] OvmfPkg/IntelTdx: Add TdProbeLib Date: Wed, 13 Apr 2022 17:08:22 +0800 Message-Id: <33e5b210e9b3f5edd22d7fb4dad165baa1806893.1649840073.git.min.m.xu@intel.com> In-Reply-To: References: MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,min.m.xu@intel.com X-Gm-Message-State: E4ackGc5A3Vl1fjqfFhjtrxax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1649840925; bh=pPkkD3u03qm5Xm7Jdwm3OgWyveS8AkrQLU5/T4K3VN0=; h=Cc:Date:From:Reply-To:Subject:To; b=HZLlfcQUCmgWgWVI/1RgnIoZTb9uAzzrayCj/iVh8cMVAIgKehwuXgWzmC99PZBKG3N qJdpvJpjF7C1A1aNcI2kAI5VrQ2Owyli7CJErsRqegsxIN0w342T92aqTHUtEShuig625 GrNeXkkM2idWrO+kgNI9j3K9HG2FyCPFBhs= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1649840928570100011 Content-Type: text/plain; charset="utf-8" BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3902 This is the OvmfPkg specific TdProbeLib. It checks the Ovmf WorkArea (PcdOvmfWorkAreaBase) to determine if the working system is of Td guest. Cc: Michael D Kinney Cc: Liming Gao Cc: Zhiguang Liu Cc: James Bottomley Cc: James Bottomley Cc: Jiewen Yao Cc: Gerd Hoffmann Cc: Brijesh Singh Cc: Erdem Aktas Cc: Tom Lendacky Signed-off-by: Min Xu Tested-by: James Bottomley --- OvmfPkg/IntelTdx/TdProbeLib/TdProbeLib.c | 38 ++++++++++++++++++++++ OvmfPkg/IntelTdx/TdProbeLib/TdProbeLib.inf | 25 ++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 OvmfPkg/IntelTdx/TdProbeLib/TdProbeLib.c create mode 100644 OvmfPkg/IntelTdx/TdProbeLib/TdProbeLib.inf diff --git a/OvmfPkg/IntelTdx/TdProbeLib/TdProbeLib.c b/OvmfPkg/IntelTdx/Td= ProbeLib/TdProbeLib.c new file mode 100644 index 000000000000..85b9c5b614e5 --- /dev/null +++ b/OvmfPkg/IntelTdx/TdProbeLib/TdProbeLib.c @@ -0,0 +1,38 @@ +/** @file + + TdProbeLib is used to probe the Td guest. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Probe if it is Tdx guest. + + @return TD_PROBE_TDX if it is Tdx guest. Otherwise return TD_PROBE_NON. + +**/ +UINTN +EFIAPI +TdProbe ( + VOID + ) +{ + OVMF_WORK_AREA *WorkArea; + + WorkArea =3D (OVMF_WORK_AREA *)FixedPcdGet32 (PcdOvmfWorkAreaBase); + + // + // Check if it is TDX guest. + // + if ((WorkArea !=3D NULL) && (WorkArea->Header.GuestType =3D=3D GUEST_TYP= E_INTEL_TDX)) { + return TD_PROBE_TDX; + } else { + return TD_PROBE_NON; + } +} diff --git a/OvmfPkg/IntelTdx/TdProbeLib/TdProbeLib.inf b/OvmfPkg/IntelTdx/= TdProbeLib/TdProbeLib.inf new file mode 100644 index 000000000000..7535008b3a51 --- /dev/null +++ b/OvmfPkg/IntelTdx/TdProbeLib/TdProbeLib.inf @@ -0,0 +1,25 @@ +## @file +# TdProbeLib is used to probe Td guest. +# +# Copyright (c) 2022, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D TdProbeLib + FILE_GUID =3D 05184ec9-abb0-4491-8584-e388639a7c48 + MODULE_TYPE =3D BASE + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D TdProbeLib + +[Sources] + TdProbeLib.c + +[Packages] + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + +[Pcd] + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaBase --=20 2.29.2.windows.2 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#88863): https://edk2.groups.io/g/devel/message/88863 Mute This Topic: https://groups.io/mt/90436751/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 15 17:25:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+88864+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+88864+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1649840928; cv=none; d=zohomail.com; s=zohoarc; b=kZYoVt2A79H+ncRMfoxGP+HvP6HODVBQzq8rolgF4FFhDzmEsgK3+nts3yz9wj5St5QA0WuDDM/EJcVeSk8nEnuD9KlfJ1IMlfKdfzcocO4RuvvPoTDTWFqBwTgKen1yvSElw4AWbyxp7gQYtXw5Zyr0yU4Jh+dfAyAQHUl8A/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1649840928; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=wBlSpRdwJEvPB25TVZS3DgKNHtFAzud6w3AgTavXVUo=; b=SNxjhyMN/TDXMCl6WCeL9uXe1jpuYIYLI+PvRAKe8iLpxEpFqx3qrhQJoDnDgz0r/vMRB28hVG7kaK0MgEjO/kIqfuH9Ly7hdTa4c83HiqID54Gk9qtNIvJAoS1rEgphNNGIvLNZgFpLad5mJOEdVys0kcr0N05JvIJar/yCnFw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+88864+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1649840928674645.5923461749483; Wed, 13 Apr 2022 02:08:48 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id VoEQYY1788612xrcFCCWC8Dr; Wed, 13 Apr 2022 02:08:48 -0700 X-Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web09.4082.1649840922150046074 for ; Wed, 13 Apr 2022 02:08:47 -0700 X-IronPort-AV: E=McAfee;i="6400,9594,10315"; a="242551965" X-IronPort-AV: E=Sophos;i="5.90,256,1643702400"; d="scan'208";a="242551965" X-Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2022 02:08:46 -0700 X-IronPort-AV: E=Sophos;i="5.90,256,1643702400"; d="scan'208";a="573183443" X-Received: from mxu9-mobl1.ccr.corp.intel.com ([10.255.28.56]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2022 02:08:44 -0700 From: "Min Xu" To: devel@edk2.groups.io Cc: Min Xu , Michael D Kinney , Liming Gao , Zhiguang Liu , James Bottomley , James Bottomley , Jiewen Yao , Gerd Hoffmann Subject: [edk2-devel] [PATCH 3/4] MdePkg: Probe Td guest in BaseIoLibIntrinsicSev Date: Wed, 13 Apr 2022 17:08:23 +0800 Message-Id: <1326dd74e9c143cbc0d4f95b7e2b165f253e02c6.1649840073.git.min.m.xu@intel.com> In-Reply-To: References: MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,min.m.xu@intel.com X-Gm-Message-State: gZ6rPeMyyXugwNptVN87xNQbx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1649840928; bh=pZcRcxFGOF8ZaOXnihjSbMsVD1dwTKxWnASsqmruPKA=; h=Cc:Date:From:Reply-To:Subject:To; b=Gcp+rlb6BPTEo+gOc+9zmPAPVGxezFw68ZSy5U1x2jji2vD0BlhQ4us67rd8SkQO1wu nOg+HOQgWY/VqY4e0+h3+a4vCSjbFpLLbetYAQWTyh6hxSUr7uZhpMwdKMSivU5u2S4Z4 jBkKxgFJSS1xGkoLM/AqNwgHjFHHITP+HcM= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1649840929601100013 Content-Type: text/plain; charset="utf-8" BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3902 Bad IO performance in SEC phase is observed after TDX features was introduced. (after commit b6b2de884864 - "MdePkg: Support mmio for Tdx guest in BaseIoLibIntrinsic"). This is because IsTdxGuest() will be called in each MMIO operation. It is trying to cache the result of the probe in the efi data segment. However, that doesn't work in SEC, because the data segment is read only (so the write seems to succeed but a read will always return the original value), leading to us calling TdIsEnabled() check for every mmio we do, which is causing the slowdown because it's very expensive. This patch is to call TdProbe instead of IsTdxGuest. Null instance of TdProbe returns TD_PROBE_NON anyway. Its OvmfPkg version checks the Ovmf work area to determine the Td guest type. Cc: Michael D Kinney Cc: Liming Gao Cc: Zhiguang Liu Cc: James Bottomley Cc: James Bottomley Cc: Jiewen Yao Cc: Gerd Hoffmann Signed-off-by: Min Xu Tested-by: James Bottomley --- .../BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf | 1 + .../Library/BaseIoLibIntrinsic/IoLibInternalTdx.c | 13 ++----------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf b/= MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf index 7fe1c60f046e..76f11438f40b 100644 --- a/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf +++ b/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf @@ -55,6 +55,7 @@ DebugLib BaseLib RegisterFilterLib + TdProbeLib =20 [LibraryClasses.X64] TdxLib diff --git a/MdePkg/Library/BaseIoLibIntrinsic/IoLibInternalTdx.c b/MdePkg/= Library/BaseIoLibIntrinsic/IoLibInternalTdx.c index 1e539dbfbbad..9aed9f312858 100644 --- a/MdePkg/Library/BaseIoLibIntrinsic/IoLibInternalTdx.c +++ b/MdePkg/Library/BaseIoLibIntrinsic/IoLibInternalTdx.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "IoLibTdx.h" =20 // Size of TDVMCALL Access, including IO and MMIO @@ -22,9 +23,6 @@ #define TDVMCALL_ACCESS_READ 0 #define TDVMCALL_ACCESS_WRITE 1 =20 -BOOLEAN mTdxEnabled =3D FALSE; -BOOLEAN mTdxProbed =3D FALSE; - /** Check if it is Tdx guest. =20 @@ -38,14 +36,7 @@ IsTdxGuest ( VOID ) { - if (mTdxProbed) { - return mTdxEnabled; - } - - mTdxEnabled =3D TdIsEnabled (); - mTdxProbed =3D TRUE; - - return mTdxEnabled; + return TdProbe () =3D=3D TD_PROBE_TDX; } =20 /** --=20 2.29.2.windows.2 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#88864): https://edk2.groups.io/g/devel/message/88864 Mute This Topic: https://groups.io/mt/90436752/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 15 17:25:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+88865+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+88865+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1649840931; cv=none; d=zohomail.com; s=zohoarc; b=B3Vc/OueES5CBg38A8StBWkPtVxEosY4Xn/R/x128+YrTghhw62QEJUenm08a5QZFj9hNLkwLNbfeZNkZYTJyq7yb73hZVUXVnyKHHhNeMdZgHSRoaWi/tpToSEu712Ws8o5nYmMGZ+0faOeR3hu4/RmYWOvv+en8Y2s8CSJ628= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1649840931; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=XuPEl8pLajzbd/dpK9iDUNENN8t/W0iKkml/U1i0Pow=; b=G+CErDFZZ+qq/m6Is10LTprnA1JVHDrQ+rSHHEB7Tdj0/glSBeRkBDivVHnL4aXbSjk7nfFZjSN1K7/j6GDunGe+0dOK8MV+q+yVPp4/j1N55+/vmTGjZ2Bf1owzOb15kVrzTVs3K10CgxAgBY0EYFuka6NGtgmHKYnpgLqifVo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+88865+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1649840931566871.0743122338935; Wed, 13 Apr 2022 02:08:51 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id uUrzYY1788612xbmLcPs7Vim; Wed, 13 Apr 2022 02:08:51 -0700 X-Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web09.4082.1649840922150046074 for ; Wed, 13 Apr 2022 02:08:50 -0700 X-IronPort-AV: E=McAfee;i="6400,9594,10315"; a="242551984" X-IronPort-AV: E=Sophos;i="5.90,256,1643702400"; d="scan'208";a="242551984" X-Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2022 02:08:49 -0700 X-IronPort-AV: E=Sophos;i="5.90,256,1643702400"; d="scan'208";a="573183458" X-Received: from mxu9-mobl1.ccr.corp.intel.com ([10.255.28.56]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2022 02:08:46 -0700 From: "Min Xu" To: devel@edk2.groups.io Cc: Min Xu , James Bottomley , James Bottomley , Jiewen Yao , Gerd Hoffmann , Brijesh Singh , Erdem Aktas , Tom Lendacky Subject: [edk2-devel] [PATCH 4/4] OvmfPkg: Add TdProbeLib in *.dsc Date: Wed, 13 Apr 2022 17:08:24 +0800 Message-Id: <04b829c00193ac0bb381aebea0c41c5251d9070a.1649840073.git.min.m.xu@intel.com> In-Reply-To: References: MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,min.m.xu@intel.com X-Gm-Message-State: hJVyrUeng7o4OkSCgQL9frscx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1649840931; bh=464ili4UW8D58Rk9RM6m4fwZjDvmd1TI4Xg/7DBdnsU=; h=Cc:Date:From:Reply-To:Subject:To; b=B60vxK+rXefjE/QPOxORDO6nWp2TNpjN2fQbYVvnAIyisKwhaMJcYM8HSha5fSzJre7 BYsAhNVWS9otX4xIlkhJWEX+LgJLsX1btX74sFt5WwkZk0qoiz6O/1he48V/tmsfHuAaL pT2+MzoEhxUBATIt6hF6BShPcE2Px1NK2Xs= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1649840933622100019 Content-Type: text/plain; charset="utf-8" BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3902 TdProbeLib is imported in BaseIoLibIntrinsicSev. OvmfPkg/IntelTdx/TdProbeLib is the OvmfPkg version which checks OvmfWorkArea to determine the Td guest type. It is included in OvmfPkgX64.dsc and IntelTdx/IntelTdxX64.dsc. Other .dsc include the MdePkg/Library/TdProbeLibNull because Td guest is not supported in those projects. Cc: James Bottomley Cc: James Bottomley Cc: Jiewen Yao Cc: Gerd Hoffmann Cc: Brijesh Singh Cc: Erdem Aktas Cc: Tom Lendacky Signed-off-by: Min Xu Tested-by: James Bottomley --- OvmfPkg/AmdSev/AmdSevX64.dsc | 1 + OvmfPkg/Bhyve/BhyveX64.dsc | 1 + OvmfPkg/CloudHv/CloudHvX64.dsc | 1 + OvmfPkg/IntelTdx/IntelTdxX64.dsc | 1 + OvmfPkg/Microvm/MicrovmX64.dsc | 1 + OvmfPkg/OvmfPkgIa32.dsc | 1 + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + OvmfPkg/OvmfPkgX64.dsc | 1 + OvmfPkg/OvmfXen.dsc | 1 + 9 files changed, 9 insertions(+) diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc index fcdc3efab204..5b4b5e397aa1 100644 --- a/OvmfPkg/AmdSev/AmdSevX64.dsc +++ b/OvmfPkg/AmdSev/AmdSevX64.dsc @@ -149,6 +149,7 @@ PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPc= iSegmentLib.inf PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + TdProbeLib|MdePkg/Library/TdProbeLibNull/TdProbeLibNull.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHo= okStatusCodeLibNull.inf SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf diff --git a/OvmfPkg/Bhyve/BhyveX64.dsc b/OvmfPkg/Bhyve/BhyveX64.dsc index e1b6b8e15f36..f3f5e1921e6d 100644 --- a/OvmfPkg/Bhyve/BhyveX64.dsc +++ b/OvmfPkg/Bhyve/BhyveX64.dsc @@ -146,6 +146,7 @@ PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPc= iSegmentLib.inf PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + TdProbeLib|MdePkg/Library/TdProbeLibNull/TdProbeLibNull.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHo= okStatusCodeLibNull.inf SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf diff --git a/OvmfPkg/CloudHv/CloudHvX64.dsc b/OvmfPkg/CloudHv/CloudHvX64.dsc index 20f3bc340807..6b75980ba414 100644 --- a/OvmfPkg/CloudHv/CloudHvX64.dsc +++ b/OvmfPkg/CloudHv/CloudHvX64.dsc @@ -158,6 +158,7 @@ PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPc= iSegmentLib.inf PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + TdProbeLib|MdePkg/Library/TdProbeLibNull/TdProbeLibNull.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHo= okStatusCodeLibNull.inf SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf diff --git a/OvmfPkg/IntelTdx/IntelTdxX64.dsc b/OvmfPkg/IntelTdx/IntelTdxX6= 4.dsc index 245155d41b30..007a140b7ca7 100644 --- a/OvmfPkg/IntelTdx/IntelTdxX64.dsc +++ b/OvmfPkg/IntelTdx/IntelTdxX64.dsc @@ -135,6 +135,7 @@ PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPc= iSegmentLib.inf PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + TdProbeLib|OvmfPkg/IntelTdx/TdProbeLib/TdProbeLib.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHo= okStatusCodeLibNull.inf SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf diff --git a/OvmfPkg/Microvm/MicrovmX64.dsc b/OvmfPkg/Microvm/MicrovmX64.dsc index 59580ccd4691..a55603c5a634 100644 --- a/OvmfPkg/Microvm/MicrovmX64.dsc +++ b/OvmfPkg/Microvm/MicrovmX64.dsc @@ -156,6 +156,7 @@ PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPc= iSegmentLib.inf PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + TdProbeLib|MdePkg/Library/TdProbeLibNull/TdProbeLibNull.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHo= okStatusCodeLibNull.inf SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc index e4218b01f0fc..020e3b476917 100644 --- a/OvmfPkg/OvmfPkgIa32.dsc +++ b/OvmfPkg/OvmfPkgIa32.dsc @@ -154,6 +154,7 @@ PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPc= iSegmentLib.inf PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + TdProbeLib|MdePkg/Library/TdProbeLibNull/TdProbeLibNull.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHo= okStatusCodeLibNull.inf SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc index a80cdaacb8bc..c4a789e35d05 100644 --- a/OvmfPkg/OvmfPkgIa32X64.dsc +++ b/OvmfPkg/OvmfPkgIa32X64.dsc @@ -158,6 +158,7 @@ PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPc= iSegmentLib.inf PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + TdProbeLib|MdePkg/Library/TdProbeLibNull/TdProbeLibNull.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHo= okStatusCodeLibNull.inf SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index fb2899f8a1be..ad43bcd9776d 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -165,6 +165,7 @@ PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPc= iSegmentLib.inf PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + TdProbeLib|OvmfPkg/IntelTdx/TdProbeLib/TdProbeLib.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHo= okStatusCodeLibNull.inf SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf diff --git a/OvmfPkg/OvmfXen.dsc b/OvmfPkg/OvmfXen.dsc index 7bd594c6e263..ff9b8786beb6 100644 --- a/OvmfPkg/OvmfXen.dsc +++ b/OvmfPkg/OvmfXen.dsc @@ -147,6 +147,7 @@ PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPc= iSegmentLib.inf PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + TdProbeLib|MdePkg/Library/TdProbeLibNull/TdProbeLibNull.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHo= okStatusCodeLibNull.inf SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf --=20 2.29.2.windows.2 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#88865): https://edk2.groups.io/g/devel/message/88865 Mute This Topic: https://groups.io/mt/90436753/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-