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 3/6] RedfishPkg/RedfishPlatformConfigDxe:Add
> RefishDebugLib support
>
> External email: Use caution opening links or attachments
>
>
> From: Abner Chang <abner.ch...@amd.com>
>
> Add RedfishPlatformConfigDxe debug capability that aligns with edk2 Redfish
> debug mechanism.
>
> - PcdRedfishPlatformConfigDebugProperty, add PCD to control
> RedfishPlatformConfigDxe subordinate of Redfish debug
> capabilities.
> - PcdRedfishPlatformConfigFeatureProperty, add PCD to
> manage RedfishPlatformConfigDxe features.
>
> Signed-off-by: Abner Chang <abner.ch...@amd.com>
> Co-authored-by: Nickle Wang <nick...@nvidia.com>
> Cc: Igor Kulchytskyy <ig...@ami.com>
> ---
> RedfishPkg/RedfishPkg.dec | 15 +++
> .../RedfishPlatformConfigDxe.inf | 8 ++
> .../RedfishPlatformConfigDxe.h | 46 +++++++-
> .../RedfishPlatformConfigImpl.h | 28 +++++
> .../RedfishPlatformConfigCapability.c | 58 ++++++++++
> .../RedfishPlatformConfigDxe.c | 59 +++++++---
> .../RedfishPlatformConfigImpl.c | 107 +++++++++++-------
> 7 files changed, 262 insertions(+), 59 deletions(-) create mode 100644
> RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigCapability.c
>
> diff --git a/RedfishPkg/RedfishPkg.dec b/RedfishPkg/RedfishPkg.dec index
> a9665ff68ef..c048e43f53b 100644
> --- a/RedfishPkg/RedfishPkg.dec
> +++ b/RedfishPkg/RedfishPkg.dec
> @@ -193,3 +193,18 @@
> # 0x0000000000000001 RedfishPlatformConfigDxe driver debug enabled.
> #
>
> gEfiRedfishPkgTokenSpaceGuid.PcdRedfishDebugCategory|0|UINT64|0x0000101
> 2
> + #
> + # Redfish RedfishPlatformConfigDxe Debug Properties
> + # 0x00000001 x-uefi-redfish string database message enabled
> + # 0x00000002 Debug Message for dumping formset
> + # 0x00000004 Debug Message for x-uefi-redfish searching result
> + # 0x00000008 Debug Message for x-uefi-redfish Regular Expression
> searching
> result
> + #
> +
> + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishPlatformConfigDebugProperty|0|U
> + INT32|0x00001013
> + #
> + # RedfishPlatformConfigDxe feature enablement
> + # 0x00000001 Enable building Redfish Attribute Registry menu path.
> + # 0x00000002 Allow supressed HII option to be exposed on Redfish.
> + #
> + # Redfish RedfishPlatformConfigDxe feature Properties
> +
> + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishPlatformConfigFeatureProperty|0
> + |UINT32|0x00001014
> diff --git a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.inf
> b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.inf
> index 5a249c8c3bc..2db47c2cffc 100644
> --- a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.inf
> +++ b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.inf
> @@ -3,6 +3,7 @@
> #
> # (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR> #
> Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
> +# Copyright (C) 2024 Advanced Micro Devices, Inc. All rights
> +reserved.<BR>
> #
> # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -23,6 +24,7 @@
> RedfishPkg/RedfishPkg.dec
>
> [Sources]
> + RedfishPlatformConfigCapability.c
> RedfishPlatformConfigDxe.h
> RedfishPlatformConfigDxe.c
> RedfishPlatformConfigImpl.h
> @@ -36,7 +38,9 @@
> HiiLib
> HiiUtilityLib
> MemoryAllocationLib
> + PcdLib
> PrintLib
> + RedfishDebugLib
> UefiLib
> UefiBootServicesTableLib
> UefiRuntimeServicesTableLib
> @@ -51,5 +55,9 @@
> [Guids]
> gEfiRegexSyntaxTypePerlGuid ## CONSUMED
>
> +[FixedPcd]
> + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishPlatformConfigFeatureProperty
> + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishPlatformConfigDebugProperty
> +
> [Depex]
> TRUE
> diff --git a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.h
> b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.h
> index 38adea04c5b..688f2067bff 100644
> --- a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.h
> +++ b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.h
> @@ -3,6 +3,7 @@
>
> (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
> + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights
> + reserved.<BR>
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> @@ -20,7 +21,9 @@
> #include <Library/BaseMemoryLib.h>
> #include <Library/DebugLib.h>
> #include <Library/MemoryAllocationLib.h>
> +#include <Library/PcdLib.h>
> #include <Library/PrintLib.h>
> +#include <Library/RedfishDebugLib.h>
> #include <Library/UefiLib.h>
> #include <Library/UefiBootServicesTableLib.h>
> #include <Library/UefiDriverEntryPoint.h> @@ -37,6 +40,41 @@ // #include
> <Protocol/EdkIIRedfishPlatformConfig.h>
>
> +//
> +// Debug message in DEBUG_REDFISH_COMPONENT_PLATFORM_CONFIG_DXE
> scope.
> +// To enable the debug message for this module, below PCDs must be set.
> +//
> +// 1. DEBUG_MANAGEABILITY must be set PcdDebugPrintErrorLevel.
> +//
> +// 2 RedfishPlatformConfigDxe debug enablement must be set in
> +// PcdRedfishDebugCategory (defined in RedfishPkg.dec)
> +//
> +// 3. The suborinate debug enablement for RedfishPlatformConfigDxe
> +// must be set in PcdRedfishPlatformConfigDebugPropert (defined
> +// in RedfishPkg.dec).
> +//
> +#define DEBUG_REDFISH_THIS_MODULE(DebugSubordinate, ...) \
> + while (RedfishPlatformConfigDebugProp (DebugSubordinate)) { \
> + DEBUG_REDFISH(DEBUG_REDFISH_COMPONENT_PLATFORM_CONFIG_DXE,
> ##__VA_ARGS__); \
> + break; \
> + }
> +
> +#define DEBUG_REDFISH_THIS_MODULE_CODE_BEGIN(DebugSubordinate) \
> + if (RedfishPlatformConfigDebugProp (DebugSubordinate)) {
> +
> +#define DEBUG_REDFISH_THIS_MODULE_CODE_END() }
> +
> +#define DEBUG_REDFISH_THIS_MODULE_CODE(DebugSubordinate, Expression)
> \
> + DEBUG_REDFISH_THIS_MODULE_CODE_BEGIN(DebugSubordinate) \
> + Expression \
> + DEBUG_REDFISH_THIS_MODULE_CODE_END()
> +
> +// Subordinate debug property for DEBUG_REDFISH_PLATFORM_CONFIG_DXE
> +#define REDFISH_PLATFORM_CONFIG_DEBUG_STRING_DATABASE
> 0x00000001
> +#define REDFISH_PLATFORM_CONFIG_DEBUG_DUMP_FORMSET
> 0x00000002
> +#define REDFISH_PLATFORM_CONFIG_DEBUG_CONFIG_LANG_SEARCH
> 0x00000004
> +#define REDFISH_PLATFORM_CONFIG_DEBUG_CONFIG_LANG_REGEX
> 0x00000008
> +
> ///
> /// Definition of EDKII_REDFISH_PLATFORM_CONFIG_NOTIFY.
> ///
> @@ -75,8 +113,12 @@ typedef struct {
> #define REGULAR_EXPRESSION_INCLUDE_ALL L".*"
> #define CONFIGURE_LANGUAGE_PREFIX "x-uefi-redfish-"
> #define REDFISH_PLATFORM_CONFIG_VERSION 0x00010000
> -#define REDFISH_PLATFORM_CONFIG_DEBUG DEBUG_MANAGEABILITY
> -#define REDFISH_MENU_PATH_SIZE 8
> +
> +#define REDFISH_MENU_PATH_SIZE 8
> +
> +// Definitions of Redfish platform config capbility
> +#define REDFISH_PLATFORM_CONFIG_BUILD_MENU_PATH 0x000000001
> +#define REDFISH_PLATFORM_CONFIG_ALLOW_SUPPRESSED 0x000000002
>
> /**
> Convert input unicode string to ascii string. It's caller's diff --git
> a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigImpl.h
> b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigImpl.h
> index 6e6c7fdb8a9..09d9789f574 100644
> --- a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigImpl.h
> +++ b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigImpl.h
> @@ -418,4 +418,32 @@ HiiStrSize (
> IN CONST CHAR16 *String
> );
>
> +/**
> + Check if the debug property is enabled or not.
> +
> + @param[in] DebugType Debug enablement type
> +
> + @retval TRUE, the debug property is enabled.
> + FALSE, the debug property is not enabled.
> +
> +**/
> +BOOLEAN
> +RedfishPlatformConfigDebugProp (
> + IN UINT64 DebugProp
> + );
> +
> +/**
> + Check if the Platform Configure feature is enabled or not.
> +
> + @param[in] FeatureType Redfish platform config feature enablement
> +
> + @retval TRUE, the feature is enabled.
> + FALSE, the feature is not enabled.
> +
> +**/
> +BOOLEAN
> +RedfishPlatformConfigFeatureProp (
> + IN UINT64 FeatureProp
> + );
> +
> #endif
> diff --git
> a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigCapability.c
> b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigCapability.c
> new file mode 100644
> index 00000000000..753c4d393f3
> --- /dev/null
> +++ b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigCapabilit
> +++ y.c
> @@ -0,0 +1,58 @@
> +/** @file
> + The implementation of EDKII Redfish Platform Config Capability.
> + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights
> +reserved.<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include "RedfishPlatformConfigDxe.h"
> +#include "RedfishPlatformConfigImpl.h"
> +
> +/**
> + Check if the debug property is enabled or not.
> +
> + @param[in] DebugType Debug enablement type
> +
> + @retval TRUE, the debug property is enabled.
> + FALSE, the debug property is not enabled.
> +
> +**/
> +BOOLEAN
> +RedfishPlatformConfigDebugProp (
> + IN UINT64 DebugType
> + )
> +{
> + UINT64 DebugProp;
> +
> + DebugProp = FixedPcdGet64 (PcdRedfishPlatformConfigDebugProperty);
> + if ((DebugProp & DebugType) != 0) {
> + return TRUE;
> + }
> +
> + return FALSE;
> +}
> +
> +/**
> + Check if the Platform Configure feature is enabled or not.
> +
> + @param[in] FeatureType Redfish platform config feature enablement
> +
> + @retval TRUE, the feature is enabled.
> + FALSE, the feature is not enabled.
> +
> +**/
> +BOOLEAN
> +RedfishPlatformConfigFeatureProp (
> + IN UINT64 FeatureType
> + )
> +{
> + UINT64 FeatureProp;
> +
> + FeatureProp = FixedPcdGet64
> + (PcdRedfishPlatformConfigFeatureProperty);
> + if ((FeatureProp & FeatureType) != 0) {
> + return TRUE;
> + }
> +
> + return FALSE;
> +}
> diff --git a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c
> b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c
> index 664b48eb50e..8a02c839035 100644
> --- a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c
> +++ b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c
> @@ -315,7 +315,7 @@ DumpHiiStatementPrompt (
>
> **/
> CHAR8 *
> -BuildMenPath (
> +BuildMenuPath (
> IN REDFISH_PLATFORM_CONFIG_STATEMENT_PRIVATE *StatementPrivate
> )
> {
> @@ -345,7 +345,7 @@ BuildMenPath (
> }
>
> do {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "F(%d) <-", FormPrivate->Id));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "F(%d) <-",
> + FormPrivate->Id));
> FormPrivate = FindFormLinkToThis (FormPrivate);
> if (FormPrivate == NULL) {
> break;
> @@ -387,7 +387,7 @@ BuildMenPath (
> AsciiStrCatS (Buffer, OldBufferSize, "/");
> AsciiStrCatS (Buffer, OldBufferSize, FormTitle);
> FreePool (FormTitle);
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, " %a\n", Buffer));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, " %a\n", Buffer));
> }
>
> FormPrivate = (REDFISH_PLATFORM_CONFIG_FORM_PRIVATE
> *)PopRedfishStack (FormStack); @@ -1061,12 +1061,12 @@
> DumpOrderedListValue (
> return;
> }
>
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "Value.Type= 0x%x\n",
> OrderedListStatement->Value.Type));
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "Value.BufferValueType=
> 0x%x\n", OrderedListStatement->Value.BufferValueType));
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "Value.BufferLen= 0x%x\n",
> OrderedListStatement->Value.BufferLen));
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "Value.Buffer= 0x%x\n",
> OrderedListStatement->Value.Buffer));
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "Value.MaxContainers=
> 0x%x\n", OrderedListStatement->ExtraData.OrderListData.MaxContainers));
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "StorageWidth= 0x%x\n",
> OrderedListStatement->StorageWidth));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "Value.Type= 0x%x\n",
> + OrderedListStatement->Value.Type));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "Value.BufferValueType=
> + 0x%x\n", OrderedListStatement->Value.BufferValueType));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "Value.BufferLen= 0x%x\n",
> + OrderedListStatement->Value.BufferLen));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "Value.Buffer= 0x%x\n",
> + OrderedListStatement->Value.Buffer));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "Value.MaxContainers=
> 0x%x\n",
> + OrderedListStatement->ExtraData.OrderListData.MaxContainers));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "StorageWidth= 0x%x\n",
> + OrderedListStatement->StorageWidth));
>
> if (OrderedListStatement->Value.Buffer == NULL) {
> return;
> @@ -1083,7 +1083,7 @@ DumpOrderedListValue (
> Value8 = (UINT8 *)OrderedListStatement->Value.Buffer;
> Count = OrderedListStatement->StorageWidth / sizeof (UINT8);
> for (Index = 0; Index < Count; Index++) {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%d ", Value8[Index]));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%d ", Value8[Index]));
> }
>
> break;
> @@ -1091,7 +1091,7 @@ DumpOrderedListValue (
> Value16 = (UINT16 *)OrderedListStatement->Value.Buffer;
> Count = OrderedListStatement->StorageWidth / sizeof (UINT16);
> for (Index = 0; Index < Count; Index++) {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%d ", Value16[Index]));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%d ", Value16[Index]));
> }
>
> break;
> @@ -1099,7 +1099,7 @@ DumpOrderedListValue (
> Value32 = (UINT32 *)OrderedListStatement->Value.Buffer;
> Count = OrderedListStatement->StorageWidth / sizeof (UINT32);
> for (Index = 0; Index < Count; Index++) {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%d ", Value32[Index]));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%d ", Value32[Index]));
> }
>
> break;
> @@ -1107,7 +1107,7 @@ DumpOrderedListValue (
> Value64 = (UINT64 *)OrderedListStatement->Value.Buffer;
> Count = OrderedListStatement->StorageWidth / sizeof (UINT64);
> for (Index = 0; Index < Count; Index++) {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%d ", Value64[Index]));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%d ", Value64[Index]));
> }
>
> break;
> @@ -1115,13 +1115,13 @@ DumpOrderedListValue (
> Value8 = (UINT8 *)OrderedListStatement->Value.Buffer;
> Count = OrderedListStatement->StorageWidth / sizeof (UINT8);
> for (Index = 0; Index < Count; Index++) {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%d ", Value8[Index]));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%d ", Value8[Index]));
> }
>
> break;
> }
>
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "\n"));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "\n"));
> }
>
> /**
> @@ -2013,6 +2013,8 @@ RedfishPlatformConfigProtocolGetConfigureLang (
> UINTN Index;
> CHAR8 *FullSchema;
>
> + DEBUG ((DEBUG_INFO, "%a: Harvest config language of %a_%a (Regex:
> + %s).\n", __func__, Schema, Version, RegexPattern));
> +
> if ((This == NULL) || IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING
> (Version) || (Count == NULL) || (ConfigureLangList == NULL) ||
> IS_EMPTY_STRING (RegexPattern)) {
> return EFI_INVALID_PARAMETER;
> }
> @@ -2072,6 +2074,22 @@ RedfishPlatformConfigProtocolGetConfigureLang (
> *Count = StatementList.Count;
> *ConfigureLangList = TmpConfigureLangList;
>
> + DEBUG_REDFISH_THIS_MODULE (
> + REDFISH_PLATFORM_CONFIG_DEBUG_CONFIG_LANG_REGEX,
> + "%a: Number of configure language strings harvested: %d\n",
> + __func__,
> + StatementList.Count
> + );
> +
> + DEBUG_REDFISH_THIS_MODULE_CODE (
> + REDFISH_PLATFORM_CONFIG_DEBUG_CONFIG_LANG_REGEX,
> + DEBUG_REDFISH (DEBUG_REDFISH_COMPONENT_PLATFORM_CONFIG_DXE,
> "%a: Number of configure language strings harvested: %d\n", __func__,
> StatementList.Count);
> + for (Index = 0; Index < *Count; Index++) {
> + DEBUG_REDFISH (DEBUG_REDFISH_COMPONENT_PLATFORM_CONFIG_DXE,
> " (%d) %s\n", Index, TmpConfigureLangList[Index]);
> + }
> +
> + );
> +
> RELEASE_RESOURCE:
>
> if (FullSchema != NULL) {
> @@ -2082,6 +2100,7 @@ RELEASE_RESOURCE:
> ReleaseStatementList (&StatementList);
> }
>
> + DEBUG ((DEBUG_INFO, "%a: exit.\n", __func__));
> return Status;
> }
>
> @@ -2296,6 +2315,7 @@ RedfishPlatformConfigProtocolGetAttribute (
> CHAR8 *FullSchema;
> CHAR8 *Buffer;
>
> + DEBUG ((DEBUG_INFO, "%a: Entry\n", __func__));
> if ((This == NULL) || IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING
> (Version) || IS_EMPTY_STRING (ConfigureLang) || (AttributeValue == NULL)) {
> return EFI_INVALID_PARAMETER;
> }
> @@ -2337,9 +2357,11 @@ RedfishPlatformConfigProtocolGetAttribute (
> //
> // Build up menu path
> //
> - AttributeValue->MenuPath = BuildMenPath (TargetStatement);
> - if (AttributeValue->MenuPath == NULL) {
> - DEBUG ((DEBUG_ERROR, "%a: failed to build menu path for \"%a\"\n",
> __func__, AttributeValue->AttributeName));
> + if (RedfishPlatformConfigFeatureProp
> (REDFISH_PLATFORM_CONFIG_BUILD_MENU_PATH)) {
> + AttributeValue->MenuPath = BuildMenuPath (TargetStatement);
> + if (AttributeValue->MenuPath == NULL) {
> + DEBUG ((DEBUG_ERROR, "%a: failed to build menu path for \"%a\"\n",
> __func__, AttributeValue->AttributeName));
> + }
> }
>
> //
> @@ -2370,6 +2392,7 @@ RELEASE_RESOURCE:
> FreePool (FullSchema);
> }
>
> + DEBUG ((DEBUG_INFO, "%a: Exit\n", __func__));
> return Status;
> }
>
> diff --git a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigImpl.c
> b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigImpl.c
> index 8b1ddf4360a..537ce09a2d3 100644
> --- a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigImpl.c
> +++ b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigImpl.c
> @@ -32,7 +32,7 @@ DumpHiiString (
> EFI_STRING String;
>
> if ((HiiHandle == NULL) || (StringId == 0)) {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "???"));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "???"));
> return EFI_INVALID_PARAMETER;
> }
>
> @@ -41,7 +41,7 @@ DumpHiiString (
> return EFI_NOT_FOUND;
> }
>
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%s", String));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%s", String));
> FreePool (String);
>
> return EFI_SUCCESS;
> @@ -79,18 +79,18 @@ DumpFormset (
> HiiFormPrivate = REDFISH_PLATFORM_CONFIG_FORM_FROM_LINK
> (HiiFormLink);
> HiiNextFormLink = GetNextNode (&FormsetPrivate->HiiFormList,
> HiiFormLink);
>
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, " [%d] form: %d title: ",
> ++Index, HiiFormPrivate->Id));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, " [%d] form: %d title: ",
> + ++Index, HiiFormPrivate->Id));
> DumpHiiString (FormsetPrivate->HiiHandle, HiiFormPrivate->Title);
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "\n"));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "\n"));
>
> HiiStatementLink = GetFirstNode (&HiiFormPrivate->StatementList);
> while (!IsNull (&HiiFormPrivate->StatementList, HiiStatementLink)) {
> HiiStatementPrivate =
> REDFISH_PLATFORM_CONFIG_STATEMENT_FROM_LINK (HiiStatementLink);
> HiiNextStatementLink = GetNextNode (&HiiFormPrivate->StatementList,
> HiiStatementLink);
>
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, " QID: 0x%x Prompt: ",
> HiiStatementPrivate->QuestionId));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, " QID: 0x%x Prompt: ",
> HiiStatementPrivate->QuestionId));
> DumpHiiString (FormsetPrivate->HiiHandle, HiiStatementPrivate-
> >Description);
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "\n"));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "\n"));
>
> HiiStatementLink = HiiNextStatementLink;
> }
> @@ -125,7 +125,7 @@ DumpFormsetList (
> }
>
> if (IsListEmpty (FormsetList)) {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%a: Empty formset list\n",
> __func__));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: Empty formset list\n",
> + __func__));
> return EFI_SUCCESS;
> }
>
> @@ -135,7 +135,7 @@ DumpFormsetList (
> HiiFormsetNextLink = GetNextNode (FormsetList, HiiFormsetLink);
> HiiFormsetPrivate = REDFISH_PLATFORM_CONFIG_FORMSET_FROM_LINK
> (HiiFormsetLink);
>
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "[%d] HII Handle: 0x%x
> formset: %g at %s\n", ++Index, HiiFormsetPrivate->HiiHandle,
> &HiiFormsetPrivate->Guid, HiiFormsetPrivate->DevicePathStr));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "[%d] HII Handle: 0x%x
> + formset: %g at %s\n", ++Index, HiiFormsetPrivate->HiiHandle,
> + &HiiFormsetPrivate->Guid, HiiFormsetPrivate->DevicePathStr));
> DumpFormset (HiiFormsetPrivate);
>
> HiiFormsetLink = HiiFormsetNextLink; @@ -622,7 +622,9 @@
> GetStatementPrivateByConfigureLangRegex (
> HiiNextStatementLink = GetNextNode (&HiiFormPrivate->StatementList,
> HiiStatementLink);
> HiiStatementPrivate =
> REDFISH_PLATFORM_CONFIG_STATEMENT_FROM_LINK (HiiStatementLink);
>
> - if ((HiiStatementPrivate->Description != 0) && !HiiStatementPrivate-
> >Suppressed) {
> + if ((HiiStatementPrivate->Description != 0) &&
> + (RedfishPlatformConfigFeatureProp
> (REDFISH_PLATFORM_CONFIG_ALLOW_SUPPRESSED) || !HiiStatementPrivate-
> >Suppressed))
> + {
> TmpString = HiiStatementPrivate->DescriptionStr;
> if (TmpString != NULL) {
> Status = RegularExpressionProtocol->MatchString ( @@ -698,6
> +700,7
> @@ GetStatementPrivateByConfigureLang (
> LIST_ENTRY *HiiNextStatementLink;
> REDFISH_PLATFORM_CONFIG_STATEMENT_PRIVATE *HiiStatementPrivate;
> EFI_STRING TmpString;
> + UINTN Index;
>
> if ((FormsetList == NULL) || IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING
> (ConfigureLang)) {
> return NULL;
> @@ -707,6 +710,7 @@ GetStatementPrivateByConfigureLang (
> return NULL;
> }
>
> + Index = 0;
> HiiFormsetLink = GetFirstNode (FormsetList);
> while (!IsNull (FormsetList, HiiFormsetLink)) {
> HiiFormsetNextLink = GetNextNode (FormsetList, HiiFormsetLink); @@ -
> 731,15 +735,22 @@ GetStatementPrivateByConfigureLang (
> HiiNextStatementLink = GetNextNode (&HiiFormPrivate->StatementList,
> HiiStatementLink);
> HiiStatementPrivate =
> REDFISH_PLATFORM_CONFIG_STATEMENT_FROM_LINK (HiiStatementLink);
>
> - DEBUG_CODE (
> - STATIC UINTN Index = 0;
> - Index++;
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%a: [%d] search %s in
> QID: 0x%x form: 0x%x formset: %g\n", __func__, Index, ConfigureLang,
> HiiStatementPrivate->QuestionId, HiiFormPrivate->Id, &HiiFormsetPrivate-
> >Guid));
> - );
> -
> - if (HiiStatementPrivate->Description != 0) {
> + if ((HiiStatementPrivate->Description != 0) &&
> + (RedfishPlatformConfigFeatureProp
> (REDFISH_PLATFORM_CONFIG_ALLOW_SUPPRESSED) || !HiiStatementPrivate-
> >Suppressed))
> + {
> TmpString = HiiStatementPrivate->DescriptionStr;
> if (TmpString != NULL) {
> + Index++;
> + DEBUG_REDFISH_THIS_MODULE (
> + REDFISH_PLATFORM_CONFIG_DEBUG_CONFIG_LANG_SEARCH,
> + "%a: [%d] check %s in QID: 0x%x form: 0x%x formset: %g\n",
> + __func__,
> + Index,
> + ConfigureLang,
> + HiiStatementPrivate->QuestionId,
> + HiiFormPrivate->Id,
> + &HiiFormsetPrivate->Guid
> + );
> if (HiiStrCmp (TmpString, ConfigureLang) == 0) {
> return HiiStatementPrivate;
> }
> @@ -1022,7 +1033,7 @@ NewRedfishXuefiStringArray (
>
> **/
> REDFISH_X_UEFI_STRING_DATABASE *
> -GetExitOrCreateXuefiStringDatabase (
> +GetExistOrCreateXuefiStringDatabase (
> IN REDFISH_PLATFORM_CONFIG_FORM_SET_PRIVATE *FormsetPrivate,
> IN EFI_HII_STRING_PACKAGE_HDR *HiiStringPackageHeader
> )
> @@ -1031,8 +1042,6 @@ GetExitOrCreateXuefiStringDatabase (
> BOOLEAN CreateNewOne;
> REDFISH_X_UEFI_STRING_DATABASE *XuefiRedfishStringDatabase;
>
> - DEBUG ((DEBUG_INFO, "%a: Entry\n", __func__));
> -
> CreateNewOne = TRUE;
> XuefiRedfishStringDatabase = NULL;
> if (!IsListEmpty (&FormsetPrivate->XuefiRedfishStringDatabase)) { @@
> -1054,7
> +1063,7 @@ GetExitOrCreateXuefiStringDatabase (
> }
>
> if (CreateNewOne) {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, " Creating x-uefi-redfish
> (%a) string database...\n", HiiStringPackageHeader->Language));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, " Creating x-uefi-redfish
> + (%a) string database...\n", HiiStringPackageHeader->Language));
> XuefiRedfishStringDatabase = (REDFISH_X_UEFI_STRING_DATABASE
> *)AllocateZeroPool (sizeof (REDFISH_X_UEFI_STRING_DATABASE));
> if (XuefiRedfishStringDatabase == NULL) {
> DEBUG ((DEBUG_ERROR, " Failed to allocate
> REDFISH_X_UEFI_STRING_DATABASE.\n"));
> @@ -1073,7 +1082,7 @@ GetExitOrCreateXuefiStringDatabase (
> }
>
> DEBUG ((
> - REDFISH_PLATFORM_CONFIG_DEBUG,
> + DEBUG_REDFISH_PLATFORM_CONFIG,
> " x-uefi-redfish (%a):\n String array is added to
> XuefiRedfishStringDatabase,
> total %d arrays now.\n",
> XuefiRedfishStringDatabase->XuefiRedfishLanguage,
> XuefiRedfishStringDatabase->StringsArrayBlocks
> @@ -1145,7 +1154,7 @@ RedfishXuefiStringInsertDatabase (
> REDFISH_X_UEFI_STRING_DATABASE *XuefiRedfishStringDatabase;
> REDFISH_X_UEFI_STRINGS_ARRAY *ThisArray;
>
> - XuefiRedfishStringDatabase = GetExitOrCreateXuefiStringDatabase
> (FormsetPrivate, HiiStringPackageHeader);
> + XuefiRedfishStringDatabase = GetExistOrCreateXuefiStringDatabase
> + (FormsetPrivate, HiiStringPackageHeader);
> if (XuefiRedfishStringDatabase == NULL) {
> DEBUG ((DEBUG_ERROR, "%a: Failed to get
> REDFISH_X_UEFI_STRING_DATABASE of x-uefi-redfish language %a.\n",
> __func__, HiiStringPackageHeader->Language));
> ReleaseXuefiStringDatabase (FormsetPrivate); @@ -1170,21 +1179,22 @@
> RedfishXuefiStringInsertDatabase (
> (ThisArray->ArrayEntryAddress + StringIdOffset)->StringId = StringId;
> (ThisArray->ArrayEntryAddress + StringIdOffset)->UcsString = StringTextPtr;
>
> - DEBUG ((
> - REDFISH_PLATFORM_CONFIG_DEBUG,
> + DEBUG_REDFISH_THIS_MODULE (
> + REDFISH_PLATFORM_CONFIG_DEBUG_STRING_DATABASE,
> " Insert string ID: (%d) to database\n x-uefi-string: \"%s\"\n
> Language:
> %a.\n",
> StringId,
> StringTextPtr,
> HiiStringPackageHeader->Language
> - ));
> + );
> return EFI_SUCCESS;
> }
>
> /**
> Get x-uefi-redfish string and language by string ID.
>
> - @param[in] FormsetPrivate Pointer to HII form-set private
> instance.
> - @param[in] HiiStringPackageHeader HII string package header.
> + @param[in] FormsetPrivate Pointer to HII form-set private
> instance.
> + @param[in] HiiStringPackageHeader HII string package header.
> + @param[out] TotalStringAdded Return the total strings added to
> database.
>
> @retval TRUE x-uefi-redfish string and ID map is inserted to database.
> FALSE Something is wrong when insert x-uefi-redfish string and
> ID map.
> @@ -1192,8 +1202,9 @@ RedfishXuefiStringInsertDatabase ( **/ BOOLEAN
> CreateXuefiLanguageStringIdMap (
> - IN REDFISH_PLATFORM_CONFIG_FORM_SET_PRIVATE *FormsetPrivate,
> - IN EFI_HII_STRING_PACKAGE_HDR *HiiStringPackageHeader
> + IN REDFISH_PLATFORM_CONFIG_FORM_SET_PRIVATE *FormsetPrivate,
> + IN EFI_HII_STRING_PACKAGE_HDR *HiiStringPackageHeader,
> + OUT UINTN *TotalStringAdded
> )
> {
> EFI_STATUS Status;
> @@ -1209,6 +1220,9 @@ CreateXuefiLanguageStringIdMap (
> EFI_HII_SIBT_EXT2_BLOCK Ext2;
> UINT32 Length32;
> UINT8 *StringBlockInfo;
> + UINTN StringsAdded;
> +
> + StringsAdded = 0;
>
> //
> // Parse the string blocks to get the string text and font.
> @@ -1280,6 +1294,8 @@ CreateXuefiLanguageStringIdMap (
> DEBUG ((DEBUG_ERROR, "%a: Failed to insert x-uefi-redfish string
> %s.\n",
> __func__, StringTextPtr));
> return FALSE;
> }
> +
> + StringsAdded++;
> }
>
> BlockSize += (Offset + HiiStrSize ((CHAR16 *)StringTextPtr)); @@
> -1371,6
> +1387,7 @@ CreateXuefiLanguageStringIdMap (
> BlockHdr = (UINT8 *)(StringBlockInfo + BlockSize);
> }
>
> + *TotalStringAdded = StringsAdded;
> return TRUE;
> }
>
> @@ -1484,6 +1501,8 @@ BuildXUefiRedfishStringDatabase (
> UINTN SupportedSchemaLangCount;
> CHAR8 **SupportedSchemaLang;
> BOOLEAN StringIdMapIsBuilt;
> + UINTN TotalStringsAdded;
> + UINTN NumberPackageStrings;
>
> DEBUG ((DEBUG_INFO, "%a: Building x-uefi-redfish string database, HII
> Formset
> GUID - %g.\n", __func__, FormsetPrivate->Guid));
>
> @@ -1515,6 +1534,7 @@ BuildXUefiRedfishStringDatabase (
> return;
> }
>
> + TotalStringsAdded = 0;
> //
> // Finding the string package.
> //
> @@ -1539,14 +1559,18 @@ BuildXUefiRedfishStringDatabase (
> AsciiStrLen (HiiStringPackageHeader->Language)
> ) == 0)
> {
> - StringIdMapIsBuilt = CreateXuefiLanguageStringIdMap
> (FormsetPrivate,
> HiiStringPackageHeader);
> + StringIdMapIsBuilt = CreateXuefiLanguageStringIdMap
> (FormsetPrivate,
> HiiStringPackageHeader, &NumberPackageStrings);
> + if (StringIdMapIsBuilt) {
> + TotalStringsAdded += NumberPackageStrings;
> + }
> +
> break;
> }
> }
>
> if (StringIdMapIsBuilt == FALSE) {
> if (AsciiStrStr (HiiStringPackageHeader->Language,
> X_UEFI_SCHEMA_PREFIX) == NULL) {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, " No need to build x-
> uefi-redfish string ID map for HII language %a\n", HiiStringPackageHeader-
> >Language));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, " No need to build
> + x-uefi-redfish string ID map for HII language %a\n",
> + HiiStringPackageHeader->Language));
> } else {
> DEBUG ((DEBUG_ERROR, " Failed to build x-uefi-redfish string ID
> map of
> HII language %a\n", HiiStringPackageHeader->Language));
> }
> @@ -1556,6 +1580,8 @@ BuildXUefiRedfishStringDatabase (
> PackageHeader = (EFI_HII_PACKAGE_HEADER *)((UINTN)PackageHeader +
> PackageHeader->Length);
> }
> }
> +
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, " Total %d x-uefi-redfish
> + config language are added.\n", TotalStringsAdded));
> }
>
> /**
> @@ -1621,7 +1647,7 @@ LoadFormset (
> FormsetPrivate->DevicePathStr = ConvertDevicePathToText (HiiFormSet-
> >DevicePath, FALSE, FALSE);
> Status = GetSupportedSchema
> (FormsetPrivate->HiiHandle,
> &FormsetPrivate->SupportedSchema);
> if (EFI_ERROR (Status)) {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%a: No x-uefi-redfish
> configuration found on the formset - %g\n", __func__, FormsetPrivate->Guid));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: No x-uefi-redfish
> + configuration found on the formset - %g\n", __func__,
> + FormsetPrivate->Guid));
> return EFI_UNSUPPORTED; // Can't build AttributeRegistry Meni path with
> returning EFI_UNSUPPORTED.
> } else {
> // Building x-uefi-redfish string database @@ -1789,7 +1815,10 @@
> LoadFormsetList (
> InsertTailList (FormsetList, &FormsetPrivate->Link);
>
> DEBUG_CODE (
> + if (RedfishPlatformConfigDebugProp
> + (REDFISH_PLATFORM_CONFIG_DEBUG_DUMP_FORMSET)) {
> DumpFormsetList (FormsetList);
> + }
> +
> );
>
> return EFI_SUCCESS;
> @@ -1909,7 +1938,7 @@ NotifyFormsetUpdate (
> if (TargetPendingList != NULL) {
> TargetPendingList->IsDeleted = FALSE;
> DEBUG_CODE (
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%a: HII handle: 0x%x is
> updated\n", __func__, HiiHandle));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: HII handle: 0x%x is
> + updated\n", __func__, HiiHandle));
> );
> return EFI_SUCCESS;
> }
> @@ -1925,7 +1954,7 @@ NotifyFormsetUpdate (
> InsertTailList (PendingList, &TargetPendingList->Link);
>
> DEBUG_CODE (
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%a: HII handle: 0x%x is
> created\n", __func__, HiiHandle));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: HII handle: 0x%x is
> + created\n", __func__, HiiHandle));
> );
>
> return EFI_SUCCESS;
> @@ -1962,7 +1991,7 @@ NotifyFormsetDeleted (
> if (TargetPendingList != NULL) {
> TargetPendingList->IsDeleted = TRUE;
> DEBUG_CODE (
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%a: HII handle: 0x%x is
> updated and deleted\n", __func__, HiiHandle));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: HII handle: 0x%x is
> + updated and deleted\n", __func__, HiiHandle));
> );
> return EFI_SUCCESS;
> }
> @@ -1978,7 +2007,7 @@ NotifyFormsetDeleted (
> InsertTailList (PendingList, &TargetPendingList->Link);
>
> DEBUG_CODE (
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%a: HII handle: 0x%x is
> deleted\n", __func__, HiiHandle));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: HII handle: 0x%x is
> + deleted\n", __func__, HiiHandle));
> );
>
> return EFI_SUCCESS;
> @@ -2027,12 +2056,12 @@ ProcessPendingList (
> //
> FormsetPrivate = GetFormsetPrivateByHiiHandle (Target->HiiHandle,
> FormsetList);
> if (FormsetPrivate != NULL) {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%a: formset: %g is
> removed because driver release HII resource it already\n", __func__,
> FormsetPrivate->Guid));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: formset: %g is
> + removed because driver release HII resource it already\n", __func__,
> + FormsetPrivate->Guid));
> RemoveEntryList (&FormsetPrivate->Link);
> ReleaseFormset (FormsetPrivate);
> FreePool (FormsetPrivate);
> } else {
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%a: formset on HII handle
> 0x%x was removed already\n", __func__, Target->HiiHandle));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: formset on HII
> + handle 0x%x was removed already\n", __func__, Target->HiiHandle));
> }
> } else {
> //
> @@ -2043,7 +2072,7 @@ ProcessPendingList (
> //
> // HII formset already exist, release it and query again.
> //
> - DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%a: formset: %g is
> updated. Release current formset\n", __func__, &FormsetPrivate->Guid));
> + DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: formset: %g is
> + updated. Release current formset\n", __func__,
> + &FormsetPrivate->Guid));
> RemoveEntryList (&FormsetPrivate->Link);
> ReleaseFormset (FormsetPrivate);
> FreePool (FormsetPrivate);
> --
> 2.37.1.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#117153): https://edk2.groups.io/g/devel/message/117153
Mute This Topic: https://groups.io/mt/105159787/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-