UefiPayloadPkg: Add a new DebugPrintErrorLevelLib instance
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>
This commit is contained in:
committed by
mergify[bot]
parent
7fda517c3d
commit
b953265a27
@@ -0,0 +1,80 @@
|
||||
/** @file
|
||||
Debug Print Error Level library instance that retrieves
|
||||
the DebugPrintErrorLevel from bootloader.
|
||||
|
||||
Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
**/
|
||||
|
||||
#include <Base.h>
|
||||
#include <Uefi.h>
|
||||
#include <PiDxe.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/HobLib.h>
|
||||
#include <Guid/DebugPrintErrorLevel.h>
|
||||
#include <Library/DebugPrintErrorLevelLib.h>
|
||||
#include <UniversalPayload/UniversalPayload.h>
|
||||
|
||||
STATIC UINT32 gDebugPrintErrorLevel;
|
||||
STATIC BOOLEAN gDebugPrintErrorLevelInitialized = FALSE;
|
||||
|
||||
/**
|
||||
Returns the debug print error level mask for the current module.
|
||||
|
||||
@return Debug print error level mask for the current module.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
GetDebugPrintErrorLevel (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
VOID *GuidHob;
|
||||
UNIVERSAL_PAYLOAD_GENERIC_HEADER *GenericHeader;
|
||||
UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL *DebugPrintErrorLevel;
|
||||
|
||||
if (!gDebugPrintErrorLevelInitialized) {
|
||||
gDebugPrintErrorLevelInitialized = TRUE;
|
||||
gDebugPrintErrorLevel = PcdGet32 (PcdDebugPrintErrorLevel);
|
||||
GuidHob = GetFirstGuidHob (&gEdkiiDebugPrintErrorLevelGuid);
|
||||
if (GuidHob != NULL) {
|
||||
GenericHeader = (UNIVERSAL_PAYLOAD_GENERIC_HEADER *)GET_GUID_HOB_DATA (GuidHob);
|
||||
if ((sizeof (UNIVERSAL_PAYLOAD_GENERIC_HEADER) < GET_GUID_HOB_DATA_SIZE (GuidHob)) &&
|
||||
(GenericHeader->Length <= GET_GUID_HOB_DATA_SIZE (GuidHob)))
|
||||
{
|
||||
if (GenericHeader->Revision == UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL_REVISION) {
|
||||
DebugPrintErrorLevel = (UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL *)GET_GUID_HOB_DATA (GuidHob);
|
||||
if (DebugPrintErrorLevel->Header.Length > UNIVERSAL_PAYLOAD_SIZEOF_THROUGH_FIELD (UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL, ErrorLevel)) {
|
||||
gDebugPrintErrorLevel = DebugPrintErrorLevel->ErrorLevel;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return gDebugPrintErrorLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
Sets the global debug print error level mask fpr the entire platform.
|
||||
|
||||
@param ErrorLevel Global debug print error level.
|
||||
|
||||
@retval TRUE The debug print error level mask was sucessfully set.
|
||||
@retval FALSE The debug print error level mask could not be set.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
SetDebugPrintErrorLevel (
|
||||
UINT32 ErrorLevel
|
||||
)
|
||||
{
|
||||
//
|
||||
// This library uinstance does not support setting the global debug print error
|
||||
// level mask.
|
||||
//
|
||||
return FALSE;
|
||||
}
|
Reference in New Issue
Block a user