--- /dev/null
+/** @file\r
+*\r
+* Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>\r
+* SPDX-License-Identifier: BSD-2-Clause-Patent\r
+*\r
+**/\r
+\r
+#include <PiPei.h>\r
+#include <Library/PrePiHobListPointerLib.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/HobLib.h>\r
+#include <WorkArea.h>\r
+\r
+/**\r
+ Returns the pointer to the HOB list.\r
+\r
+ This function returns the pointer to first HOB in the list.\r
+\r
+ @return The pointer to the HOB list.\r
+\r
+**/\r
+VOID *\r
+EFIAPI\r
+PrePeiGetHobList (\r
+ VOID\r
+ )\r
+{\r
+ TDX_WORK_AREA *TdxWorkArea;\r
+\r
+ TdxWorkArea = (TDX_WORK_AREA *)(UINTN)FixedPcdGet32 (PcdSevEsWorkAreaBase);\r
+ ASSERT (TdxWorkArea != NULL);\r
+ ASSERT (TdxWorkArea->SecTdxWorkArea.HobList != 0);\r
+\r
+ return (VOID *)(UINTN)TdxWorkArea->SecTdxWorkArea.HobList;\r
+}\r
+\r
+/**\r
+ Updates the pointer to the HOB list.\r
+\r
+ @param HobList Hob list pointer to store\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PrePeiSetHobList (\r
+ IN VOID *HobList\r
+ )\r
+{\r
+ TDX_WORK_AREA *TdxWorkArea;\r
+\r
+ TdxWorkArea = (TDX_WORK_AREA *)(UINTN)FixedPcdGet32 (PcdSevEsWorkAreaBase);\r
+ ASSERT (TdxWorkArea != NULL);\r
+\r
+ TdxWorkArea->SecTdxWorkArea.HobList = (UINTN)HobList;\r
+\r
+ return EFI_SUCCESS;\r
+}\r
--- /dev/null
+#/** @file\r
+#\r
+# Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
+#\r
+#**/\r
+\r
+[Defines]\r
+ INF_VERSION = 0x00010005\r
+ BASE_NAME = PrePiHobListPointerLibTdx\r
+ FILE_GUID = 28297DB9-4CE7-4679-80E6-0270B215A2F2\r
+ MODULE_TYPE = BASE\r
+ VERSION_STRING = 1.0\r
+ LIBRARY_CLASS = PrePiHobListPointerLib\r
+\r
+[Sources]\r
+ PrePiHobListPointer.c\r
+\r
+[Packages]\r
+ MdePkg/MdePkg.dec\r
+ OvmfPkg/OvmfPkg.dec\r
+ EmbeddedPkg/EmbeddedPkg.dec\r
+ UefiCpuPkg/UefiCpuPkg.dec\r
+\r
+[Pcd]\r
+ gUefiCpuPkgTokenSpaceGuid.PcdSevEsWorkAreaBase\r
+\r
+[LibraryClasses]\r
+ PcdLib\r