diff --git a/RedfishPkg/Include/Library/RedfishDebugLib.h b/RedfishPkg/Include/Library/RedfishDebugLib.h index ad7a697586..19e5a895cc 100644 --- a/RedfishPkg/Include/Library/RedfishDebugLib.h +++ b/RedfishPkg/Include/Library/RedfishDebugLib.h @@ -2,6 +2,7 @@ This file defines the Redfish debug library interface. Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent @@ -11,28 +12,48 @@ #define REDFISH_DEBUG_LIB_H_ #include +#include #include #include #include #include -#define DEBUG_REDFISH_NETWORK DEBUG_MANAGEABILITY ///< Debug error level for Redfish networking function -#define DEBUG_REDFISH_HOST_INTERFACE DEBUG_MANAGEABILITY ///< Debug error level for Redfish networking function +// Used with MdePKg DEBUG macro. +#define DEBUG_REDFISH_NETWORK DEBUG_MANAGEABILITY ///< Debug error level for Redfish networking function +#define DEBUG_REDFISH_HOST_INTERFACE DEBUG_MANAGEABILITY ///< Debug error level for Redfish Host INterface +#define DEBUG_REDFISH_PLATFORM_CONFIG DEBUG_MANAGEABILITY ///< Debug error level for Redfish Platform Configure Driver + +// +// Definitions of Redfish debug capability in Redfish component scope, used with DEBUG_REDFISH macro +// For example, Redfish Platform Config Driver +// DEBUG_REDFISH(DEBUG_REDFISH_PLATFORM_CONFIG_DXE, ...) +// +#define DEBUG_REDFISH_COMPONENT_PLATFORM_CONFIG_DXE 0x00000001 + +#define DEBUG_REDFISH(DebugCategory, ...) \ + do { \ + if (!DebugPrintEnabled()) { \ + break; \ + } \ + if (!DebugRedfishComponentEnabled (DebugCategory)) { \ + break; \ + } \ + DEBUG ((DEBUG_MANAGEABILITY, ##__VA_ARGS__)); \ + } while (FALSE) /** - Debug print the value of StatementValue. + Determine whether the Redfish debug category is enabled in + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishDebugCategory. - @param[in] ErrorLevel DEBUG macro error level. - @param[in] StatementValue The statement value to print. + @param[in] DebugCategory Redfish debug category. - @retval EFI_SUCCESS StatementValue is printed. - @retval EFI_INVALID_PARAMETER StatementValue is NULL. + @retval TRUE This debug category is enabled. + @retval FALSE This debug category is disabled.. **/ -EFI_STATUS -DumpHiiStatementValue ( - IN UINTN ErrorLevel, - IN HII_STATEMENT_VALUE *StatementValue +BOOLEAN +DebugRedfishComponentEnabled ( + IN UINT64 DebugCategory ); /** diff --git a/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.c b/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.c index 8b0425b8c3..f8bb51ff53 100644 --- a/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.c +++ b/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.c @@ -2,6 +2,7 @@ Redfish debug library to debug Redfish application. Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent @@ -25,55 +26,23 @@ #define REDFISH_PRINT_BUFFER_BYTES_PER_ROW 16 /** - Debug print the value of StatementValue. + Determine whether the Redfish debug category is enabled in + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishDebugCategory. - @param[in] ErrorLevel DEBUG macro error level. - @param[in] StatementValue The statement value to print. + @param[in] RedfishDebugCategory Redfish debug category. - @retval EFI_SUCCESS StatementValue is printed. - @retval EFI_INVALID_PARAMETER StatementValue is NULL. + @retval TRUE This debug category is enabled. + @retval FALSE This debug category is disabled.. **/ -EFI_STATUS -DumpHiiStatementValue ( - IN UINTN ErrorLevel, - IN HII_STATEMENT_VALUE *StatementValue +BOOLEAN +DebugRedfishComponentEnabled ( + IN UINT64 RedfishDebugCategory ) { - if (StatementValue == NULL) { - return EFI_INVALID_PARAMETER; - } + UINT64 DebugCategory; - DEBUG ((ErrorLevel, "BufferValueType: 0x%x\n", StatementValue->BufferValueType)); - DEBUG ((ErrorLevel, "BufferLen: 0x%x\n", StatementValue->BufferLen)); - DEBUG ((ErrorLevel, "Buffer: 0x%p\n", StatementValue->Buffer)); - DEBUG ((ErrorLevel, "Type: 0x%p\n", StatementValue->Type)); - - switch (StatementValue->Type) { - case EFI_IFR_TYPE_NUM_SIZE_8: - DEBUG ((ErrorLevel, "Value: 0x%x\n", StatementValue->Value.u8)); - break; - case EFI_IFR_TYPE_NUM_SIZE_16: - DEBUG ((ErrorLevel, "Value: 0x%x\n", StatementValue->Value.u16)); - break; - case EFI_IFR_TYPE_NUM_SIZE_32: - DEBUG ((ErrorLevel, "Value: 0x%x\n", StatementValue->Value.u32)); - break; - case EFI_IFR_TYPE_NUM_SIZE_64: - DEBUG ((ErrorLevel, "Value: 0x%lx\n", StatementValue->Value.u64)); - break; - case EFI_IFR_TYPE_BOOLEAN: - DEBUG ((ErrorLevel, "Value: %a\n", (StatementValue->Value.b ? "true" : "false"))); - break; - case EFI_IFR_TYPE_STRING: - DEBUG ((ErrorLevel, "Value: 0x%x\n", StatementValue->Value.string)); - break; - case EFI_IFR_TYPE_TIME: - case EFI_IFR_TYPE_DATE: - default: - break; - } - - return EFI_SUCCESS; + DebugCategory = FixedPcdGet64 (PcdRedfishDebugCategory); + return ((DebugCategory & RedfishDebugCategory) != 0); } /** diff --git a/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.inf b/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.inf index d468bb213b..42ff321b48 100644 --- a/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.inf +++ b/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.inf @@ -2,6 +2,7 @@ # INF file for Redfish debug library. # # Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -35,5 +36,8 @@ RedfishHttpLib UefiLib +[FixedPcd] + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishDebugCategory + [Depex] TRUE diff --git a/RedfishPkg/RedfishPkg.dec b/RedfishPkg/RedfishPkg.dec index 1a9c9ed7bc..a9665ff68e 100644 --- a/RedfishPkg/RedfishPkg.dec +++ b/RedfishPkg/RedfishPkg.dec @@ -5,6 +5,7 @@ # (C) Copyright 2021 Hewlett Packard Enterprise Development LP
# Copyright (c) 2023, American Megatrends International LLC. # Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent ## @@ -184,3 +185,11 @@ gEfiRedfishPkgTokenSpaceGuid.PcdHttpRetryWaitInSecond|1|UINT16|0x00001010 ## This is used to disable Redfish HTTP cache function and every request will be sent to Redfish service. gEfiRedfishPkgTokenSpaceGuid.PcdHttpCacheDisabled|FALSE|BOOLEAN|0x00001011 + # + # Redfish debug catagories + # To enable the debug message for the entire edk2 Redfish implementation, below PCDs must be set. + # DEBUG_MANAGEABILITY must be set PcdDebugPrintErrorLevel. + # + # 0x0000000000000001 RedfishPlatformConfigDxe driver debug enabled. + # + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishDebugCategory|0|UINT64|0x00001012