]> git.proxmox.com Git - mirror_edk2.git/commitdiff
UefiPayloadPkg: Add a new DebugPrintErrorLevelLib instance
authorXie, Yuanhao <yuanhao.xie@intel.com>
Thu, 31 Mar 2022 11:56:07 +0000 (19:56 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Sun, 3 Apr 2022 08:33:56 +0000 (08:33 +0000)
It consumes the HOB defined in
UefiPayloadPkg/Include/Guid/DebugPrintErrorLevel.h, and allow bootloader
 to config DebugPrintErrorLevel.

Cc: Guo Dong <guo.dong@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Cc: Sean Rhodes <sean@starlabs.systems>
Signed-off-by: Yuanhao Xie <yuanhao.xie@intel.com>
UefiPayloadPkg/Include/Guid/DebugPrintErrorLevel.h [new file with mode: 0644]
UefiPayloadPkg/Library/DebugPrintErrorLevelLibHob/DebugPrintErrorLevelLibHob.c [new file with mode: 0644]
UefiPayloadPkg/Library/DebugPrintErrorLevelLibHob/DebugPrintErrorLevelLibHob.inf [new file with mode: 0644]
UefiPayloadPkg/UefiPayloadPkg.dec

diff --git a/UefiPayloadPkg/Include/Guid/DebugPrintErrorLevel.h b/UefiPayloadPkg/Include/Guid/DebugPrintErrorLevel.h
new file mode 100644 (file)
index 0000000..164d579
--- /dev/null
@@ -0,0 +1,31 @@
+/** @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
diff --git a/UefiPayloadPkg/Library/DebugPrintErrorLevelLibHob/DebugPrintErrorLevelLibHob.c b/UefiPayloadPkg/Library/DebugPrintErrorLevelLibHob/DebugPrintErrorLevelLibHob.c
new file mode 100644 (file)
index 0000000..4f6b4ef
--- /dev/null
@@ -0,0 +1,80 @@
+/** @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
diff --git a/UefiPayloadPkg/Library/DebugPrintErrorLevelLibHob/DebugPrintErrorLevelLibHob.inf b/UefiPayloadPkg/Library/DebugPrintErrorLevelLibHob/DebugPrintErrorLevelLibHob.inf
new file mode 100644 (file)
index 0000000..0845b5a
--- /dev/null
@@ -0,0 +1,39 @@
+## @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
index 4051172caf4848968a9cb99c08bb54c6ee3f57e8..5c1aeb823523a371822c8b1795a18775e66ec563 100644 (file)
@@ -31,7 +31,7 @@
 \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