[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 <nick...@nvidia.com> > Sent: Tuesday, June 6, 2023 9:38 PM > To: devel@edk2.groups.io > Cc: Chang, Abner <abner.ch...@amd.com>; Igor Kulchytskyy > <ig...@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 <nick...@nvidia.com> > Cc: Abner Chang <abner.ch...@amd.com> > Cc: Igor Kulchytskyy <ig...@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 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#105849): https://edk2.groups.io/g/devel/message/105849 Mute This Topic: https://groups.io/mt/99363256/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-