Reviewed-by: Nickle Wang <nick...@nvidia.com>
Regards,
Nickle
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Chang, Abner
> via groups.io
> Sent: Tuesday, March 26, 2024 11:15 PM
> To: devel@edk2.groups.io
> Cc: Abner Chang <abner.ch...@amd.com>; Igor Kulchytskyy <ig...@ami.com>
> Subject: [edk2-devel] [PATCH V2 6/6] RedfishPkg/RedfishPlatformConfigDxe:
> support menu path report
>
> External email: Use caution opening links or attachments
>
>
> From: Nickle Wang <nick...@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 <nick...@nvidia.com>
> Cc: Abner Chang <abner.ch...@amd.com>
> Cc: Igor Kulchytskyy <ig...@ami.com>
> Signed-off-by: Abner Chang <abner.ch...@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 d165799f9a1..7821146e901 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 537ce09a2d3..86f3aa529c5 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->DescriptionStr 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->DescriptionStr
> 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->DescriptionStr
> is
> NULL, x-uefi-string has something wrong.\n", __func__));
> + ASSERT (FALSE);
> + }
> }
> }
>
> @@ -1440,7 +1447,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); @@ -1477,8 +1484,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;
> }
>
> @@ -1504,7 +1511,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 (
> @@ -1531,6 +1538,8 @@ BuildXUefiRedfishStringDatabase (
>
> FormsetPrivate->HiiPackageListHeader
> );
> if (EFI_ERROR (Status)) {
> + FreePool (FormsetPrivate->HiiPackageListHeader);
> + FormsetPrivate->HiiPackageListHeader = NULL;
> return;
> }
>
> @@ -1647,8 +1656,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); @@ -1734,7 +1749,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->DescriptionStr = 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 (#117156): https://edk2.groups.io/g/devel/message/117156
Mute This Topic: https://groups.io/mt/105159789/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-