RedfishPkg/RedfishPlatformConfigDxe:Add RefishDebugLib support

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.chang@amd.com>
Co-authored-by: Nickle Wang <nicklew@nvidia.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Reviewed-by: Nickle Wang <nicklew@nvidia.com>
Reviewed-by: Igor Kulchytskyy <igork@ami.com>
This commit is contained in:
Abner Chang 2024-03-18 11:18:32 +08:00 committed by mergify[bot]
parent b0be42516e
commit c8f56800fd
7 changed files with 262 additions and 59 deletions

View File

@ -193,3 +193,18 @@
# 0x0000000000000001 RedfishPlatformConfigDxe driver debug enabled. # 0x0000000000000001 RedfishPlatformConfigDxe driver debug enabled.
# #
gEfiRedfishPkgTokenSpaceGuid.PcdRedfishDebugCategory|0|UINT64|0x00001012 gEfiRedfishPkgTokenSpaceGuid.PcdRedfishDebugCategory|0|UINT64|0x00001012
#
# 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|UINT32|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

View File

@ -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;
}

View File

@ -315,7 +315,7 @@ DumpHiiStatementPrompt (
**/ **/
CHAR8 * CHAR8 *
BuildMenPath ( BuildMenuPath (
IN REDFISH_PLATFORM_CONFIG_STATEMENT_PRIVATE *StatementPrivate IN REDFISH_PLATFORM_CONFIG_STATEMENT_PRIVATE *StatementPrivate
) )
{ {
@ -345,7 +345,7 @@ BuildMenPath (
} }
do { do {
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "F(%d) <-", FormPrivate->Id)); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "F(%d) <-", FormPrivate->Id));
FormPrivate = FindFormLinkToThis (FormPrivate); FormPrivate = FindFormLinkToThis (FormPrivate);
if (FormPrivate == NULL) { if (FormPrivate == NULL) {
break; break;
@ -387,7 +387,7 @@ BuildMenPath (
AsciiStrCatS (Buffer, OldBufferSize, "/"); AsciiStrCatS (Buffer, OldBufferSize, "/");
AsciiStrCatS (Buffer, OldBufferSize, FormTitle); AsciiStrCatS (Buffer, OldBufferSize, FormTitle);
FreePool (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); FormPrivate = (REDFISH_PLATFORM_CONFIG_FORM_PRIVATE *)PopRedfishStack (FormStack);
@ -1061,12 +1061,12 @@ DumpOrderedListValue (
return; return;
} }
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "Value.Type= 0x%x\n", OrderedListStatement->Value.Type)); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "Value.Type= 0x%x\n", OrderedListStatement->Value.Type));
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "Value.BufferValueType= 0x%x\n", OrderedListStatement->Value.BufferValueType)); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "Value.BufferValueType= 0x%x\n", OrderedListStatement->Value.BufferValueType));
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "Value.BufferLen= 0x%x\n", OrderedListStatement->Value.BufferLen)); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "Value.BufferLen= 0x%x\n", OrderedListStatement->Value.BufferLen));
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "Value.Buffer= 0x%x\n", OrderedListStatement->Value.Buffer)); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "Value.Buffer= 0x%x\n", OrderedListStatement->Value.Buffer));
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "Value.MaxContainers= 0x%x\n", OrderedListStatement->ExtraData.OrderListData.MaxContainers)); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "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, "StorageWidth= 0x%x\n", OrderedListStatement->StorageWidth));
if (OrderedListStatement->Value.Buffer == NULL) { if (OrderedListStatement->Value.Buffer == NULL) {
return; return;
@ -1083,7 +1083,7 @@ DumpOrderedListValue (
Value8 = (UINT8 *)OrderedListStatement->Value.Buffer; Value8 = (UINT8 *)OrderedListStatement->Value.Buffer;
Count = OrderedListStatement->StorageWidth / sizeof (UINT8); Count = OrderedListStatement->StorageWidth / sizeof (UINT8);
for (Index = 0; Index < Count; Index++) { for (Index = 0; Index < Count; Index++) {
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%d ", Value8[Index])); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%d ", Value8[Index]));
} }
break; break;
@ -1091,7 +1091,7 @@ DumpOrderedListValue (
Value16 = (UINT16 *)OrderedListStatement->Value.Buffer; Value16 = (UINT16 *)OrderedListStatement->Value.Buffer;
Count = OrderedListStatement->StorageWidth / sizeof (UINT16); Count = OrderedListStatement->StorageWidth / sizeof (UINT16);
for (Index = 0; Index < Count; Index++) { for (Index = 0; Index < Count; Index++) {
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%d ", Value16[Index])); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%d ", Value16[Index]));
} }
break; break;
@ -1099,7 +1099,7 @@ DumpOrderedListValue (
Value32 = (UINT32 *)OrderedListStatement->Value.Buffer; Value32 = (UINT32 *)OrderedListStatement->Value.Buffer;
Count = OrderedListStatement->StorageWidth / sizeof (UINT32); Count = OrderedListStatement->StorageWidth / sizeof (UINT32);
for (Index = 0; Index < Count; Index++) { for (Index = 0; Index < Count; Index++) {
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%d ", Value32[Index])); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%d ", Value32[Index]));
} }
break; break;
@ -1107,7 +1107,7 @@ DumpOrderedListValue (
Value64 = (UINT64 *)OrderedListStatement->Value.Buffer; Value64 = (UINT64 *)OrderedListStatement->Value.Buffer;
Count = OrderedListStatement->StorageWidth / sizeof (UINT64); Count = OrderedListStatement->StorageWidth / sizeof (UINT64);
for (Index = 0; Index < Count; Index++) { for (Index = 0; Index < Count; Index++) {
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%d ", Value64[Index])); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%d ", Value64[Index]));
} }
break; break;
@ -1115,13 +1115,13 @@ DumpOrderedListValue (
Value8 = (UINT8 *)OrderedListStatement->Value.Buffer; Value8 = (UINT8 *)OrderedListStatement->Value.Buffer;
Count = OrderedListStatement->StorageWidth / sizeof (UINT8); Count = OrderedListStatement->StorageWidth / sizeof (UINT8);
for (Index = 0; Index < Count; Index++) { for (Index = 0; Index < Count; Index++) {
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%d ", Value8[Index])); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%d ", Value8[Index]));
} }
break; break;
} }
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "\n")); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "\n"));
} }
/** /**
@ -2013,6 +2013,8 @@ RedfishPlatformConfigProtocolGetConfigureLang (
UINTN Index; UINTN Index;
CHAR8 *FullSchema; 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)) { if ((This == NULL) || IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) || (Count == NULL) || (ConfigureLangList == NULL) || IS_EMPTY_STRING (RegexPattern)) {
return EFI_INVALID_PARAMETER; return EFI_INVALID_PARAMETER;
} }
@ -2072,6 +2074,22 @@ RedfishPlatformConfigProtocolGetConfigureLang (
*Count = StatementList.Count; *Count = StatementList.Count;
*ConfigureLangList = TmpConfigureLangList; *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: RELEASE_RESOURCE:
if (FullSchema != NULL) { if (FullSchema != NULL) {
@ -2082,6 +2100,7 @@ RELEASE_RESOURCE:
ReleaseStatementList (&StatementList); ReleaseStatementList (&StatementList);
} }
DEBUG ((DEBUG_INFO, "%a: exit.\n", __func__));
return Status; return Status;
} }
@ -2296,6 +2315,7 @@ RedfishPlatformConfigProtocolGetAttribute (
CHAR8 *FullSchema; CHAR8 *FullSchema;
CHAR8 *Buffer; 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)) { if ((This == NULL) || IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (Version) || IS_EMPTY_STRING (ConfigureLang) || (AttributeValue == NULL)) {
return EFI_INVALID_PARAMETER; return EFI_INVALID_PARAMETER;
} }
@ -2337,10 +2357,12 @@ RedfishPlatformConfigProtocolGetAttribute (
// //
// Build up menu path // Build up menu path
// //
AttributeValue->MenuPath = BuildMenPath (TargetStatement); if (RedfishPlatformConfigFeatureProp (REDFISH_PLATFORM_CONFIG_BUILD_MENU_PATH)) {
AttributeValue->MenuPath = BuildMenuPath (TargetStatement);
if (AttributeValue->MenuPath == NULL) { if (AttributeValue->MenuPath == NULL) {
DEBUG ((DEBUG_ERROR, "%a: failed to build menu path for \"%a\"\n", __func__, AttributeValue->AttributeName)); DEBUG ((DEBUG_ERROR, "%a: failed to build menu path for \"%a\"\n", __func__, AttributeValue->AttributeName));
} }
}
// //
// Deal with maximum and minimum // Deal with maximum and minimum
@ -2370,6 +2392,7 @@ RELEASE_RESOURCE:
FreePool (FullSchema); FreePool (FullSchema);
} }
DEBUG ((DEBUG_INFO, "%a: Exit\n", __func__));
return Status; return Status;
} }

View File

@ -3,6 +3,7 @@
(C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR> (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. 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 SPDX-License-Identifier: BSD-2-Clause-Patent
@ -20,7 +21,9 @@
#include <Library/BaseMemoryLib.h> #include <Library/BaseMemoryLib.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
#include <Library/MemoryAllocationLib.h> #include <Library/MemoryAllocationLib.h>
#include <Library/PcdLib.h>
#include <Library/PrintLib.h> #include <Library/PrintLib.h>
#include <Library/RedfishDebugLib.h>
#include <Library/UefiLib.h> #include <Library/UefiLib.h>
#include <Library/UefiBootServicesTableLib.h> #include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiDriverEntryPoint.h> #include <Library/UefiDriverEntryPoint.h>
@ -37,6 +40,41 @@
// //
#include <Protocol/EdkIIRedfishPlatformConfig.h> #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. /// Definition of EDKII_REDFISH_PLATFORM_CONFIG_NOTIFY.
/// ///
@ -75,9 +113,13 @@ typedef struct {
#define REGULAR_EXPRESSION_INCLUDE_ALL L".*" #define REGULAR_EXPRESSION_INCLUDE_ALL L".*"
#define CONFIGURE_LANGUAGE_PREFIX "x-uefi-redfish-" #define CONFIGURE_LANGUAGE_PREFIX "x-uefi-redfish-"
#define REDFISH_PLATFORM_CONFIG_VERSION 0x00010000 #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 Convert input unicode string to ascii string. It's caller's
responsibility to free returned buffer using FreePool(). responsibility to free returned buffer using FreePool().

View File

@ -3,6 +3,7 @@
# #
# (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR> # (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # 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 # SPDX-License-Identifier: BSD-2-Clause-Patent
# #
@ -23,6 +24,7 @@
RedfishPkg/RedfishPkg.dec RedfishPkg/RedfishPkg.dec
[Sources] [Sources]
RedfishPlatformConfigCapability.c
RedfishPlatformConfigDxe.h RedfishPlatformConfigDxe.h
RedfishPlatformConfigDxe.c RedfishPlatformConfigDxe.c
RedfishPlatformConfigImpl.h RedfishPlatformConfigImpl.h
@ -36,7 +38,9 @@
HiiLib HiiLib
HiiUtilityLib HiiUtilityLib
MemoryAllocationLib MemoryAllocationLib
PcdLib
PrintLib PrintLib
RedfishDebugLib
UefiLib UefiLib
UefiBootServicesTableLib UefiBootServicesTableLib
UefiRuntimeServicesTableLib UefiRuntimeServicesTableLib
@ -51,5 +55,9 @@
[Guids] [Guids]
gEfiRegexSyntaxTypePerlGuid ## CONSUMED gEfiRegexSyntaxTypePerlGuid ## CONSUMED
[FixedPcd]
gEfiRedfishPkgTokenSpaceGuid.PcdRedfishPlatformConfigFeatureProperty
gEfiRedfishPkgTokenSpaceGuid.PcdRedfishPlatformConfigDebugProperty
[Depex] [Depex]
TRUE TRUE

View File

@ -32,7 +32,7 @@ DumpHiiString (
EFI_STRING String; EFI_STRING String;
if ((HiiHandle == NULL) || (StringId == 0)) { if ((HiiHandle == NULL) || (StringId == 0)) {
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "???")); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "???"));
return EFI_INVALID_PARAMETER; return EFI_INVALID_PARAMETER;
} }
@ -41,7 +41,7 @@ DumpHiiString (
return EFI_NOT_FOUND; return EFI_NOT_FOUND;
} }
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "%s", String)); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%s", String));
FreePool (String); FreePool (String);
return EFI_SUCCESS; return EFI_SUCCESS;
@ -79,18 +79,18 @@ DumpFormset (
HiiFormPrivate = REDFISH_PLATFORM_CONFIG_FORM_FROM_LINK (HiiFormLink); HiiFormPrivate = REDFISH_PLATFORM_CONFIG_FORM_FROM_LINK (HiiFormLink);
HiiNextFormLink = GetNextNode (&FormsetPrivate->HiiFormList, 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); DumpHiiString (FormsetPrivate->HiiHandle, HiiFormPrivate->Title);
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "\n")); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "\n"));
HiiStatementLink = GetFirstNode (&HiiFormPrivate->StatementList); HiiStatementLink = GetFirstNode (&HiiFormPrivate->StatementList);
while (!IsNull (&HiiFormPrivate->StatementList, HiiStatementLink)) { while (!IsNull (&HiiFormPrivate->StatementList, HiiStatementLink)) {
HiiStatementPrivate = REDFISH_PLATFORM_CONFIG_STATEMENT_FROM_LINK (HiiStatementLink); HiiStatementPrivate = REDFISH_PLATFORM_CONFIG_STATEMENT_FROM_LINK (HiiStatementLink);
HiiNextStatementLink = GetNextNode (&HiiFormPrivate->StatementList, 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); DumpHiiString (FormsetPrivate->HiiHandle, HiiStatementPrivate->Description);
DEBUG ((REDFISH_PLATFORM_CONFIG_DEBUG, "\n")); DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "\n"));
HiiStatementLink = HiiNextStatementLink; HiiStatementLink = HiiNextStatementLink;
} }
@ -125,7 +125,7 @@ DumpFormsetList (
} }
if (IsListEmpty (FormsetList)) { 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; return EFI_SUCCESS;
} }
@ -135,7 +135,7 @@ DumpFormsetList (
HiiFormsetNextLink = GetNextNode (FormsetList, HiiFormsetLink); HiiFormsetNextLink = GetNextNode (FormsetList, HiiFormsetLink);
HiiFormsetPrivate = REDFISH_PLATFORM_CONFIG_FORMSET_FROM_LINK (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); DumpFormset (HiiFormsetPrivate);
HiiFormsetLink = HiiFormsetNextLink; HiiFormsetLink = HiiFormsetNextLink;
@ -622,7 +622,9 @@ GetStatementPrivateByConfigureLangRegex (
HiiNextStatementLink = GetNextNode (&HiiFormPrivate->StatementList, HiiStatementLink); HiiNextStatementLink = GetNextNode (&HiiFormPrivate->StatementList, HiiStatementLink);
HiiStatementPrivate = REDFISH_PLATFORM_CONFIG_STATEMENT_FROM_LINK (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->XuefiRedfishStr; TmpString = HiiStatementPrivate->XuefiRedfishStr;
if (TmpString != NULL) { if (TmpString != NULL) {
Status = RegularExpressionProtocol->MatchString ( Status = RegularExpressionProtocol->MatchString (
@ -698,6 +700,7 @@ GetStatementPrivateByConfigureLang (
LIST_ENTRY *HiiNextStatementLink; LIST_ENTRY *HiiNextStatementLink;
REDFISH_PLATFORM_CONFIG_STATEMENT_PRIVATE *HiiStatementPrivate; REDFISH_PLATFORM_CONFIG_STATEMENT_PRIVATE *HiiStatementPrivate;
EFI_STRING TmpString; EFI_STRING TmpString;
UINTN Index;
if ((FormsetList == NULL) || IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (ConfigureLang)) { if ((FormsetList == NULL) || IS_EMPTY_STRING (Schema) || IS_EMPTY_STRING (ConfigureLang)) {
return NULL; return NULL;
@ -707,6 +710,7 @@ GetStatementPrivateByConfigureLang (
return NULL; return NULL;
} }
Index = 0;
HiiFormsetLink = GetFirstNode (FormsetList); HiiFormsetLink = GetFirstNode (FormsetList);
while (!IsNull (FormsetList, HiiFormsetLink)) { while (!IsNull (FormsetList, HiiFormsetLink)) {
HiiFormsetNextLink = GetNextNode (FormsetList, HiiFormsetLink); HiiFormsetNextLink = GetNextNode (FormsetList, HiiFormsetLink);
@ -731,15 +735,22 @@ GetStatementPrivateByConfigureLang (
HiiNextStatementLink = GetNextNode (&HiiFormPrivate->StatementList, HiiStatementLink); HiiNextStatementLink = GetNextNode (&HiiFormPrivate->StatementList, HiiStatementLink);
HiiStatementPrivate = REDFISH_PLATFORM_CONFIG_STATEMENT_FROM_LINK (HiiStatementLink); HiiStatementPrivate = REDFISH_PLATFORM_CONFIG_STATEMENT_FROM_LINK (HiiStatementLink);
DEBUG_CODE ( if ((HiiStatementPrivate->Description != 0) &&
STATIC UINTN Index = 0; (RedfishPlatformConfigFeatureProp (REDFISH_PLATFORM_CONFIG_ALLOW_SUPPRESSED) || !HiiStatementPrivate->Suppressed))
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) {
TmpString = HiiStatementPrivate->XuefiRedfishStr; TmpString = HiiStatementPrivate->XuefiRedfishStr;
if (TmpString != NULL) { 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) { if (HiiStrCmp (TmpString, ConfigureLang) == 0) {
return HiiStatementPrivate; return HiiStatementPrivate;
} }
@ -1020,7 +1031,7 @@ NewRedfishXuefiStringArray (
**/ **/
REDFISH_X_UEFI_STRING_DATABASE * REDFISH_X_UEFI_STRING_DATABASE *
GetExitOrCreateXuefiStringDatabase ( GetExistOrCreateXuefiStringDatabase (
IN REDFISH_PLATFORM_CONFIG_FORM_SET_PRIVATE *FormsetPrivate, IN REDFISH_PLATFORM_CONFIG_FORM_SET_PRIVATE *FormsetPrivate,
IN EFI_HII_STRING_PACKAGE_HDR *HiiStringPackageHeader IN EFI_HII_STRING_PACKAGE_HDR *HiiStringPackageHeader
) )
@ -1029,8 +1040,6 @@ GetExitOrCreateXuefiStringDatabase (
BOOLEAN CreateNewOne; BOOLEAN CreateNewOne;
REDFISH_X_UEFI_STRING_DATABASE *XuefiRedfishStringDatabase; REDFISH_X_UEFI_STRING_DATABASE *XuefiRedfishStringDatabase;
DEBUG ((DEBUG_INFO, "%a: Entry\n", __func__));
CreateNewOne = TRUE; CreateNewOne = TRUE;
XuefiRedfishStringDatabase = NULL; XuefiRedfishStringDatabase = NULL;
if (!IsListEmpty (&FormsetPrivate->XuefiRedfishStringDatabase)) { if (!IsListEmpty (&FormsetPrivate->XuefiRedfishStringDatabase)) {
@ -1052,7 +1061,7 @@ GetExitOrCreateXuefiStringDatabase (
} }
if (CreateNewOne) { 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)); XuefiRedfishStringDatabase = (REDFISH_X_UEFI_STRING_DATABASE *)AllocateZeroPool (sizeof (REDFISH_X_UEFI_STRING_DATABASE));
if (XuefiRedfishStringDatabase == NULL) { if (XuefiRedfishStringDatabase == NULL) {
DEBUG ((DEBUG_ERROR, " Failed to allocate REDFISH_X_UEFI_STRING_DATABASE.\n")); DEBUG ((DEBUG_ERROR, " Failed to allocate REDFISH_X_UEFI_STRING_DATABASE.\n"));
@ -1071,7 +1080,7 @@ GetExitOrCreateXuefiStringDatabase (
} }
DEBUG (( 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", " x-uefi-redfish (%a):\n String array is added to XuefiRedfishStringDatabase, total %d arrays now.\n",
XuefiRedfishStringDatabase->XuefiRedfishLanguage, XuefiRedfishStringDatabase->XuefiRedfishLanguage,
XuefiRedfishStringDatabase->StringsArrayBlocks XuefiRedfishStringDatabase->StringsArrayBlocks
@ -1143,7 +1152,7 @@ RedfishXuefiStringInsertDatabase (
REDFISH_X_UEFI_STRING_DATABASE *XuefiRedfishStringDatabase; REDFISH_X_UEFI_STRING_DATABASE *XuefiRedfishStringDatabase;
REDFISH_X_UEFI_STRINGS_ARRAY *ThisArray; REDFISH_X_UEFI_STRINGS_ARRAY *ThisArray;
XuefiRedfishStringDatabase = GetExitOrCreateXuefiStringDatabase (FormsetPrivate, HiiStringPackageHeader); XuefiRedfishStringDatabase = GetExistOrCreateXuefiStringDatabase (FormsetPrivate, HiiStringPackageHeader);
if (XuefiRedfishStringDatabase == NULL) { 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)); DEBUG ((DEBUG_ERROR, "%a: Failed to get REDFISH_X_UEFI_STRING_DATABASE of x-uefi-redfish language %a.\n", __func__, HiiStringPackageHeader->Language));
ReleaseXuefiStringDatabase (FormsetPrivate); ReleaseXuefiStringDatabase (FormsetPrivate);
@ -1169,13 +1178,13 @@ RedfishXuefiStringInsertDatabase (
(ThisArray->ArrayEntryAddress + StringIdOffset)->StringId = StringId; (ThisArray->ArrayEntryAddress + StringIdOffset)->StringId = StringId;
(ThisArray->ArrayEntryAddress + StringIdOffset)->UcsString = StringTextPtr; (ThisArray->ArrayEntryAddress + StringIdOffset)->UcsString = StringTextPtr;
DEBUG (( DEBUG_REDFISH_THIS_MODULE (
REDFISH_PLATFORM_CONFIG_DEBUG, REDFISH_PLATFORM_CONFIG_DEBUG_STRING_DATABASE,
" Insert string ID: (%d) to database\n x-uefi-string: \"%s\"\n Language: %a.\n", " Insert string ID: (%d) to database\n x-uefi-string: \"%s\"\n Language: %a.\n",
StringId, StringId,
StringTextPtr, StringTextPtr,
HiiStringPackageHeader->Language HiiStringPackageHeader->Language
)); );
return EFI_SUCCESS; return EFI_SUCCESS;
} }
@ -1184,6 +1193,7 @@ RedfishXuefiStringInsertDatabase (
@param[in] FormsetPrivate Pointer to HII form-set private instance. @param[in] FormsetPrivate Pointer to HII form-set private instance.
@param[in] HiiStringPackageHeader HII string package header. @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. @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. FALSE Something is wrong when insert x-uefi-redfish string and ID map.
@ -1192,7 +1202,8 @@ RedfishXuefiStringInsertDatabase (
BOOLEAN BOOLEAN
CreateXuefiLanguageStringIdMap ( CreateXuefiLanguageStringIdMap (
IN REDFISH_PLATFORM_CONFIG_FORM_SET_PRIVATE *FormsetPrivate, IN REDFISH_PLATFORM_CONFIG_FORM_SET_PRIVATE *FormsetPrivate,
IN EFI_HII_STRING_PACKAGE_HDR *HiiStringPackageHeader IN EFI_HII_STRING_PACKAGE_HDR *HiiStringPackageHeader,
OUT UINTN *TotalStringAdded
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
@ -1208,6 +1219,9 @@ CreateXuefiLanguageStringIdMap (
EFI_HII_SIBT_EXT2_BLOCK Ext2; EFI_HII_SIBT_EXT2_BLOCK Ext2;
UINT32 Length32; UINT32 Length32;
UINT8 *StringBlockInfo; UINT8 *StringBlockInfo;
UINTN StringsAdded;
StringsAdded = 0;
// //
// Parse the string blocks to get the string text and font. // Parse the string blocks to get the string text and font.
@ -1279,6 +1293,8 @@ CreateXuefiLanguageStringIdMap (
DEBUG ((DEBUG_ERROR, "%a: Failed to insert x-uefi-redfish string %s.\n", __func__, StringTextPtr)); DEBUG ((DEBUG_ERROR, "%a: Failed to insert x-uefi-redfish string %s.\n", __func__, StringTextPtr));
return FALSE; return FALSE;
} }
StringsAdded++;
} }
BlockSize += (Offset + HiiStrSize ((CHAR16 *)StringTextPtr)); BlockSize += (Offset + HiiStrSize ((CHAR16 *)StringTextPtr));
@ -1370,6 +1386,7 @@ CreateXuefiLanguageStringIdMap (
BlockHdr = (UINT8 *)(StringBlockInfo + BlockSize); BlockHdr = (UINT8 *)(StringBlockInfo + BlockSize);
} }
*TotalStringAdded = StringsAdded;
return TRUE; return TRUE;
} }
@ -1483,6 +1500,8 @@ BuildXUefiRedfishStringDatabase (
UINTN SupportedSchemaLangCount; UINTN SupportedSchemaLangCount;
CHAR8 **SupportedSchemaLang; CHAR8 **SupportedSchemaLang;
BOOLEAN StringIdMapIsBuilt; BOOLEAN StringIdMapIsBuilt;
UINTN TotalStringsAdded;
UINTN NumberPackageStrings;
DEBUG ((DEBUG_INFO, "%a: Building x-uefi-redfish string database, HII Formset GUID - %g.\n", __func__, FormsetPrivate->Guid)); DEBUG ((DEBUG_INFO, "%a: Building x-uefi-redfish string database, HII Formset GUID - %g.\n", __func__, FormsetPrivate->Guid));
@ -1514,6 +1533,7 @@ BuildXUefiRedfishStringDatabase (
return; return;
} }
TotalStringsAdded = 0;
// //
// Finding the string package. // Finding the string package.
// //
@ -1538,14 +1558,18 @@ BuildXUefiRedfishStringDatabase (
AsciiStrLen (HiiStringPackageHeader->Language) AsciiStrLen (HiiStringPackageHeader->Language)
) == 0) ) == 0)
{ {
StringIdMapIsBuilt = CreateXuefiLanguageStringIdMap (FormsetPrivate, HiiStringPackageHeader); StringIdMapIsBuilt = CreateXuefiLanguageStringIdMap (FormsetPrivate, HiiStringPackageHeader, &NumberPackageStrings);
if (StringIdMapIsBuilt) {
TotalStringsAdded += NumberPackageStrings;
}
break; break;
} }
} }
if (StringIdMapIsBuilt == FALSE) { if (StringIdMapIsBuilt == FALSE) {
if (AsciiStrStr (HiiStringPackageHeader->Language, X_UEFI_SCHEMA_PREFIX) == NULL) { 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 { } else {
DEBUG ((DEBUG_ERROR, " Failed to build x-uefi-redfish string ID map of HII language %a\n", HiiStringPackageHeader->Language)); DEBUG ((DEBUG_ERROR, " Failed to build x-uefi-redfish string ID map of HII language %a\n", HiiStringPackageHeader->Language));
} }
@ -1555,6 +1579,8 @@ BuildXUefiRedfishStringDatabase (
PackageHeader = (EFI_HII_PACKAGE_HEADER *)((UINTN)PackageHeader + PackageHeader->Length); 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));
} }
/** /**
@ -1620,7 +1646,7 @@ LoadFormset (
FormsetPrivate->DevicePathStr = ConvertDevicePathToText (HiiFormSet->DevicePath, FALSE, FALSE); FormsetPrivate->DevicePathStr = ConvertDevicePathToText (HiiFormSet->DevicePath, FALSE, FALSE);
Status = GetSupportedSchema (FormsetPrivate->HiiHandle, &FormsetPrivate->SupportedSchema); Status = GetSupportedSchema (FormsetPrivate->HiiHandle, &FormsetPrivate->SupportedSchema);
if (EFI_ERROR (Status)) { 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. return EFI_UNSUPPORTED; // Can't build AttributeRegistry Meni path with returning EFI_UNSUPPORTED.
} else { } else {
// Building x-uefi-redfish string database // Building x-uefi-redfish string database
@ -1788,7 +1814,10 @@ LoadFormsetList (
InsertTailList (FormsetList, &FormsetPrivate->Link); InsertTailList (FormsetList, &FormsetPrivate->Link);
DEBUG_CODE ( DEBUG_CODE (
if (RedfishPlatformConfigDebugProp (REDFISH_PLATFORM_CONFIG_DEBUG_DUMP_FORMSET)) {
DumpFormsetList (FormsetList); DumpFormsetList (FormsetList);
}
); );
return EFI_SUCCESS; return EFI_SUCCESS;
@ -1908,7 +1937,7 @@ NotifyFormsetUpdate (
if (TargetPendingList != NULL) { if (TargetPendingList != NULL) {
TargetPendingList->IsDeleted = FALSE; TargetPendingList->IsDeleted = FALSE;
DEBUG_CODE ( 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; return EFI_SUCCESS;
} }
@ -1924,7 +1953,7 @@ NotifyFormsetUpdate (
InsertTailList (PendingList, &TargetPendingList->Link); InsertTailList (PendingList, &TargetPendingList->Link);
DEBUG_CODE ( 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; return EFI_SUCCESS;
@ -1961,7 +1990,7 @@ NotifyFormsetDeleted (
if (TargetPendingList != NULL) { if (TargetPendingList != NULL) {
TargetPendingList->IsDeleted = TRUE; TargetPendingList->IsDeleted = TRUE;
DEBUG_CODE ( 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; return EFI_SUCCESS;
} }
@ -1977,7 +2006,7 @@ NotifyFormsetDeleted (
InsertTailList (PendingList, &TargetPendingList->Link); InsertTailList (PendingList, &TargetPendingList->Link);
DEBUG_CODE ( 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; return EFI_SUCCESS;
@ -2026,12 +2055,12 @@ ProcessPendingList (
// //
FormsetPrivate = GetFormsetPrivateByHiiHandle (Target->HiiHandle, FormsetList); FormsetPrivate = GetFormsetPrivateByHiiHandle (Target->HiiHandle, FormsetList);
if (FormsetPrivate != NULL) { 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); RemoveEntryList (&FormsetPrivate->Link);
ReleaseFormset (FormsetPrivate); ReleaseFormset (FormsetPrivate);
FreePool (FormsetPrivate); FreePool (FormsetPrivate);
} else { } 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 { } else {
// //
@ -2042,7 +2071,7 @@ ProcessPendingList (
// //
// HII formset already exist, release it and query again. // 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); RemoveEntryList (&FormsetPrivate->Link);
ReleaseFormset (FormsetPrivate); ReleaseFormset (FormsetPrivate);
FreePool (FormsetPrivate); FreePool (FormsetPrivate);

View File

@ -418,4 +418,32 @@ HiiStrSize (
IN CONST CHAR16 *String 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 #endif