Reviewed-by: Nickle Wang <nick...@nvidia.com>

Regards,
Nickle

> -----Original Message-----
> From: abner.ch...@amd.com <abner.ch...@amd.com>
> Sent: Tuesday, March 26, 2024 11:15 PM
> To: devel@edk2.groups.io
> Cc: Nickle Wang <nick...@nvidia.com>; Igor Kulchytskyy <ig...@ami.com>
> Subject: [PATCH V2 2/6] RedfishPkg/RedfishDebugLib: Introduce Redfish DEBUG
> macro
> 
> External email: Use caution opening links or attachments
> 
> 
> From: Abner Chang <abner.ch...@amd.com>
> 
> Introduce DEBUG_REDFISH macro for the debug message of edk2 Redfish
> components.
> DEBUG_REDFISH can be used in any edk2 Redfish component with Redfish
> DebugCatagory as the first parameter.
> Whether the debug message is output or not depends on the platform setting of
> PcdRedfishDebugCatagory.
> 
> Signed-off-by: Abner Chang <abner.ch...@amd.com>
> Cc: Nickle Wang <nick...@nvidia.com>
> Cc: Igor Kulchytskyy <ig...@ami.com>
> ---
>  RedfishPkg/RedfishPkg.dec                     |  9 +++
>  .../RedfishDebugLib/RedfishDebugLib.inf       |  4 ++
>  RedfishPkg/Include/Library/RedfishDebugLib.h  | 43 +++++++++++----
>   .../Library/RedfishDebugLib/RedfishDebugLib.c | 55 ++++---------------
>  4 files changed, 57 insertions(+), 54 deletions(-)
> 
> diff --git a/RedfishPkg/RedfishPkg.dec b/RedfishPkg/RedfishPkg.dec index
> 1a9c9ed7bc5..a9665ff68ef 100644
> --- a/RedfishPkg/RedfishPkg.dec
> +++ b/RedfishPkg/RedfishPkg.dec
> @@ -5,6 +5,7 @@
>  # (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>  #
> 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.<BR>
>  #
>  # SPDX-License-Identifier: BSD-2-Clause-Patent  ## @@ -184,3 +185,11 @@
> 
> gEfiRedfishPkgTokenSpaceGuid.PcdHttpRetryWaitInSecond|1|UINT16|0x000010
> 10
>    ## This is used to disable Redfish HTTP cache function and every request 
> will be
> sent to Redfish service.
> 
> gEfiRedfishPkgTokenSpaceGuid.PcdHttpCacheDisabled|FALSE|BOOLEAN|0x0000
> 1011
> +  #
> +  # 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|0x000010
> + 12
> diff --git a/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.inf
> b/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.inf
> index d468bb213b6..42ff321b48e 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.<BR>
>  #
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent  # @@ -35,5 +36,8 @@
>    RedfishHttpLib
>    UefiLib
> 
> +[FixedPcd]
> +  gEfiRedfishPkgTokenSpaceGuid.PcdRedfishDebugCategory
> +
>  [Depex]
>    TRUE
> diff --git a/RedfishPkg/Include/Library/RedfishDebugLib.h
> b/RedfishPkg/Include/Library/RedfishDebugLib.h
> index ad7a6975867..19e5a895cc8 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.<BR>
> 
>    SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> @@ -11,28 +12,48 @@
>  #define REDFISH_DEBUG_LIB_H_
> 
>  #include <Uefi.h>
> +#include <Library/DebugLib.h>
>  #include <RedfishServiceData.h>
>  #include <Library/HiiUtilityLib.h>
>  #include <Library/JsonLib.h>
> 
>  #include <Protocol/EdkIIRedfishPlatformConfig.h>
> 
> -#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 8b0425b8c3b..f8bb51ff532 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.<BR>
> 
>    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);
>  }
> 
>  /**
> --
> 2.37.1.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#117152): https://edk2.groups.io/g/devel/message/117152
Mute This Topic: https://groups.io/mt/105159784/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to