--- /dev/null
+/** @file\r
+ Define the structure for Debug Print Error Level Guid Hob.\r
+\r
+Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#ifndef UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL_H_\r
+#define UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL_H_\r
+\r
+#include <Uefi.h>\r
+#include <UniversalPayload/UniversalPayload.h>\r
+\r
+#pragma pack (1)\r
+//\r
+// ErrorLevel: The error level of the debug message.\r
+// Bits for ErrorLevel is declared in\r
+// edk2\MdePkg\Include\Library\DebugLib.h\r
+//\r
+typedef struct {\r
+ UNIVERSAL_PAYLOAD_GENERIC_HEADER Header;\r
+ UINT32 ErrorLevel;\r
+} UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL;\r
+\r
+#pragma pack()\r
+\r
+#define UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL_REVISION 1\r
+\r
+extern GUID gEdkiiDebugPrintErrorLevelGuid;\r
+#endif\r
--- /dev/null
+/** @file\r
+ Debug Print Error Level library instance that retrieves\r
+ the DebugPrintErrorLevel from bootloader.\r
+\r
+ Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#include <Base.h>\r
+#include <Uefi.h>\r
+#include <PiDxe.h>\r
+#include <Library/PcdLib.h>\r
+#include <Library/HobLib.h>\r
+#include <Guid/DebugPrintErrorLevel.h>\r
+#include <Library/DebugPrintErrorLevelLib.h>\r
+#include <UniversalPayload/UniversalPayload.h>\r
+\r
+STATIC UINT32 gDebugPrintErrorLevel;\r
+STATIC BOOLEAN gDebugPrintErrorLevelInitialized = FALSE;\r
+\r
+/**\r
+ Returns the debug print error level mask for the current module.\r
+\r
+ @return Debug print error level mask for the current module.\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+GetDebugPrintErrorLevel (\r
+ VOID\r
+ )\r
+{\r
+ VOID *GuidHob;\r
+ UNIVERSAL_PAYLOAD_GENERIC_HEADER *GenericHeader;\r
+ UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL *DebugPrintErrorLevel;\r
+\r
+ if (!gDebugPrintErrorLevelInitialized) {\r
+ gDebugPrintErrorLevelInitialized = TRUE;\r
+ gDebugPrintErrorLevel = PcdGet32 (PcdDebugPrintErrorLevel);\r
+ GuidHob = GetFirstGuidHob (&gEdkiiDebugPrintErrorLevelGuid);\r
+ if (GuidHob != NULL) {\r
+ GenericHeader = (UNIVERSAL_PAYLOAD_GENERIC_HEADER *)GET_GUID_HOB_DATA (GuidHob);\r
+ if ((sizeof (UNIVERSAL_PAYLOAD_GENERIC_HEADER) < GET_GUID_HOB_DATA_SIZE (GuidHob)) &&\r
+ (GenericHeader->Length <= GET_GUID_HOB_DATA_SIZE (GuidHob)))\r
+ {\r
+ if (GenericHeader->Revision == UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL_REVISION) {\r
+ DebugPrintErrorLevel = (UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL *)GET_GUID_HOB_DATA (GuidHob);\r
+ if (DebugPrintErrorLevel->Header.Length > UNIVERSAL_PAYLOAD_SIZEOF_THROUGH_FIELD (UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL, ErrorLevel)) {\r
+ gDebugPrintErrorLevel = DebugPrintErrorLevel->ErrorLevel;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ return gDebugPrintErrorLevel;\r
+}\r
+\r
+/**\r
+ Sets the global debug print error level mask fpr the entire platform.\r
+\r
+ @param ErrorLevel Global debug print error level.\r
+\r
+ @retval TRUE The debug print error level mask was sucessfully set.\r
+ @retval FALSE The debug print error level mask could not be set.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+SetDebugPrintErrorLevel (\r
+ UINT32 ErrorLevel\r
+ )\r
+{\r
+ //\r
+ // This library uinstance does not support setting the global debug print error\r
+ // level mask.\r
+ //\r
+ return FALSE;\r
+}\r
--- /dev/null
+## @file\r
+# Debug Print Error Level library instance that retrieves\r
+# the DebugPrintErrorLevel from bootloader.\r
+#\r
+# Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>\r
+#\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
+#\r
+##\r
+\r
+[Defines]\r
+ INF_VERSION = 0x00010005\r
+ BASE_NAME = DebugPrintErrorLevelLibHob\r
+ FILE_GUID = c3fead6d-bd4c-4131-bd5f-4bbceecc0fef\r
+ MODULE_TYPE = BASE\r
+ VERSION_STRING = 1.0\r
+ LIBRARY_CLASS = DebugPrintErrorLevelLib\r
+\r
+#\r
+# VALID_ARCHITECTURES = IA32 X64 EBC\r
+#\r
+\r
+[Sources]\r
+ DebugPrintErrorLevelLibHob.c\r
+\r
+[Packages]\r
+ MdePkg/MdePkg.dec\r
+ MdeModulePkg/MdeModulePkg.dec\r
+ UefiPayloadPkg/UefiPayloadPkg.dec\r
+\r
+[LibraryClasses]\r
+ PcdLib\r
+ HobLib\r
+\r
+[Pcd]\r
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel\r
+\r
+[Guids]\r
+ gEdkiiDebugPrintErrorLevelGuid\r
\r
##include/Guid/BootManagerMenu.h\r
gEdkiiBootManagerMenuFileGuid = { 0xdf939333, 0x42fc, 0x4b2a, { 0xa5, 0x9e, 0xbb, 0xae, 0x82, 0x81, 0xfe, 0xef }}\r
-\r
+ gEdkiiDebugPrintErrorLevelGuid = { 0xad82f436, 0x75c5, 0x4aa9, { 0x92, 0x93, 0xc5, 0x55, 0x0a, 0x7f, 0xf9, 0x71 }}\r
gUefiAcpiBoardInfoGuid = {0xad3d31b, 0xb3d8, 0x4506, {0xae, 0x71, 0x2e, 0xf1, 0x10, 0x6, 0xd9, 0xf}}\r
gUefiSerialPortInfoGuid = { 0x6c6872fe, 0x56a9, 0x4403, { 0xbb, 0x98, 0x95, 0x8d, 0x62, 0xde, 0x87, 0xf1 } }\r
gLoaderMemoryMapInfoGuid = { 0xa1ff7424, 0x7a1a, 0x478e, { 0xa9, 0xe4, 0x92, 0xf3, 0x57, 0xd1, 0x28, 0x32 } }\r