From: "Chang, Abner via groups.io" <abner.chang=amd.com@groups.io>
To: <devel@edk2.groups.io>
Cc: Abner Chang <abner.chang@amd.com>,
Igor Kulchytskyy <igork@ami.com>,
Nickle Wang <nicklew@nvidia.com>
Subject: [edk2-devel] [PATCH V3 6/6] RedfishPkg/RedfishPlatformConfigDxe: support menu path report
Date: Thu, 4 Apr 2024 18:17:58 +0800 [thread overview]
Message-ID: <20240404101758.84-7-abner.chang@amd.com> (raw)
In-Reply-To: <20240404101758.84-1-abner.chang@amd.com>
From: Nickle Wang <nicklew@nvidia.com>
"MenuPath" is the attribute in BIOS attribute registry. To support
reporting this attribute, we need to include the formset without
x-uefi-redfish support in database. So driver can find menu path to
target attribute in BIOS menu.
Signed-off-by: Nickle Wang <nicklew@nvidia.com>
Cc: Abner Chang <abner.chang@amd.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Reviewed-by: Nickle Wang <nicklew@nvidia.com>
Signed-off-by: Abner Chang <abner.chang@amd.com>
---
.../RedfishPlatformConfigDxe.h | 8 +--
.../RedfishPlatformConfigDxe.c | 8 +--
.../RedfishPlatformConfigImpl.c | 51 +++++++++++++++----
3 files changed, 49 insertions(+), 18 deletions(-)
diff --git a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.h b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.h
index 688f2067bff..8eb7b0dc2aa 100644
--- a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.h
+++ b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.h
@@ -2,7 +2,7 @@
This file defines the EDKII Redfish Platform Config Protocol interface.
(C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
- Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+ Copyright (c) 2022-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
@@ -49,8 +49,8 @@
// 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
+// 3. The subordinate debug enablement for RedfishPlatformConfigDxe
+// must be set in PcdRedfishPlatformConfigDebugProperty (defined
// in RedfishPkg.dec).
//
#define DEBUG_REDFISH_THIS_MODULE(DebugSubordinate, ...) \
@@ -116,7 +116,7 @@ typedef struct {
#define REDFISH_MENU_PATH_SIZE 8
-// Definitions of Redfish platform config capbility
+// Definitions of Redfish platform config capability
#define REDFISH_PLATFORM_CONFIG_BUILD_MENU_PATH 0x000000001
#define REDFISH_PLATFORM_CONFIG_ALLOW_SUPPRESSED 0x000000002
diff --git a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c
index 86f5d3c4478..8bcee5a16ae 100644
--- a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c
+++ b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c
@@ -2016,7 +2016,7 @@ RedfishPlatformConfigProtocolGetConfigureLang (
UINTN Index;
CHAR8 *FullSchema;
- DEBUG ((DEBUG_INFO, "%a: Harvest config language of %a_%a (Regex: %s).\n", __func__, Schema, Version, RegexPattern));
+ DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%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;
@@ -2103,7 +2103,7 @@ RELEASE_RESOURCE:
ReleaseStatementList (&StatementList);
}
- DEBUG ((DEBUG_INFO, "%a: exit.\n", __func__));
+ DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: exit.\n", __func__));
return Status;
}
@@ -2318,7 +2318,7 @@ RedfishPlatformConfigProtocolGetAttribute (
CHAR8 *FullSchema;
CHAR8 *Buffer;
- DEBUG ((DEBUG_INFO, "%a: Entry\n", __func__));
+ DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%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;
}
@@ -2395,7 +2395,7 @@ RELEASE_RESOURCE:
FreePool (FullSchema);
}
- DEBUG ((DEBUG_INFO, "%a: Exit\n", __func__));
+ DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: Exit\n", __func__));
return Status;
}
diff --git a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigImpl.c b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigImpl.c
index 03dcc8dbcd1..5fcaf426107 100644
--- a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigImpl.c
+++ b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigImpl.c
@@ -2,7 +2,7 @@
The implementation of EDKII Redfish Platform Config Protocol.
(C) Copyright 2021-2022 Hewlett Packard Enterprise Development LP<BR>
- Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+ Copyright (c) 2022-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
@@ -656,8 +656,10 @@ GetStatementPrivateByConfigureLangRegex (
++StatementList->Count;
}
} else {
- DEBUG ((DEBUG_ERROR, "%a: HiiStatementPrivate->XuefiRedfishStr is NULL, x-uefi-string has something wrong.\n", __func__));
- ASSERT (FALSE);
+ if (!RedfishPlatformConfigFeatureProp (REDFISH_PLATFORM_CONFIG_BUILD_MENU_PATH)) {
+ DEBUG ((DEBUG_ERROR, "%a: HiiStatementPrivate->XuefiRedfishStr is NULL, x-uefi-string has something wrong.\n", __func__));
+ ASSERT (FALSE);
+ }
}
}
@@ -754,6 +756,11 @@ GetStatementPrivateByConfigureLang (
if (HiiStrCmp (TmpString, ConfigureLang) == 0) {
return HiiStatementPrivate;
}
+ } else {
+ if (!RedfishPlatformConfigFeatureProp (REDFISH_PLATFORM_CONFIG_BUILD_MENU_PATH)) {
+ DEBUG ((DEBUG_ERROR, "%a: HiiStatementPrivate->XuefiRedfishStr is NULL, x-uefi-string has something wrong.\n", __func__));
+ ASSERT (FALSE);
+ }
}
}
@@ -1439,7 +1446,7 @@ GetXuefiStringAndLangByStringId (
StringIndex = StringId;
while (StringIndex >= X_UEFI_REDFISH_STRING_ARRAY_ENTRY_NUMBER) {
if (IsNodeAtEnd (&XuefiRedfishStringDatabase->XuefiRedfishStringArrays, &StringArray->NextArray)) {
- goto ErrorEixt;
+ goto ErrorExit;
}
StringArray = (REDFISH_X_UEFI_STRINGS_ARRAY *)GetNextNode (&XuefiRedfishStringDatabase->XuefiRedfishStringArrays, &StringArray->NextArray);
@@ -1476,8 +1483,8 @@ GetXuefiStringAndLangByStringId (
);
}
-ErrorEixt:;
- DEBUG ((DEBUG_ERROR, "%a: String ID (%d) is not in any x-uef-redfish string databases.\n", __func__, StringId));
+ErrorExit:;
+ DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: String ID (%d) is not in any x-uef-redfish string databases.\n", __func__, StringId));
return EFI_NOT_FOUND;
}
@@ -1503,7 +1510,7 @@ BuildXUefiRedfishStringDatabase (
UINTN TotalStringsAdded;
UINTN NumberPackageStrings;
- DEBUG ((DEBUG_INFO, "%a: Building x-uefi-redfish string database, HII Formset GUID - %g.\n", __func__, FormsetPrivate->Guid));
+ DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: Building x-uefi-redfish string database, HII Formset GUID - %g.\n", __func__, FormsetPrivate->Guid));
BufferSize = 0;
Status = mRedfishPlatformConfigPrivate->HiiDatabase->ExportPackageLists (
@@ -1530,6 +1537,8 @@ BuildXUefiRedfishStringDatabase (
FormsetPrivate->HiiPackageListHeader
);
if (EFI_ERROR (Status)) {
+ FreePool (FormsetPrivate->HiiPackageListHeader);
+ FormsetPrivate->HiiPackageListHeader = NULL;
return;
}
@@ -1646,8 +1655,14 @@ LoadFormset (
FormsetPrivate->DevicePathStr = ConvertDevicePathToText (HiiFormSet->DevicePath, FALSE, FALSE);
Status = GetSupportedSchema (FormsetPrivate->HiiHandle, &FormsetPrivate->SupportedSchema);
if (EFI_ERROR (Status)) {
- 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.
+ if (!RedfishPlatformConfigFeatureProp (REDFISH_PLATFORM_CONFIG_BUILD_MENU_PATH)) {
+ DEBUG ((DEBUG_REDFISH_PLATFORM_CONFIG, "%a: No x-uefi-redfish configuration found on the formset - %g\n", __func__, FormsetPrivate->Guid));
+ //
+ // If there is no x-uefi-redfish language in this form-set, we don't add formset
+ // since we don't need to build menu path for attribute registry.
+ //
+ return EFI_UNSUPPORTED;
+ }
} else {
// Building x-uefi-redfish string database
BuildXUefiRedfishStringDatabase (FormsetPrivate);
@@ -1733,7 +1748,23 @@ LoadFormset (
//
InsertTailList (&HiiFormPrivate->StatementList, &HiiStatementPrivate->Link);
} else {
- FreePool (HiiStatementPrivate);
+ if (!RedfishPlatformConfigFeatureProp (REDFISH_PLATFORM_CONFIG_BUILD_MENU_PATH)) {
+ //
+ // If there is no x-uefi-redfish language for this statement, we don't add this statement
+ // since we don't need to build menu path for attribute registry.
+ //
+ FreePool (HiiStatementPrivate);
+ } else {
+ //
+ // This is not x-uefi-redfish string and we don't cache its string for searching Redfish configure language.
+ // When caller wants the string, we will read English string by calling HiiGetString().
+ //
+ HiiStatementPrivate->XuefiRedfishStr = NULL;
+ //
+ // Attach to statement list.
+ //
+ InsertTailList (&HiiFormPrivate->StatementList, &HiiStatementPrivate->Link);
+ }
}
HiiStatementLink = GetNextNode (&HiiForm->StatementListHead, HiiStatementLink);
--
2.37.1.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#117429): https://edk2.groups.io/g/devel/message/117429
Mute This Topic: https://groups.io/mt/105326109/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
next prev parent reply other threads:[~2024-04-04 10:18 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-04 10:17 [edk2-devel] [PATCH V3 0/6] Config language searching algorithm enhancement and the bug fixes Chang, Abner via groups.io
2024-04-04 10:17 ` [edk2-devel] [PATCH V3 1/6] RedfishPkg/RedfishPlatformConfigDxe: Config language searching optimization Chang, Abner via groups.io
2024-04-04 13:34 ` Igor Kulchytskyy via groups.io
2024-04-04 10:17 ` [edk2-devel] [PATCH V3 2/6] RedfishPkg/RedfishDebugLib: Introduce Redfish DEBUG macro Chang, Abner via groups.io
2024-04-04 13:33 ` Igor Kulchytskyy via groups.io
2024-04-04 10:17 ` [edk2-devel] [PATCH V3 3/6] RedfishPkg/RedfishPlatformConfigDxe:Add RefishDebugLib support Chang, Abner via groups.io
2024-04-04 13:33 ` Igor Kulchytskyy via groups.io
2024-04-04 10:17 ` [edk2-devel] [PATCH V3 4/6] RedfishPkg/RedfishPlatformConfigDxe: HII string is deleted unexpectedly Chang, Abner via groups.io
2024-04-04 13:34 ` Igor Kulchytskyy via groups.io
2024-04-04 10:17 ` [edk2-devel] [PATCH V3 5/6] EmulatorPkg/Redfish: Use edk2 Redfish debug PCDs Chang, Abner via groups.io
2024-04-04 10:17 ` Chang, Abner via groups.io [this message]
2024-04-04 13:34 ` [edk2-devel] [PATCH V3 6/6] RedfishPkg/RedfishPlatformConfigDxe: support menu path report Igor Kulchytskyy via groups.io
2024-04-04 13:33 ` [edk2-devel] [PATCH V3 0/6] Config language searching algorithm enhancement and the bug fixes Igor Kulchytskyy via groups.io
2024-04-04 14:26 ` Chang, Abner via groups.io
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240404101758.84-7-abner.chang@amd.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox