From: "Chang, Abner" <abner.chang@amd.com>
To: Nickle Wang <nicklew@nvidia.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: Igor Kulchytskyy <igork@ami.com>
Subject: Re: [edk2-redfish-client][PATCH 2/3] RedfishClientPkg: Introduce Hii2RedfishBootDxe driver
Date: Wed, 7 Jun 2023 07:02:01 +0000 [thread overview]
Message-ID: <MN2PR12MB396696E8C3BB153DF7178D95EA53A@MN2PR12MB3966.namprd12.prod.outlook.com> (raw)
In-Reply-To: <20230606133817.4631-1-nicklew@nvidia.com>
[AMD Official Use Only - General]
Same as the comment given to 1/3, let's rename Hii2 to HiiTo. The same comment applied to 3/3.
Thanks
Abner
> -----Original Message-----
> From: Nickle Wang <nicklew@nvidia.com>
> Sent: Tuesday, June 6, 2023 9:38 PM
> To: devel@edk2.groups.io
> Cc: Chang, Abner <Abner.Chang@amd.com>; Igor Kulchytskyy
> <igork@ami.com>
> Subject: [edk2-redfish-client][PATCH 2/3] RedfishClientPkg: Introduce
> Hii2RedfishBootDxe driver
>
> Caution: This message originated from an External Source. Use proper caution
> when opening attachments, clicking links, or responding.
>
>
> Add Hii2RedfishBootDxe driver with configure language defined in UNI
> file in order to demonstrate the use of Redfish Platform Config
> Protocol. Feature drivers under RedfishClientPkg will work with this
> driver and provide the REST data to Redfish service.
>
> Signed-off-by: Nickle Wang <nicklew@nvidia.com>
> Cc: Abner Chang <abner.chang@amd.com>
> Cc: Igor Kulchytskyy <igork@ami.com>
> ---
> RedfishClientPkg/RedfishClientPkg.dec | 1 +
> .../RedfishClientComponents.dsc.inc | 1 +
> RedfishClientPkg/RedfishClientPkg.dsc | 9 +
> .../Hii2RedfishBootDxe/Hii2RedfishBootDxe.inf | 59 ++
> .../Hii2RedfishBootDxe/Hii2RedfishBootData.h | 60 ++
> .../Hii2RedfishBootDxe/Hii2RedfishBootDxe.h | 53 ++
> .../Hii2RedfishBootDxe/Hii2RedfishBootVfr.vfr | 83 +++
> .../Hii2RedfishBootDxe/Hii2RedfishBootDxe.c | 698 ++++++++++++++++++
> .../Hii2RedfishBootDxeMap.uni | 28 +
> .../Hii2RedfishBootDxeStrings.uni | 41 +
> RedfishClientPkg/RedfishClient.fdf.inc | 1 +
> 11 files changed, 1034 insertions(+)
> create mode 100644
> RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.inf
> create mode 100644
> RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootData.h
> create mode 100644
> RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.h
> create mode 100644
> RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootVfr.vfr
> create mode 100644
> RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.c
> create mode 100644
> RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxeMap.uni
> create mode 100644
> RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxeStrings.uni
>
> diff --git a/RedfishClientPkg/RedfishClientPkg.dec
> b/RedfishClientPkg/RedfishClientPkg.dec
> index af241cf6..055c1924 100644
> --- a/RedfishClientPkg/RedfishClientPkg.dec
> +++ b/RedfishClientPkg/RedfishClientPkg.dec
> @@ -58,6 +58,7 @@
> gEfiRedfishClientVariableGuid = { 0x91c46a3d, 0xed1a, 0x477b,
> { 0xa5, 0x33, 0x87, 0x2d, 0xcd, 0xb0, 0xfc, 0xc1 } }
>
> gHii2RedfishMemoryFormsetGuid = { 0XC2BE579E, 0X3C57,
> 0X499C, { 0XA9, 0XDF, 0XE6, 0X23, 0X8A, 0X49, 0X64, 0XF8 }}
> + gHii2RedfishBootFormsetGuid = { 0x8399a787, 0x108e, 0x4e53,
> { 0x9e, 0xde, 0x4b, 0x18, 0xcc, 0x9e, 0xab, 0x3b }}
>
> [PcdsFixedAtBuild]
>
> gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaStringSize|32|UI
> NT32|0x10000001
> diff --git a/RedfishClientPkg/RedfishClientComponents.dsc.inc
> b/RedfishClientPkg/RedfishClientComponents.dsc.inc
> index 3451c185..4633e962 100644
> --- a/RedfishClientPkg/RedfishClientComponents.dsc.inc
> +++ b/RedfishClientPkg/RedfishClientComponents.dsc.inc
> @@ -18,6 +18,7 @@
> RedfishClientPkg/RedfishETagDxe/RedfishETagDxe.inf
> RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.inf
> RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
> + RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.inf
> !endif
> #
> # Below two modules should be pulled in by build tool.
> diff --git a/RedfishClientPkg/RedfishClientPkg.dsc
> b/RedfishClientPkg/RedfishClientPkg.dsc
> index ac9f8e9d..edc387ac 100644
> --- a/RedfishClientPkg/RedfishClientPkg.dsc
> +++ b/RedfishClientPkg/RedfishClientPkg.dsc
> @@ -39,6 +39,15 @@
> BaseSortLib|MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
> HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
>
> UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesL
> ib.inf
> +
> UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBoot
> ManagerLib.inf
> + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
> +
> PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLi
> bNull.inf
> +
> PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePe
> CoffGetEntryPointLib.inf
> +
> DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLi
> b.inf
> + DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf
> +
> ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeR
> eportStatusCodeLib.inf
> + SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
> +
> VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/Varia
> blePolicyHelperLib.inf
>
> [LibraryClasses.ARM, LibraryClasses.AARCH64]
> #
> diff --git a/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.inf
> b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.inf
> new file mode 100644
> index 00000000..da80b79b
> --- /dev/null
> +++ b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.inf
> @@ -0,0 +1,59 @@
> +## @file
> +# HII-to-Redfish boot driver.
> +#
> +# (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> +#
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +##
> +
> +[Defines]
> + INF_VERSION = 0x00010005
> + BASE_NAME = Hii2RedfishBootDxe
> + FILE_GUID = F9BA69BD-1EDB-4334-9D57-7E974ADF1361
> + MODULE_TYPE = UEFI_DRIVER
> + VERSION_STRING = 1.0
> + ENTRY_POINT = Hii2RedfishBootDxeDriverEntryPoint
> + UNLOAD_IMAGE = Hii2RedfishBootDxeDriverUnload
> +
> +[Sources]
> + Hii2RedfishBootDxe.c
> + Hii2RedfishBootDxe.h
> + Hii2RedfishBootData.h
> + Hii2RedfishBootVfr.vfr
> + Hii2RedfishBootDxeStrings.uni
> + Hii2RedfishBootDxeMap.uni
> +
> +[Packages]
> + MdePkg/MdePkg.dec
> + MdeModulePkg/MdeModulePkg.dec
> + RedfishClientPkg/RedfishClientPkg.dec
> +
> +[LibraryClasses]
> + UefiDriverEntryPoint
> + BaseLib
> + BaseMemoryLib
> + DebugLib
> + PcdLib
> + MemoryAllocationLib
> + UefiBootServicesTableLib
> + UefiRuntimeServicesTableLib
> + UefiLib
> + PrintLib
> + HiiLib
> + UefiBootManagerLib
> + UefiHiiServicesLib
> + RedfishEventLib
> +
> +[Protocols]
> + gEfiDevicePathProtocolGuid
> + gEfiHiiConfigAccessProtocolGuid
> +
> +
> +[Guids]
> + gHii2RedfishBootFormsetGuid
> + gEfiIfrTianoGuid
> +
> +[Depex]
> + gEfiHiiDatabaseProtocolGuid
> +
> diff --git a/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootData.h
> b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootData.h
> new file mode 100644
> index 00000000..896327bc
> --- /dev/null
> +++ b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootData.h
> @@ -0,0 +1,60 @@
> +/** @file
> + The header file of HII-to-Redfish boot driver.
> +
> + (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef HII_2_REDFISH_BOOT_DATA_H_
> +#define HII_2_REDFISH_BOOT_DATA_H_
> +
> +#include <Uefi/UefiMultiPhase.h>
> +#include <Guid/HiiPlatformSetupFormset.h>
> +
> +#define HII_2_REDFISH_BOOT_FORMSET_GUID \
> + { \
> + 0x8399a787, 0x108e, 0x4e53, { 0x9e, 0xde, 0x4b, 0x18, 0xcc, 0x9e, 0xab,
> 0x3b } \
> + }
> +
> +extern EFI_GUID gHii2RedfishBootFormsetGuid;
> +
> +#define FORM_ID 0x001
> +#define QUESTION_ID_BOOT_SOURCE_OVERRIDE_ENABLED 0x100
> +#define QUESTION_ID_BOOT_SOURCE_OVERRIDE_MODE 0x101
> +#define QUESTION_ID_BOOT_SOURCE_OVERRIDE_TARGET 0x102
> +#define LABEL_BOOT_OPTION 0x200
> +#define LABEL_BOOT_OPTION_END 0x201
> +#define BOOT_ORDER_LIST 0x300
> +#define MAX_BOOT_OPTIONS 100
> +#define BOOT_OPTION_VAR_STORE_ID 0x800
> +//
> +// VarOffset that will be used to create question
> +// all these values are computed from the structure
> +// defined below
> +//
> +#define VAR_OFFSET(Field) ((UINT16) ((UINTN)
> &(((HII_2_REDFISH_BOOT_OPTION_VARSTORE_DATA *) 0)->Field)))
> +
> +#pragma pack(1)
> +
> +//
> +// Definiton of HII_2_REDFISH_BOOT_EFI_VARSTORE_DATA
> +//
> +typedef struct {
> + UINT8 BootSourceOverrideEnabled;
> + UINT8 BootSourceOverrideMode;
> + UINT8 BootSourceOverrideTarget;
> + UINT8 Reversed;
> +} HII_2_REDFISH_BOOT_EFI_VARSTORE_DATA;
> +
> +//
> +// Definiton of HII_2_REDFISH_BOOT_OPTION_VARSTORE_DATA
> +//
> +typedef struct {
> + UINT32 BootOptionOrder[MAX_BOOT_OPTIONS];
> +} HII_2_REDFISH_BOOT_OPTION_VARSTORE_DATA;
> +
> +#pragma pack()
> +
> +#endif
> diff --git a/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.h
> b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.h
> new file mode 100644
> index 00000000..1635c70b
> --- /dev/null
> +++ b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.h
> @@ -0,0 +1,53 @@
> +/** @file
> + HII-to-Redfish memory driver header file.
> +
> + (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef HII_2_REDFISH_BOOT_DXE_H_
> +#define HII_2_REDFISH_BOOT_DXE_H_
> +
> +#include <Uefi.h>
> +
> +#include <Library/BaseLib.h>
> +#include <Library/UefiLib.h>
> +#include <Library/BaseMemoryLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/MemoryAllocationLib.h>
> +#include <Library/UefiBootServicesTableLib.h>
> +#include <Library/UefiRuntimeServicesTableLib.h>
> +#include <Library/PrintLib.h>
> +#include <Library/HiiLib.h>
> +#include <Library/DevicePathLib.h>
> +#include <Library/UefiBootManagerLib.h>
> +#include <Library/UefiHiiServicesLib.h>
> +#include <Library/RedfishEventLib.h>
> +
> +#include <Protocol/HiiConfigAccess.h>
> +
> +#include <Guid/VariableFormat.h>
> +#include <Guid/MdeModuleHii.h>
> +
> +#include "Hii2RedfishBootData.h"
> +
> +extern UINT8 Hii2RedfishBootVfrBin[];
> +
> +#define COMPUTER_SYSTEM_SECHEMA_VERSION "x-uefi-redfish-
> ComputerSystem.v1_5_0"
> +#define COMPUTER_SYSTEM_BOOT_BOOTORDER
> L"/Systems/{1}/Boot/BootOrder"
> +
> +#pragma pack(1)
> +
> +///
> +/// HII specific Vendor Device Path definition.
> +///
> +typedef struct {
> + VENDOR_DEVICE_PATH VendorDevicePath;
> + EFI_DEVICE_PATH_PROTOCOL End;
> +} HII_VENDOR_DEVICE_PATH;
> +
> +#pragma pack()
> +
> +#endif
> diff --git a/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootVfr.vfr
> b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootVfr.vfr
> new file mode 100644
> index 00000000..3758de6b
> --- /dev/null
> +++ b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootVfr.vfr
> @@ -0,0 +1,83 @@
> +/** @file
> + HII-to-Redfish boot driver VFR file.
> +
> + (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +
> +#include "Hii2RedfishBootData.h"
> +
> +formset
> + guid = HII_2_REDFISH_BOOT_FORMSET_GUID,
> + title = STRING_TOKEN(STR_FORM_SET_TITLE),
> + help = STRING_TOKEN(STR_FORM_SET_TITLE_HELP),
> + classguid = EFI_HII_PLATFORM_SETUP_FORMSET_GUID,
> +
> + //
> + // Define a EFI variable Storage (EFI_IFR_VARSTORE_EFI)
> + //
> + efivarstore HII_2_REDFISH_BOOT_EFI_VARSTORE_DATA,
> + attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS |
> EFI_VARIABLE_NON_VOLATILE, // EFI variable attribures
> + name = Hii2RedfishBootEfiVar,
> + guid = HII_2_REDFISH_BOOT_FORMSET_GUID;
> +
> + //
> + // Define a variable Storage for boot order
> + //
> + varstore HII_2_REDFISH_BOOT_OPTION_VARSTORE_DATA,
> + varid = BOOT_OPTION_VAR_STORE_ID,
> + name = Hii2RedfishBootOptionVar,
> + guid = HII_2_REDFISH_BOOT_FORMSET_GUID;
> +
> + //
> + // Define a Form (EFI_IFR_FORM)
> + //
> + form formid = FORM_ID, // Form ID
> + title = STRING_TOKEN(STR_FORM_TITLE); // Form title
> +
> + oneof varid = Hii2RedfishBootEfiVar.BootSourceOverrideEnabled,
> + questionid = QUESTION_ID_BOOT_SOURCE_OVERRIDE_ENABLED,
> + prompt = STRING_TOKEN(STR_BOOT_SOURCE_OVERRIDE_ENABLED),
> + help =
> STRING_TOKEN(STR_BOOT_SOURCE_OVERRIDE_ENABLED_HELP),
> + flags = INTERACTIVE | NUMERIC_SIZE_1,
> + option text = STRING_TOKEN(STR_DISABLED), value =
> STR_DISABLED, flags = DEFAULT;
> + option text = STRING_TOKEN(STR_ONCE), value = STR_ONCE,
> flags = 0;
> + option text = STRING_TOKEN(STR_CONTINUOUS), value =
> STR_CONTINUOUS, flags = 0;
> + endoneof;
> +
> + oneof varid = Hii2RedfishBootEfiVar.BootSourceOverrideMode,
> + questionid = QUESTION_ID_BOOT_SOURCE_OVERRIDE_MODE,
> + prompt = STRING_TOKEN(STR_BOOT_SOURCE_OVERRIDE_MODE),
> + help = STRING_TOKEN(STR_BOOT_SOURCE_OVERRIDE_MODE_HELP),
> + flags = INTERACTIVE | NUMERIC_SIZE_1,
> + option text = STRING_TOKEN(STR_UEFI), value = STR_UEFI, flags
> = DEFAULT;
> + option text = STRING_TOKEN(STR_LEGACY), value = STR_LEGACY,
> flags = 0;
> + endoneof;
> +
> + oneof varid = Hii2RedfishBootEfiVar.BootSourceOverrideTarget,
> + questionid = QUESTION_ID_BOOT_SOURCE_OVERRIDE_TARGET,
> + prompt = STRING_TOKEN(STR_BOOT_SOURCE_OVERRIDE_TARGET),
> + help = STRING_TOKEN(STR_BOOT_SOURCE_OVERRIDE_TARGET_HELP),
> + flags = INTERACTIVE | NUMERIC_SIZE_1,
> + option text = STRING_TOKEN(STR_TARGET_NONE), value =
> STR_TARGET_NONE, flags = DEFAULT;
> + option text = STRING_TOKEN(STR_TARGET_PXE), value =
> STR_TARGET_PXE, flags = 0;
> + option text = STRING_TOKEN(STR_TARGET_USB), value =
> STR_TARGET_USB, flags = 0;
> + option text = STRING_TOKEN(STR_TARGET_HDD), value =
> STR_TARGET_HDD, flags = 0;
> + option text = STRING_TOKEN(STR_TARGET_BIOS_SETUP), value =
> STR_TARGET_BIOS_SETUP, flags = 0;
> + option text = STRING_TOKEN(STR_TARGET_UEFI), value =
> STR_TARGET_UEFI, flags = 0;
> + option text = STRING_TOKEN(STR_TARGET_UEFI_HTTP), value =
> STR_TARGET_UEFI_HTTP, flags = 0;
> + endoneof;
> +
> + subtitle text = STRING_TOKEN(STR_BOOT_ORDER);
> +
> + //
> + // This is where we will dynamically add choices for the Boot Manager
> + //
> + label LABEL_BOOT_OPTION;
> + label LABEL_BOOT_OPTION_END;
> +
> + endform;
> +endformset;
> diff --git a/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.c
> b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.c
> new file mode 100644
> index 00000000..51a2bed0
> --- /dev/null
> +++ b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.c
> @@ -0,0 +1,698 @@
> +/** @file
> + HII-to-Redfish boot driver.
> +
> + (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> + Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include "Hii2RedfishBootDxe.h"
> +
> +EFI_GUID mHii2RedfishBootGuid =
> HII_2_REDFISH_BOOT_FORMSET_GUID;
> +EFI_HII_HANDLE mHiiHandle;
> +EFI_HANDLE mDriverHandle;
> +EFI_EVENT mEvent = NULL;
> +CHAR16 mHii2RedfishEfiVar[] = L"Hii2RedfishBootEfiVar";
> +HII_2_REDFISH_BOOT_OPTION_VARSTORE_DATA mBootOptionsVarData;
> +
> +///
> +/// HII specific Vendor Device Path definition.
> +///
> +HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath = {
> + {
> + {
> + HARDWARE_DEVICE_PATH,
> + HW_VENDOR_DP,
> + {
> + (UINT8)(sizeof (VENDOR_DEVICE_PATH)),
> + (UINT8)((sizeof (VENDOR_DEVICE_PATH)) >> 8)
> + }
> + },
> + HII_2_REDFISH_BOOT_FORMSET_GUID
> + },
> + {
> + END_DEVICE_PATH_TYPE,
> + END_ENTIRE_DEVICE_PATH_SUBTYPE,
> + {
> + (UINT8)(END_DEVICE_PATH_LENGTH),
> + (UINT8)((END_DEVICE_PATH_LENGTH) >> 8)
> + }
> + }
> +};
> +
> +/**
> + This function add 'x-uefi-' configuration language to given string ID.
> +
> + @param[in] HiiHandle HII handle
> + @param[in] StringId String token ID
> + @param[in] ConfigLang Configure language of question
> +
> + @retval EFI_STATUS
> +
> +**/
> +EFI_STATUS
> +UpdateConfigLanguageToQuestion (
> + IN EFI_HII_HANDLE HiiHandle,
> + IN EFI_STRING_ID StringId,
> + IN EFI_STRING ConfigLang
> + )
> +{
> + CHAR16 ConfigLanguage[32];
> +
> + if ((HiiHandle == NULL) || (StringId == 0) || (ConfigLang == NULL)) {
> + return EFI_INVALID_LANGUAGE;
> + }
> +
> + UnicodeSPrint (ConfigLanguage, sizeof (ConfigLanguage), ConfigLang);
> +
> + DEBUG ((DEBUG_INFO, "%a, add config-language for string(%d): %s\n",
> __func__, StringId, ConfigLanguage));
> +
> + HiiSetString (
> + HiiHandle,
> + StringId,
> + ConfigLanguage,
> + COMPUTER_SYSTEM_SECHEMA_VERSION
> + );
> +
> + return EFI_SUCCESS;
> +}
> +
> +/**
> + This function add 'x-uefi-' configuration language to given string ID.
> +
> + @param[in] HiiHandle HII handle
> + @param[in] StringId String token ID
> + @param[in] Index The index of boot option
> + @param[in] BootOption Boot option context
> +
> + @retval EFI_STATUS
> +
> +**/
> +EFI_STATUS
> +UpdateConfigLanguageToValues (
> + IN EFI_HII_HANDLE HiiHandle,
> + IN EFI_STRING_ID StringId,
> + IN UINTN Index,
> + IN EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
> + )
> +{
> + CHAR16 ConfigLanguage[10];
> +
> + if ((HiiHandle == NULL) || (StringId == 0) || (BootOption == NULL)) {
> + return EFI_INVALID_LANGUAGE;
> + }
> +
> + UnicodeSPrint (ConfigLanguage, sizeof (ConfigLanguage), L"Boot%04x",
> BootOption->OptionNumber);
> +
> + DEBUG ((DEBUG_INFO, "%a, add config-language for string(%d): %s\n",
> __func__, StringId, ConfigLanguage));
> +
> + HiiSetString (
> + HiiHandle,
> + StringId,
> + ConfigLanguage,
> + COMPUTER_SYSTEM_SECHEMA_VERSION
> + );
> +
> + return EFI_SUCCESS;
> +}
> +
> +/**
> + This function creates boot order with ordered-list op-codes in runtime.
> +
> + @retval EFI_STATUS
> +
> +**/
> +EFI_STATUS
> +RefreshBootOrderList (
> + VOID
> + )
> +{
> + UINTN Index;
> + EFI_BOOT_MANAGER_LOAD_OPTION *BootOption;
> + UINTN BootOptionCount;
> + EFI_STRING_ID Token;
> + VOID *StartOpCodeHandle;
> + VOID *EndOpCodeHandle;
> + EFI_IFR_GUID_LABEL *StartLabel;
> + EFI_IFR_GUID_LABEL *EndLabel;
> + BOOLEAN IsLegacyOption;
> + VOID *OptionsOpCodeHandle;
> + UINTN OptionIndex;
> +
> + //
> + // for better user experience
> + // 1. User changes HD configuration (e.g.: unplug HDD), here we have a
> chance to remove the HDD boot option
> + // 2. User enables/disables UEFI PXE, here we have a chance to add/remove
> EFI Network boot option
> + //
> + EfiBootManagerRefreshAllBootOption ();
> +
> + BootOption = EfiBootManagerGetLoadOptions (&BootOptionCount,
> LoadOptionTypeBoot);
> +
> + if (BootOptionCount == 0) {
> + return EFI_NOT_FOUND;
> + }
> +
> + //
> + // Initial var store
> + //
> + ZeroMem (&mBootOptionsVarData, sizeof
> (HII_2_REDFISH_BOOT_OPTION_VARSTORE_DATA));
> +
> + //
> + // Allocate space for creation of UpdateData Buffer
> + //
> + StartOpCodeHandle = HiiAllocateOpCodeHandle ();
> + ASSERT (StartOpCodeHandle != NULL);
> +
> + EndOpCodeHandle = HiiAllocateOpCodeHandle ();
> + ASSERT (EndOpCodeHandle != NULL);
> +
> + //
> + // Create Hii Extend Label OpCode as the start opcode
> + //
> + StartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode
> (StartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));
> + StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;
> + StartLabel->Number = LABEL_BOOT_OPTION;
> +
> + //
> + // Create Hii Extend Label OpCode as the end opcode
> + //
> + EndLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode
> (EndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));
> + EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;
> + EndLabel->Number = LABEL_BOOT_OPTION_END;
> +
> + OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();
> + ASSERT (OptionsOpCodeHandle != NULL);
> +
> + for (Index = 0, OptionIndex = 0; Index < BootOptionCount; Index++) {
> + //
> + // Don't display hidden boot options, but retain inactive ones.
> + //
> + if ((BootOption[Index].Attributes & LOAD_OPTION_HIDDEN) != 0) {
> + continue;
> + }
> +
> + //
> + // Group the legacy boot option in the sub title created dynamically
> + //
> + IsLegacyOption = (BOOLEAN)(
> + (DevicePathType (BootOption[Index].FilePath) ==
> BBS_DEVICE_PATH) &&
> + (DevicePathSubType (BootOption[Index].FilePath) ==
> BBS_BBS_DP)
> + );
> +
> + //
> + // Don't display legacy boot options
> + //
> + if (IsLegacyOption) {
> + continue;
> + }
> +
> + mBootOptionsVarData.BootOptionOrder[OptionIndex++] =
> (UINT32)BootOption[Index].OptionNumber;
> +
> + ASSERT (BootOption[Index].Description != NULL);
> +
> + Token = HiiSetString (mHiiHandle, 0, BootOption[Index].Description, NULL);
> +
> + //
> + // Add boot option
> + //
> + HiiCreateOneOfOptionOpCode (
> + OptionsOpCodeHandle,
> + Token,
> + 0,
> + EFI_IFR_TYPE_NUM_SIZE_32,
> + BootOption[Index].OptionNumber
> + );
> +
> + //
> + // Add x-uefi configure language for boot options.
> + //
> + UpdateConfigLanguageToValues (mHiiHandle, Token, OptionIndex,
> &BootOption[Index]);
> + }
> +
> + //
> + // Create ordered list op-code
> + //
> + HiiCreateOrderedListOpCode (
> + StartOpCodeHandle, // Container for dynamic created opcodes
> + BOOT_ORDER_LIST, // Question ID
> + BOOT_OPTION_VAR_STORE_ID, // VarStore ID
> + (UINT16)VAR_OFFSET (BootOptionOrder), // Offset in Buffer Storage
> + STRING_TOKEN (STR_BOOT_ORDER_LIST), // Question prompt text
> + STRING_TOKEN (STR_BOOT_ORDER_LIST_HELP), // Question help text
> + 0, // Question flag
> + EFI_IFR_UNIQUE_SET, // Ordered list flag, e.g.
> EFI_IFR_UNIQUE_SET
> + EFI_IFR_TYPE_NUM_SIZE_32, // Data type of Question value
> + MAX_BOOT_OPTIONS, // Maximum container
> + OptionsOpCodeHandle, // Option Opcode list
> + NULL // Default Opcode is NULL
> + );
> +
> + //
> + // Add x-uefi configure language for boot order.
> + //
> + UpdateConfigLanguageToQuestion (mHiiHandle, STRING_TOKEN
> (STR_BOOT_ORDER_LIST), COMPUTER_SYSTEM_BOOT_BOOTORDER);
> +
> + //
> + // Update HII form
> + //
> + HiiUpdateForm (
> + mHiiHandle,
> + &mHii2RedfishBootGuid,
> + FORM_ID,
> + StartOpCodeHandle,
> + EndOpCodeHandle
> + );
> +
> + HiiFreeOpCodeHandle (StartOpCodeHandle);
> + HiiFreeOpCodeHandle (EndOpCodeHandle);
> + HiiFreeOpCodeHandle (OptionsOpCodeHandle);
> +
> + EfiBootManagerFreeLoadOptions (BootOption, BootOptionCount);
> +
> + return EFI_SUCCESS;
> +}
> +
> +/**
> + This function update the "BootOrder" EFI Variable based on
> + BMM Formset's NV map. It then refresh BootOptionMenu
> + with the new "BootOrder" list.
> +
> + @param[in] BootOptionVar Boot option NV data
> +
> + @retval EFI_SUCCESS The function complete successfully.
> + @retval EFI_OUT_OF_RESOURCES Not enough memory to complete the
> function.
> + @return The EFI variable can not be saved. See gRT->SetVariable for detail
> return information.
> +
> +**/
> +EFI_STATUS
> +UpdateBootorderList (
> + IN HII_2_REDFISH_BOOT_OPTION_VARSTORE_DATA *BootOptionVar
> + )
> +{
> + EFI_STATUS Status;
> + UINT16 Index;
> + UINT16 OrderIndex;
> + UINT16 *BootOrder;
> + UINTN BootOrderSize;
> + UINT16 OptionNumber;
> +
> + if (BootOptionVar == NULL) {
> + return EFI_INVALID_PARAMETER;
> + }
> +
> + //
> + // First check whether BootOrder is present in current configuration
> + //
> + GetEfiGlobalVariable2 (L"BootOrder", (VOID **)&BootOrder,
> &BootOrderSize);
> + if (BootOrder == NULL) {
> + return EFI_OUT_OF_RESOURCES;
> + }
> +
> + //
> + // OptionOrder is subset of BootOrder
> + //
> + for (OrderIndex = 0; (OrderIndex < MAX_BOOT_OPTIONS) &&
> (BootOptionVar->BootOptionOrder[OrderIndex] != 0); OrderIndex++) {
> + for (Index = OrderIndex; Index < BootOrderSize / sizeof (UINT16); Index++)
> {
> + if ((BootOrder[Index] == (UINT16)BootOptionVar-
> >BootOptionOrder[OrderIndex]) && (OrderIndex != Index)) {
> + OptionNumber = BootOrder[Index];
> + CopyMem (&BootOrder[OrderIndex + 1], &BootOrder[OrderIndex],
> (Index - OrderIndex) * sizeof (UINT16));
> + BootOrder[OrderIndex] = OptionNumber;
> + }
> + }
> + }
> +
> + Status = gRT->SetVariable (
> + L"BootOrder",
> + &gEfiGlobalVariableGuid,
> + EFI_VARIABLE_BOOTSERVICE_ACCESS |
> EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
> + BootOrderSize,
> + BootOrder
> + );
> + FreePool (BootOrder);
> +
> + return Status;
> +}
> +
> +/**
> + Initial HII variable if it does not exist.
> +
> + @retval EFI_SUCESS HII variable is initialized.
> +
> +**/
> +EFI_STATUS
> +InitialHiiVairable (
> + VOID
> + )
> +{
> + EFI_STATUS Status;
> + UINTN BufferSize;
> + HII_2_REDFISH_BOOT_EFI_VARSTORE_DATA Hii2RedfishBootVar;
> +
> + //
> + // Get Buffer Storage data from EFI variable.
> + // Try to get the current setting from variable.
> + //
> + BufferSize = sizeof (HII_2_REDFISH_BOOT_EFI_VARSTORE_DATA);
> + Status = gRT->GetVariable (
> + mHii2RedfishEfiVar,
> + &gHii2RedfishBootFormsetGuid,
> + NULL,
> + &BufferSize,
> + &Hii2RedfishBootVar
> + );
> + if (!EFI_ERROR (Status)) {
> + return EFI_SUCCESS;
> + }
> +
> + //
> + // Initialization
> + //
> + Hii2RedfishBootVar.BootSourceOverrideEnabled = STR_DISABLED;
> + Hii2RedfishBootVar.BootSourceOverrideMode = STR_UEFI;
> + Hii2RedfishBootVar.BootSourceOverrideTarget = STR_TARGET_NONE;
> + Hii2RedfishBootVar.Reversed = 0x00;
> +
> + Status = gRT->SetVariable (
> + mHii2RedfishEfiVar,
> + &gHii2RedfishBootFormsetGuid,
> + VARIABLE_ATTRIBUTE_NV_BS,
> + BufferSize,
> + &Hii2RedfishBootVar
> + );
> +
> + //
> + // Initial var store
> + //
> + ZeroMem (&mBootOptionsVarData, sizeof
> (HII_2_REDFISH_BOOT_OPTION_VARSTORE_DATA));
> +
> + return Status;
> +}
> +
> +/**
> + This function allows a caller to extract the current configuration for one
> + or more named elements from the target driver.
> +
> + @param[in] This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
> + @param[in] Request A null-terminated Unicode string in
> + <ConfigRequest> format.
> + @param[out] Progress On return, points to a character in the Request
> + string. Points to the string's null terminator if
> + request was successful. Points to the most recent
> + '&' before the first failing name/value pair (or
> + the beginning of the string if the failure is in
> + the first name/value pair) if the request was not
> + successful.
> + @param[out] Results A null-terminated Unicode string in
> + <ConfigAltResp> format which has all values filled
> + in for the names in the Request string. String to
> + be allocated by the called function.
> +
> + @retval EFI_SUCCESS The Results is filled with the requested values.
> + @retval EFI_OUT_OF_RESOURCES Not enough memory to store the
> results.
> + @retval EFI_INVALID_PARAMETER Request is illegal syntax, or unknown
> name.
> + @retval EFI_NOT_FOUND Routing data doesn't match any storage in
> this
> + driver.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +Hii2RedfishBootExtractConfig (
> + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
> + IN CONST EFI_STRING Request,
> + OUT EFI_STRING *Progress,
> + OUT EFI_STRING *Results
> + )
> +{
> + if ((Progress == NULL) || (Results == NULL)) {
> + return EFI_INVALID_PARAMETER;
> + }
> +
> + *Progress = Request;
> +
> + if (Request == NULL) {
> + return EFI_UNSUPPORTED;
> + }
> +
> + //
> + // Check whether request for EFI Varstore. EFI varstore get data
> + // through hii database, not support in this path.
> + //
> + if (HiiIsConfigHdrMatch (Request, &gHii2RedfishBootFormsetGuid,
> L"Hii2RedfishBootEfiVar")) {
> + return EFI_UNSUPPORTED;
> + }
> +
> + //
> + // Handle boot order list
> + //
> + if (HiiIsConfigHdrMatch (Request, &gHii2RedfishBootFormsetGuid,
> L"Hii2RedfishBootOptionVar")) {
> + gHiiConfigRouting->BlockToConfig (
> + gHiiConfigRouting,
> + Request,
> + (UINT8 *)&mBootOptionsVarData,
> + sizeof (HII_2_REDFISH_BOOT_OPTION_VARSTORE_DATA),
> + Results,
> + Progress
> + );
> +
> + //
> + // Set Progress string to the original request string.
> + //
> + if (Request == NULL) {
> + *Progress = NULL;
> + } else if (StrStr (Request, L"OFFSET") == NULL) {
> + *Progress = Request + StrLen (Request);
> + }
> +
> + return EFI_SUCCESS;
> + }
> +
> + return EFI_NOT_FOUND;
> +}
> +
> +/**
> + This function processes the results of changes in configuration.
> +
> + @param[in] This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
> + @param[in] Configuration A null-terminated Unicode string in
> <ConfigResp>
> + format.
> + @param[out] Progress A pointer to a string filled in with the offset of
> + the most recent '&' before the first failing
> + name/value pair (or the beginning of the string if
> + the failure is in the first name/value pair) or
> + the terminating NULL if all was successful.
> +
> + @retval EFI_SUCCESS The Results is processed successfully.
> + @retval EFI_INVALID_PARAMETER Configuration is NULL.
> + @retval EFI_NOT_FOUND Routing data doesn't match any storage in
> this
> + driver.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +Hii2RedfishBootRouteConfig (
> + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
> + IN CONST EFI_STRING Configuration,
> + OUT EFI_STRING *Progress
> + )
> +{
> + EFI_STATUS Status;
> + UINTN BufferSize;
> + HII_2_REDFISH_BOOT_OPTION_VARSTORE_DATA BootOptionsVar;
> +
> + *Progress = Configuration;
> +
> + //
> + // Check whether request for EFI Varstore. EFI varstore get data
> + // through hii database, not support in this path.
> + //
> + if (HiiIsConfigHdrMatch (Configuration, &gHii2RedfishBootFormsetGuid,
> L"Hii2RedfishBootEfiVar")) {
> + return EFI_UNSUPPORTED;
> + }
> +
> + //
> + // Handle boot order list
> + //
> + if (HiiIsConfigHdrMatch (Configuration, &gHii2RedfishBootFormsetGuid,
> L"Hii2RedfishBootOptionVar")) {
> + BufferSize = sizeof (HII_2_REDFISH_BOOT_OPTION_VARSTORE_DATA);
> + ZeroMem (&BootOptionsVar, sizeof
> (HII_2_REDFISH_BOOT_OPTION_VARSTORE_DATA));
> + Status = gHiiConfigRouting->ConfigToBlock (
> + gHiiConfigRouting,
> + Configuration,
> + (UINT8 *)&BootOptionsVar,
> + &BufferSize,
> + Progress
> + );
> +
> + if (CompareMem (BootOptionsVar.BootOptionOrder,
> mBootOptionsVarData.BootOptionOrder, (sizeof (UINT32) *
> MAX_BOOT_OPTIONS))) {
> + Status = UpdateBootorderList (&BootOptionsVar);
> + if (!EFI_ERROR (Status)) {
> + //
> + // Boot order update successed. Copy it to local copy.
> + //
> + CopyMem (mBootOptionsVarData.BootOptionOrder,
> BootOptionsVar.BootOptionOrder, (sizeof (UINT32) *
> MAX_BOOT_OPTIONS));
> + }
> + }
> +
> + return EFI_SUCCESS;
> + }
> +
> + return EFI_NOT_FOUND;
> +}
> +
> +/**
> + This function processes the results of changes in configuration.
> +
> + @param[in] This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
> + @param[in] Action Specifies the type of action taken by the browser.
> + @param[in] QuestionId A unique value which is sent to the original
> + exporting driver so that it can identify the type
> + of data to expect.
> + @param[in] Type The type of value for the question.
> + @param[in] Value A pointer to the data being sent to the original
> + exporting driver.
> + @param[out] ActionRequest On return, points to the action requested by
> the
> + callback function.
> +
> + @retval EFI_SUCCESS The callback successfully handled the action.
> + @retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold
> the
> + variable and its data.
> + @retval EFI_DEVICE_ERROR The variable could not be saved.
> + @retval EFI_UNSUPPORTED The specified Action is not supported by the
> + callback.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +Hii2RedfishBootDriverCallback (
> + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
> + IN EFI_BROWSER_ACTION Action,
> + IN EFI_QUESTION_ID QuestionId,
> + IN UINT8 Type,
> + IN EFI_IFR_TYPE_VALUE *Value,
> + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
> + )
> +{
> + DEBUG ((DEBUG_INFO, "%a, action: 0x%x QID: 0x%x\n", __func__, Action,
> QuestionId));
> +
> + if ((QuestionId == QUESTION_ID_BOOT_SOURCE_OVERRIDE_ENABLED) &&
> (Action == EFI_BROWSER_ACTION_FORM_OPEN)) {
> + RefreshBootOrderList ();
> +
> + return EFI_SUCCESS;
> + }
> +
> + return EFI_UNSUPPORTED;
> +}
> +
> +EFI_HII_CONFIG_ACCESS_PROTOCOL mHii2RedfishConfigAccess = {
> + Hii2RedfishBootExtractConfig,
> + Hii2RedfishBootRouteConfig,
> + Hii2RedfishBootDriverCallback
> +};
> +
> +/**
> + Callback function executed when the ready-to-provisioning event group is
> signaled.
> +
> + @param[in] Event Event whose notification function is being invoked.
> + @param[out] Context Pointer to the Context buffer
> +
> +**/
> +VOID
> +EFIAPI
> +Hii2RedfishBootReadyToProvisioning (
> + IN EFI_EVENT Event,
> + OUT VOID *Context
> + )
> +{
> + //
> + // Refresh boot order and create configure language
> + //
> + RefreshBootOrderList ();
> +}
> +
> +/**
> + Main entry for this driver.
> +
> + @param[in] ImageHandle Image handle this driver.
> + @param[in] SystemTable Pointer to SystemTable.
> +
> + @retval EFI_SUCESS This function always complete successfully.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +Hii2RedfishBootDxeDriverEntryPoint (
> + IN EFI_HANDLE ImageHandle,
> + IN EFI_SYSTEM_TABLE *SystemTable
> + )
> +{
> + EFI_STATUS Status;
> +
> + mDriverHandle = NULL;
> + Status = gBS->InstallMultipleProtocolInterfaces (
> + &mDriverHandle,
> + &gEfiDevicePathProtocolGuid,
> + &mHiiVendorDevicePath,
> + &gEfiHiiConfigAccessProtocolGuid,
> + &mHii2RedfishConfigAccess,
> + NULL
> + );
> +
> + //
> + // Publish our HII data
> + //
> + mHiiHandle = HiiAddPackages (
> + &mHii2RedfishBootGuid,
> + mDriverHandle,
> + Hii2RedfishBootDxeStrings,
> + Hii2RedfishBootVfrBin,
> + NULL
> + );
> + if (mHiiHandle == NULL) {
> + return EFI_OUT_OF_RESOURCES;
> + }
> +
> + Status = InitialHiiVairable ();
> + if (EFI_ERROR (Status)) {
> + DEBUG ((DEBUG_ERROR, "%a, failed to initial variable: %r\n", __func__,
> Status));
> + }
> +
> + //
> + // Register read-to-provisioning event
> + //
> + Status = CreateReadyToProvisioningEvent (
> + Hii2RedfishBootReadyToProvisioning,
> + NULL,
> + &mEvent
> + );
> + if (EFI_ERROR (Status)) {
> + DEBUG ((DEBUG_ERROR, "%a, failed to register ready-to-provisioning
> event: %r\n", __func__, Status));
> + }
> +
> + return EFI_SUCCESS;
> +}
> +
> +/**
> + Unloads the application and its installed protocol.
> +
> + @param[in] ImageHandle Handle that identifies the image to be
> unloaded.
> +
> + @retval EFI_SUCCESS The image has been unloaded.
> +**/
> +EFI_STATUS
> +EFIAPI
> +Hii2RedfishBootDxeDriverUnload (
> + IN EFI_HANDLE ImageHandle
> + )
> +{
> + if (mHiiHandle != NULL) {
> + HiiRemovePackages (mHiiHandle);
> + }
> +
> + if (mEvent != NULL) {
> + gBS->CloseEvent (mEvent);
> + }
> +
> + return EFI_SUCCESS;
> +}
> diff --git a/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxeMap.uni
> b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxeMap.uni
> new file mode 100644
> index 00000000..0589c90d
> --- /dev/null
> +++ b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxeMap.uni
> @@ -0,0 +1,28 @@
> +/** @file
> + HII-to-Redfish memory driver.
> +
> + (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +/=#
> +#langdef x-uefi-redfish-ComputerSystem.v1_5_0
> "ComputerSystem.v1_5_0"
> +
> +#string STR_BOOT_SOURCE_OVERRIDE_ENABLED #language x-uefi-
> redfish-ComputerSystem.v1_5_0
> "/Systems/{1}/Boot/BootSourceOverrideEnabled"
> +#string STR_BOOT_SOURCE_OVERRIDE_MODE #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "/Systems/{1}/Boot/BootSourceOverrideMode"
> +#string STR_BOOT_SOURCE_OVERRIDE_TARGET #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "/Systems/{1}/Boot/BootSourceOverrideTarget"
> +
> +#string STR_DISABLED #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "Disabled"
> +#string STR_ONCE #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "Once"
> +#string STR_CONTINUOUS #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "Continuous"
> +#string STR_UEFI #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "UEFI"
> +#string STR_LEGACY #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "Legacy"
> +#string STR_TARGET_NONE #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "None"
> +#string STR_TARGET_PXE #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "Pxe"
> +#string STR_TARGET_USB #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "Usb"
> +#string STR_TARGET_HDD #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "Hdd"
> +#string STR_TARGET_BIOS_SETUP #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "BiosSetup"
> +#string STR_TARGET_UEFI #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "UefiTarget"
> +#string STR_TARGET_UEFI_HTTP #language x-uefi-redfish-
> ComputerSystem.v1_5_0 "UefiHttp"
> diff --git
> a/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxeStrings.uni
> b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxeStrings.uni
> new file mode 100644
> index 00000000..c2057633
> --- /dev/null
> +++ b/RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxeStrings.uni
> @@ -0,0 +1,41 @@
> +/** @file
> + HII-to-Redfish memory driver.
> +
> + (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +/=#
> +#langdef en-US "English"
> +
> +#string STR_FORM_SET_TITLE #language en-US "HII to Redfish
> (Boot)"
> +#string STR_FORM_SET_TITLE_HELP #language en-US "HII to Redfish
> (Boot)"
> +#string STR_FORM_TITLE #language en-US "HII to Redfish Boot
> properties"
> +
> +#string STR_BOOT_ORDER #language en-US "Boot Order"
> +#string STR_BOOT_ORDER_LIST #language en-US "Boot Order List"
> +#string STR_BOOT_ORDER_LIST_HELP #language en-US "Boot Order
> List"
> +
> +#string STR_BOOT_SOURCE_OVERRIDE_ENABLED #language en-US "Boot
> Source Override Enabled"
> +#string STR_BOOT_SOURCE_OVERRIDE_ENABLED_HELP #language en-US
> "Describes the state of the Boot Source Override feature."
> +
> +#string STR_BOOT_SOURCE_OVERRIDE_MODE #language en-US "Boot
> Source Override Mode"
> +#string STR_BOOT_SOURCE_OVERRIDE_MODE_HELP #language en-US
> "The BIOS Boot Mode (either Legacy or UEFI) to be used when
> BootSourceOverrideTarget boot source is booted from."
> +
> +#string STR_BOOT_SOURCE_OVERRIDE_TARGET #language en-US "Boot
> Source Override Target"
> +#string STR_BOOT_SOURCE_OVERRIDE_TARGET_HELP #language en-US
> "The current boot source to be used at next boot instead of the normal boot
> device, if BootSourceOverrideEnabled is true."
> +
> +#string STR_DISABLED #language en-US "Disabled"
> +#string STR_ONCE #language en-US "Once"
> +#string STR_CONTINUOUS #language en-US "Continuous"
> +#string STR_UEFI #language en-US "UEFI"
> +#string STR_LEGACY #language en-US "Legacy"
> +#string STR_TARGET_NONE #language en-US "None"
> +#string STR_TARGET_PXE #language en-US "Pxe"
> +#string STR_TARGET_USB #language en-US "Usb"
> +#string STR_TARGET_HDD #language en-US "Hdd"
> +#string STR_TARGET_BIOS_SETUP #language en-US "Bios Setup
> Menu"
> +#string STR_TARGET_UEFI #language en-US "Uefi Target"
> +#string STR_TARGET_UEFI_HTTP #language en-US "Uefi Http"
> diff --git a/RedfishClientPkg/RedfishClient.fdf.inc
> b/RedfishClientPkg/RedfishClient.fdf.inc
> index 7421440b..95c1eb3e 100644
> --- a/RedfishClientPkg/RedfishClient.fdf.inc
> +++ b/RedfishClientPkg/RedfishClient.fdf.inc
> @@ -21,6 +21,7 @@
> INF
> RedfishClientPkg/Features/ComputerSystemCollectionDxe/ComputerSystem
> CollectionDxe.inf
> INF RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.inf
> INF RedfishClientPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
> + INF RedfishClientPkg/Hii2RedfishBootDxe/Hii2RedfishBootDxe.inf
>
> !include RedfishClientPkg/RedfishJsonStructureDxe.fdf.inc
> #
> --
> 2.17.1
prev parent reply other threads:[~2023-06-07 7:02 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-06 13:38 [edk2-redfish-client][PATCH 2/3] RedfishClientPkg: Introduce Hii2RedfishBootDxe driver Nickle Wang
2023-06-07 7:02 ` Chang, Abner [this message]
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=MN2PR12MB396696E8C3BB153DF7178D95EA53A@MN2PR12MB3966.namprd12.prod.outlook.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