From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.120]) by mx.groups.io with SMTP id smtpd.web11.6000.1581599565676137978 for ; Thu, 13 Feb 2020 05:12:45 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=D3vwQ69l; spf=pass (domain: redhat.com, ip: 207.211.31.120, mailfrom: marcandre.lureau@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1581599564; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cFa87rpWbfWhOuYG8VPk5x9cEwPx6lMPR3mbXqzR+5s=; b=D3vwQ69lq98JQwLL/+a1S6ZcO+7B1L5TzR1Lr9dx7Np06l4khRz6R72ekDTErfyurZBmOv Q9NfX0f2ZJEVakwwfl6hCOioQ8/MhYMdAfu8KzgxAw6HNp3fGFdXB59Pr89YxLVe9/ts2b uxKQrLKWhdeFSR+O8sRQ046crO/xj74= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-195-j-EmUaUfPc-5Qb2gtVqfrA-1; Thu, 13 Feb 2020 08:12:42 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6D17E13E5; Thu, 13 Feb 2020 13:12:41 +0000 (UTC) Received: from localhost (ovpn-112-66.ams2.redhat.com [10.36.112.66]) by smtp.corp.redhat.com (Postfix) with ESMTP id ACCA75C101; Thu, 13 Feb 2020 13:12:37 +0000 (UTC) From: marcandre.lureau@redhat.com To: edk2-devel@lists.01.org, devel@edk2.groups.io Cc: stefanb@linux.ibm.com, lersek@redhat.com, simon.hardy@itdev.co.uk, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH v2 3/3] Ovmf: enable TPM 1.2 support Date: Thu, 13 Feb 2020 14:12:22 +0100 Message-Id: <20200213131222.157700-4-marcandre.lureau@redhat.com> In-Reply-To: <20200213131222.157700-1-marcandre.lureau@redhat.com> References: <20200213131222.157700-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-MC-Unique: j-EmUaUfPc-5Qb2gtVqfrA-1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable From: Marc-Andr=C3=A9 Lureau Enable TcgPei & TcgDxe modules to initialize a TPM 1.2 device and measure boot environment. Tpm12RequestUseTpm() returns success on any TPM interface, including FIFO & CRB which are TPM 2.0. Check the actual interface with Tpm12GetPtpInterfaceType(), and only detect 1.2 if it's a TIS. Signed-off-by: Marc-Andr=C3=A9 Lureau --- OvmfPkg/OvmfPkgIa32.dsc | 15 +++++++++++++++ OvmfPkg/OvmfPkgIa32.fdf | 2 ++ OvmfPkg/OvmfPkgIa32X64.dsc | 15 +++++++++++++++ OvmfPkg/OvmfPkgIa32X64.fdf | 2 ++ OvmfPkg/OvmfPkgX64.dsc | 15 +++++++++++++++ OvmfPkg/OvmfPkgX64.fdf | 2 ++ OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf | 3 +++ OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPeim.c | 17 ++++++++++++++++- 8 files changed, 70 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc index 38b013ad9543..02300886563e 100644 --- a/OvmfPkg/OvmfPkgIa32.dsc +++ b/OvmfPkg/OvmfPkgIa32.dsc @@ -206,6 +206,7 @@ XenPlatformLib|OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf=0D =20=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D + Tpm12CommandLib|SecurityPkg/Library/Tpm12CommandLib/Tpm12CommandLib.inf= =0D Tpm2CommandLib|SecurityPkg/Library/Tpm2CommandLib/Tpm2CommandLib.inf=0D Tcg2PhysicalPresenceLib|OvmfPkg/Library/Tcg2PhysicalPresenceLibQemu/DxeT= cg2PhysicalPresenceLib.inf=0D Tcg2PpVendorLib|SecurityPkg/Library/Tcg2PpVendorLibNull/Tcg2PpVendorLibN= ull.inf=0D @@ -281,6 +282,7 @@ =20=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf=0D + Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLibDTpm= .inf=0D Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpm.in= f=0D !endif=0D =20=0D @@ -361,6 +363,7 @@ MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf=0D QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf= =0D !if $(TPM_ENABLE) =3D=3D TRUE=0D + Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibTcg/Tpm12DeviceLibTcg.i= nf=0D Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.in= f=0D !endif=0D =20=0D @@ -633,6 +636,7 @@ =20=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf=0D + SecurityPkg/Tcg/TcgPei/TcgPei.inf=0D SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf {=0D =0D HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCrypt= oRouterPei.inf=0D @@ -668,6 +672,7 @@ NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificatio= nLib.inf=0D !endif=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D + NULL|SecurityPkg/Library/DxeTpmMeasureBootLib/DxeTpmMeasureBootLib.i= nf=0D NULL|SecurityPkg/Library/DxeTpm2MeasureBootLib/DxeTpm2MeasureBootLib= .inf=0D !endif=0D }=0D @@ -926,5 +931,15 @@ }=0D !if $(TPM_CONFIG_ENABLE) =3D=3D TRUE=0D SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf=0D +!endif=0D + SecurityPkg/Tcg/TcgDxe/TcgDxe.inf {=0D + =0D + Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLib= DTpm.inf=0D + }=0D +!if $(TPM_CONFIG_ENABLE) =3D=3D TRUE=0D + SecurityPkg/Tcg/TcgConfigDxe/TcgConfigDxe.inf {=0D + =0D + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf=0D + }=0D !endif=0D !endif=0D diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf index 2c7d6cccdfb0..b0ddc5a4ae73 100644 --- a/OvmfPkg/OvmfPkgIa32.fdf +++ b/OvmfPkg/OvmfPkgIa32.fdf @@ -161,6 +161,7 @@ INF UefiCpuPkg/CpuMpPei/CpuMpPei.inf =20=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D INF OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf=0D +INF SecurityPkg/Tcg/TcgPei/TcgPei.inf=0D INF SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf=0D !endif=0D =20=0D @@ -347,6 +348,7 @@ INF MdeModulePkg/Universal/Variable/RuntimeDxe/Variabl= eRuntimeDxe.inf # TPM support=0D #=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D +INF SecurityPkg/Tcg/TcgDxe/TcgDxe.inf=0D INF SecurityPkg/Tcg/Tcg2Dxe/Tcg2Dxe.inf=0D !if $(TPM_CONFIG_ENABLE) =3D=3D TRUE=0D INF SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf=0D diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc index e075f0766935..3adc75223d05 100644 --- a/OvmfPkg/OvmfPkgIa32X64.dsc +++ b/OvmfPkg/OvmfPkgIa32X64.dsc @@ -211,6 +211,7 @@ XenPlatformLib|OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf=0D =20=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D + Tpm12CommandLib|SecurityPkg/Library/Tpm12CommandLib/Tpm12CommandLib.inf= =0D Tpm2CommandLib|SecurityPkg/Library/Tpm2CommandLib/Tpm2CommandLib.inf=0D Tcg2PhysicalPresenceLib|OvmfPkg/Library/Tcg2PhysicalPresenceLibQemu/DxeT= cg2PhysicalPresenceLib.inf=0D Tcg2PpVendorLib|SecurityPkg/Library/Tcg2PpVendorLibNull/Tcg2PpVendorLibN= ull.inf=0D @@ -286,6 +287,7 @@ =20=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf=0D + Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLibDTpm= .inf=0D Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpm.in= f=0D !endif=0D =20=0D @@ -366,6 +368,7 @@ MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf=0D QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf= =0D !if $(TPM_ENABLE) =3D=3D TRUE=0D + Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibTcg/Tpm12DeviceLibTcg.i= nf=0D Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.in= f=0D !endif=0D =20=0D @@ -645,6 +648,7 @@ =20=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf=0D + SecurityPkg/Tcg/TcgPei/TcgPei.inf=0D SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf {=0D =0D HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCrypt= oRouterPei.inf=0D @@ -681,6 +685,7 @@ NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificatio= nLib.inf=0D !endif=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D + NULL|SecurityPkg/Library/DxeTpmMeasureBootLib/DxeTpmMeasureBootLib.i= nf=0D NULL|SecurityPkg/Library/DxeTpm2MeasureBootLib/DxeTpm2MeasureBootLib= .inf=0D !endif=0D }=0D @@ -940,5 +945,15 @@ }=0D !if $(TPM_CONFIG_ENABLE) =3D=3D TRUE=0D SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf=0D +!endif=0D + SecurityPkg/Tcg/TcgDxe/TcgDxe.inf {=0D + =0D + Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLib= DTpm.inf=0D + }=0D +!if $(TPM_CONFIG_ENABLE) =3D=3D TRUE=0D + SecurityPkg/Tcg/TcgConfigDxe/TcgConfigDxe.inf {=0D + =0D + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf=0D + }=0D !endif=0D !endif=0D diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf index 6a4c9089ab58..dffbfaa5fc4f 100644 --- a/OvmfPkg/OvmfPkgIa32X64.fdf +++ b/OvmfPkg/OvmfPkgIa32X64.fdf @@ -161,6 +161,7 @@ INF UefiCpuPkg/CpuMpPei/CpuMpPei.inf =20=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D INF OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf=0D +INF SecurityPkg/Tcg/TcgPei/TcgPei.inf=0D INF SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf=0D !endif=0D =20=0D @@ -354,6 +355,7 @@ INF MdeModulePkg/Universal/Variable/RuntimeDxe/Variabl= eRuntimeDxe.inf # TPM support=0D #=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D +INF SecurityPkg/Tcg/TcgDxe/TcgDxe.inf=0D INF SecurityPkg/Tcg/Tcg2Dxe/Tcg2Dxe.inf=0D !if $(TPM_CONFIG_ENABLE) =3D=3D TRUE=0D INF SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf=0D diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index 3b1ebf123b51..5f3740ae890a 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -211,6 +211,7 @@ XenPlatformLib|OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf=0D =20=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D + Tpm12CommandLib|SecurityPkg/Library/Tpm12CommandLib/Tpm12CommandLib.inf= =0D Tpm2CommandLib|SecurityPkg/Library/Tpm2CommandLib/Tpm2CommandLib.inf=0D Tcg2PhysicalPresenceLib|OvmfPkg/Library/Tcg2PhysicalPresenceLibQemu/DxeT= cg2PhysicalPresenceLib.inf=0D Tcg2PpVendorLib|SecurityPkg/Library/Tcg2PpVendorLibNull/Tcg2PpVendorLibN= ull.inf=0D @@ -286,6 +287,7 @@ =20=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf=0D + Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLibDTpm= .inf=0D Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpm.in= f=0D !endif=0D =20=0D @@ -366,6 +368,7 @@ MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf=0D QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf= =0D !if $(TPM_ENABLE) =3D=3D TRUE=0D + Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibTcg/Tpm12DeviceLibTcg.i= nf=0D Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.in= f=0D !endif=0D =20=0D @@ -644,6 +647,7 @@ =20=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf=0D + SecurityPkg/Tcg/TcgPei/TcgPei.inf=0D SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf {=0D =0D HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCrypt= oRouterPei.inf=0D @@ -679,6 +683,7 @@ NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificatio= nLib.inf=0D !endif=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D + NULL|SecurityPkg/Library/DxeTpmMeasureBootLib/DxeTpmMeasureBootLib.i= nf=0D NULL|SecurityPkg/Library/DxeTpm2MeasureBootLib/DxeTpm2MeasureBootLib= .inf=0D !endif=0D }=0D @@ -938,5 +943,15 @@ }=0D !if $(TPM_CONFIG_ENABLE) =3D=3D TRUE=0D SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf=0D +!endif=0D + SecurityPkg/Tcg/TcgDxe/TcgDxe.inf {=0D + =0D + Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLib= DTpm.inf=0D + }=0D +!if $(TPM_CONFIG_ENABLE) =3D=3D TRUE=0D + SecurityPkg/Tcg/TcgConfigDxe/TcgConfigDxe.inf {=0D + =0D + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf=0D + }=0D !endif=0D !endif=0D diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf index 6a4c9089ab58..dffbfaa5fc4f 100644 --- a/OvmfPkg/OvmfPkgX64.fdf +++ b/OvmfPkg/OvmfPkgX64.fdf @@ -161,6 +161,7 @@ INF UefiCpuPkg/CpuMpPei/CpuMpPei.inf =20=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D INF OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf=0D +INF SecurityPkg/Tcg/TcgPei/TcgPei.inf=0D INF SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf=0D !endif=0D =20=0D @@ -354,6 +355,7 @@ INF MdeModulePkg/Universal/Variable/RuntimeDxe/Variabl= eRuntimeDxe.inf # TPM support=0D #=0D !if $(TPM_ENABLE) =3D=3D TRUE=0D +INF SecurityPkg/Tcg/TcgDxe/TcgDxe.inf=0D INF SecurityPkg/Tcg/Tcg2Dxe/Tcg2Dxe.inf=0D !if $(TPM_CONFIG_ENABLE) =3D=3D TRUE=0D INF SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf=0D diff --git a/OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf b/OvmfPkg/Tcg/Tcg2Con= fig/Tcg2ConfigPei.inf index e34cd6210611..15f9b7cda099 100644 --- a/OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf +++ b/OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf @@ -31,17 +31,20 @@ PeimEntryPoint=0D DebugLib=0D PeiServicesLib=0D + Tpm12DeviceLib=0D Tpm2DeviceLib=0D =20=0D [Guids]=0D gEfiTpmDeviceSelectedGuid ## PRODUCES ## GUID # Used as a PPI = GUID=0D gEfiTpmDeviceInstanceTpm20DtpmGuid ## SOMETIMES_CONSUMES=0D + gEfiTpmDeviceInstanceTpm12Guid ## SOMETIMES_CONSUMES=0D =20=0D [Ppis]=0D gPeiTpmInitializationDonePpiGuid ## SOMETIMES_PRODUCES=0D =20=0D [Pcd]=0D gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid ## PROD= UCES=0D + gEfiSecurityPkgTokenSpaceGuid.PcdActiveTpmInterfaceType ## SOME= TIMES_CONSUMES=0D =20=0D [Depex]=0D TRUE=0D diff --git a/OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPeim.c b/OvmfPkg/Tcg/Tcg2Conf= ig/Tcg2ConfigPeim.c index 99d571d9fa6d..ae3d4fc2c380 100644 --- a/OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPeim.c +++ b/OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPeim.c @@ -18,6 +18,7 @@ #include =0D #include =0D #include =0D +#include =0D #include =0D =20=0D STATIC CONST EFI_PEI_PPI_DESCRIPTOR mTpmSelectedPpi =3D {=0D @@ -50,6 +51,19 @@ Tcg2ConfigPeimEntryPoint ( =20=0D DEBUG ((DEBUG_INFO, "%a\n", __FUNCTION__));=0D =20=0D + Status =3D Tpm12RequestUseTpm ();=0D + if (!EFI_ERROR (Status) && Tpm12GetPtpInterfaceType () =3D=3D PtpInterfa= ceTis) {=0D + DEBUG ((DEBUG_INFO, "%a: TPM1.2 detected\n", __FUNCTION__));=0D + Size =3D sizeof (gEfiTpmDeviceInstanceTpm12Guid);=0D + Status =3D PcdSetPtrS (=0D + PcdTpmInstanceGuid,=0D + &Size,=0D + &gEfiTpmDeviceInstanceTpm12Guid=0D + );=0D + ASSERT_EFI_ERROR (Status);=0D + goto done;=0D + }=0D +=0D Status =3D Tpm2RequestUseTpm ();=0D if (!EFI_ERROR (Status)) {=0D DEBUG ((DEBUG_INFO, "%a: TPM2 detected\n", __FUNCTION__));=0D @@ -61,7 +75,7 @@ Tcg2ConfigPeimEntryPoint ( );=0D ASSERT_EFI_ERROR (Status);=0D } else {=0D - DEBUG ((DEBUG_INFO, "%a: no TPM2 detected\n", __FUNCTION__));=0D + DEBUG ((DEBUG_INFO, "%a: no TPM detected\n", __FUNCTION__));=0D //=0D // If no TPM2 was detected, we still need to install=0D // TpmInitializationDonePpi. Namely, Tcg2Pei will exit early upon seei= ng=0D @@ -73,6 +87,7 @@ Tcg2ConfigPeimEntryPoint ( ASSERT_EFI_ERROR (Status);=0D }=0D =20=0D +done:=0D //=0D // Selection done=0D //=0D --=20 2.25.0.rc2.1.g09a9a1a997