From 7f99fae217a6a5ce981c6a783a16e7dd84ee77fc Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Tue, 26 Jan 2021 14:17:40 +0100 Subject: [PATCH] UefiPayloadPkg: Advertise TPM support in BlSupportDxe In BlSupportDxe read the AcpiBoardInfo and set PcdTpmInstanceGuid to indicate that a TPM is likely present as TPM tables had been installed by the bootloader. The Tcg*Dxes will probe for the TPM, so no need to do it here as well. Signed-off-by: Patrick Rudolph --- UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c | 23 ++++++++++++++++++++ UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf | 4 ++++ UefiPayloadPkg/UefiPayloadPkg.dsc | 2 ++ 3 files changed, 29 insertions(+) diff --git a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c b/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c index 04e968a232..8dc30e1d99 100644 --- a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c +++ b/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c @@ -7,6 +7,7 @@ **/ #include "BlSupportDxe.h" +#include /** Reserve MMIO/IO resource in GCD @@ -105,6 +106,7 @@ BlDxeEntryPoint ( EFI_HOB_GUID_TYPE *GuidHob; EFI_PEI_GRAPHICS_INFO_HOB *GfxInfo; ACPI_BOARD_INFO *AcpiBoardInfo; + UINTN Size; Status = EFI_SUCCESS; // @@ -140,6 +142,27 @@ BlDxeEntryPoint ( ASSERT_EFI_ERROR (Status); Status = PcdSet64S (PcdPciExpressBaseSize, AcpiBoardInfo->PcieBaseSize); ASSERT_EFI_ERROR (Status); + + if (AcpiBoardInfo->TPM12Present) + { + Size = sizeof (gEfiTpmDeviceInstanceTpm12Guid); + Status = PcdSetPtrS ( + PcdTpmInstanceGuid, + &Size, + &gEfiTpmDeviceInstanceTpm12Guid + ); + ASSERT_EFI_ERROR (Status); + } + else if (AcpiBoardInfo->TPM20Present) + { + Size = sizeof (gEfiTpmDeviceInstanceTpm20DtpmGuid); + Status = PcdSetPtrS ( + PcdTpmInstanceGuid, + &Size, + &gEfiTpmDeviceInstanceTpm20DtpmGuid + ); + ASSERT_EFI_ERROR (Status); + } } return EFI_SUCCESS; diff --git a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf b/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf index 1ccb250991..f24be105fe 100644 --- a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf +++ b/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf @@ -31,6 +31,7 @@ MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec UefiPayloadPkg/UefiPayloadPkg.dec + SecurityPkg/SecurityPkg.dec [LibraryClasses] UefiDriverEntryPoint @@ -45,6 +46,8 @@ gUefiSystemTableInfoGuid gUefiAcpiBoardInfoGuid gEfiGraphicsInfoHobGuid + gEfiTpmDeviceInstanceTpm20DtpmGuid ## SOMETIMES_CONSUMES + gEfiTpmDeviceInstanceTpm12Guid ## SOMETIMES_CONSUMES [Pcd] gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution @@ -53,6 +56,7 @@ gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseSize + gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid ## SOMETIMES_PRODUCES [Depex] TRUE diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc index 2b18049603..c38a6433c0 100644 --- a/UefiPayloadPkg/UefiPayloadPkg.dsc +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc @@ -464,6 +464,8 @@ gUefiCpuPkgTokenSpaceGuid.PcdSevEsIsEnabled|0 gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|TRUE + gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid|{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} + ################################################################################ # # Components Section - list of all EDK II Modules needed by this Platform.