public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Laszlo Ersek" <lersek@redhat.com>
To: devel@edk2.groups.io
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Jiewen Yao <jiewen.yao@intel.com>
Subject: [edk2-devel] [PATCH 06/37] OvmfPkg: remove LegacyBootMaintUiLib
Date: Sat, 11 Nov 2023 00:57:49 +0100	[thread overview]
Message-ID: <20231110235820.644381-7-lersek@redhat.com> (raw)
In-Reply-To: <20231110235820.644381-1-lersek@redhat.com>

LegacyBootMaintUiLib is not used by any platform at this point, remove it.

This patch removes mentions of the following CSM resources from the source
code:

- GUIDs (protocols or otherwise):
  - gEfiLegacyBiosProtocolGuid
  - gEfiLegacyDevOrderVariableGuid

- headers:
  - Guid/LegacyDevOrder.h
  - Protocol/LegacyBios.h

which extends the list of resources scheduled for removal to:

- GUIDs (protocols or otherwise):
  - gEfiLegacyBiosProtocolGuid
  - gEfiLegacyDevOrderVariableGuid

- headers:
  - Guid/LegacyDevOrder.h
  - Protocol/LegacyBios.h

Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=4588
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---
 OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiLib.uni     |   20 -
 OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiStrings.uni |   43 -
 OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiLib.inf     |   62 -
 OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUi.h          |  242 ----
 OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiVfr.h       |   73 -
 OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUi.c          | 1500 --------------------
 OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiVfr.Vfr     |   67 -
 7 files changed, 2007 deletions(-)

diff --git a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiLib.uni b/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiLib.uni
deleted file mode 100644
index f29e1449a749..000000000000
--- a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiLib.uni
+++ /dev/null
@@ -1,20 +0,0 @@
-// /** @file
-// Legacy Boot Maintenance UI module is library for BDS phase.
-//
-// Legacy Boot Maintenance UI module is library for BDS phase.
-//
-// Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
-//
-// SPDX-License-Identifier: BSD-2-Clause-Patent
-//
-// **/
-
-#string STR_MODULE_ABSTRACT
-#language en-US
-"Legacy Boot Maintenance UI module is library for BDS phase."
-
-#string STR_MODULE_DESCRIPTION
-#language en-US
-"Legacy Boot Maintenance UI module is library for BDS phase."
-
-
diff --git a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiStrings.uni b/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiStrings.uni
deleted file mode 100644
index 8d40ca1af1c0..000000000000
--- a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiStrings.uni
+++ /dev/null
@@ -1,43 +0,0 @@
-///** @file
-//
-//    String definitions for Legacy Boot Maintainece Ui.
-//
-//  Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
-//  SPDX-License-Identifier: BSD-2-Clause-Patent
-//
-//**/
-
-/=#
-
-#langdef   en-US "English"
-#langdef   fr-FR "Français"
-
-#string STR_LEGACY_BOOT_PROMPT         #language en-US  "Legacy Boot Options Menu"
-                                       #language fr-FR  "Legacy Boot Options Menu"
-#string STR_LEGACY_BOOT_HELP           #language en-US  "Manager legacy boot options in this driver."
-                                       #language fr-FR  "Manager legacy boot options in this driver."
-#string STR_FORM_FLOPPY_BOOT_TITLE     #language en-US  "Set Legacy Floppy Driver Order"
-                                       #language fr-FR  "Set Legacy Floppy Driver Order"
-#string STR_FORM_FLOPPY_BOOT_HELP      #language en-US  "Set Legacy Floppy Driver Order."
-                                       #language fr-FR  "Set Legacy Floppy Driver Order."
-#string STR_FORM_HARDDISK_BOOT_TITLE   #language en-US  "Set Legacy HARDDISK Driver Order"
-                                       #language fr-FR  "Set Legacy HARDDISK Driver Order"
-#string STR_FORM_HARDDISK_BOOT_HELP    #language en-US  "Set Legacy HARDDISK Driver Order."
-                                       #language fr-FR  "Set Legacy HARDDISK Driver Order."
-#string STR_FORM_CDROM_BOOT_TITLE      #language en-US  "Set Legacy CDROM Driver Order"
-                                       #language fr-FR  "Set Legacy CDROM Driver Order"
-#string STR_FORM_CDROM_BOOT_HELP       #language en-US  "Set Legacy CDROM Driver Order."
-                                       #language fr-FR  "Set Legacy CDROM Driver Order."
-#string STR_FORM_NET_BOOT_TITLE        #language en-US  "Set Legacy NET Driver Order"
-                                       #language fr-FR  "Set Legacy NET Driver Order"
-#string STR_FORM_NET_BOOT_HELP         #language en-US  "Set Legacy NET Driver Order."
-                                       #language fr-FR  "Set Legacy NET Driver Order."
-#string STR_FORM_BEV_BOOT_TITLE        #language en-US  "Set Legacy BEV Driver Order"
-                                       #language fr-FR  "Set Legacy BEV Driver Order"
-#string STR_FORM_BEV_BOOT_HELP         #language en-US  "Set Legacy BEV Driver Order."
-                                       #language fr-FR  "Set Legacy BEV Driver Order."
-#string STR_ORDER_CHANGE_PROMPT        #language en-US  "Change Driver Boot Order."
-                                       #language fr-FR  "Change Driver Boot Order."
-#string STR_DISABLE_LEGACY_DEVICE      #language en-US  "Disabled"
-                                       #language fr-FR  "Disabled"
-
diff --git a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiLib.inf b/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiLib.inf
deleted file mode 100644
index 9a790d34a0e4..000000000000
--- a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiLib.inf
+++ /dev/null
@@ -1,62 +0,0 @@
-## @file
-#  Legacy Boot Maintenance UI module is library for BDS phase.
-#
-#  Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = LegacyBootMaintUiLib
-  MODULE_UNI_FILE                = LegacyBootMaintUiLib.uni
-  FILE_GUID                      = 259A90B1-C151-43E5-8A71-82B4E3201F4E
-  MODULE_TYPE                    = DXE_DRIVER
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = NULL|DXE_DRIVER UEFI_APPLICATION
-  CONSTRUCTOR                    = LegacyBootMaintUiLibConstructor
-  DESTRUCTOR                     = LegacyBootMaintUiLibDestructor
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64 EBC
-#
-
-[Sources]
-  LegacyBootMaintUiVfr.h
-  LegacyBootMaintUi.h
-  LegacyBootMaintUiVfr.Vfr
-  LegacyBootMaintUiStrings.uni
-  LegacyBootMaintUi.c
-
-[Packages]
-  MdePkg/MdePkg.dec
-  MdeModulePkg/MdeModulePkg.dec
-  OvmfPkg/OvmfPkg.dec
-
-[LibraryClasses]
-  DevicePathLib
-  BaseLib
-  UefiRuntimeServicesTableLib
-  UefiBootServicesTableLib
-  DebugLib
-  HiiLib
-  MemoryAllocationLib
-  UefiBootManagerLib
-  UefiLib
-  PrintLib
-  BaseMemoryLib
-
-[Guids]
-  gEfiIfrTianoGuid                  ## SOMETIMES_PRODUCES ## UNDEFINED # Extended IFR Guid Opcode
-  gEfiIfrBootMaintenanceGuid        ## CONSUMES ## HII # BootMaint HII Package
-  gEfiLegacyDevOrderVariableGuid    ## PRODUCES ## Variable:L"LegacyDevOrder"
-
-[Protocols]
-  gEfiHiiConfigAccessProtocolGuid             ## PRODUCES
-  gEfiLegacyBiosProtocolGuid                  ## CONSUMES
-  gEfiHiiConfigRoutingProtocolGuid            ## CONSUMES
-
-[Depex]
-  gEfiHiiDatabaseProtocolGuid
-
diff --git a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUi.h b/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUi.h
deleted file mode 100644
index 65aa89327a2f..000000000000
--- a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUi.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/** @file
-  Legacy boot maintenance Ui definition.
-
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
-SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef _EFI_LEGACY_BOOT_OPTION_H_
-#define _EFI_LEGACY_BOOT_OPTION_H_
-
-#include <PiDxe.h>
-
-#include <Guid/GlobalVariable.h>
-#include <Guid/LegacyDevOrder.h>
-#include <Guid/MdeModuleHii.h>
-
-#include <Protocol/HiiConfigAccess.h>
-#include <Protocol/HiiConfigRouting.h>
-
-#include <Protocol/HiiDatabase.h>
-#include <Protocol/LegacyBios.h>
-
-#include <Library/UefiDriverEntryPoint.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/UefiRuntimeServicesTableLib.h>
-#include <Library/BaseLib.h>
-#include <Library/DevicePathLib.h>
-#include <Library/DebugLib.h>
-#include <Library/HiiLib.h>
-#include <Library/UefiBootManagerLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/UefiLib.h>
-#include <Library/PrintLib.h>
-#include <Library/BaseMemoryLib.h>
-
-#include "LegacyBootMaintUiVfr.h"
-
-#define CONFIG_OPTION_OFFSET  0x1200
-
-//
-// VarOffset that will be used to create question
-// all these values are computed from the structure
-// defined below
-//
-#define VAR_OFFSET(Field)  ((UINT16) ((UINTN) &(((LEGACY_BOOT_NV_DATA *) 0)->Field)))
-
-//
-// Question Id of Zero is invalid, so add an offset to it
-//
-#define QUESTION_ID(Field)  (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET)
-
-#define LEGACY_FD_QUESTION_ID   QUESTION_ID (LegacyFD)
-#define LEGACY_HD_QUESTION_ID   QUESTION_ID (LegacyHD)
-#define LEGACY_CD_QUESTION_ID   QUESTION_ID (LegacyCD)
-#define LEGACY_NET_QUESTION_ID  QUESTION_ID (LegacyNET)
-#define LEGACY_BEV_QUESTION_ID  QUESTION_ID (LegacyBEV)
-
-//
-// String Constant
-//
-#define STR_FLOPPY    L"Floppy Drive #%02x"
-#define STR_HARDDISK  L"HardDisk Drive #%02x"
-#define STR_CDROM     L"ATAPI CDROM Drive #%02x"
-#define STR_NET       L"NET Drive #%02x"
-#define STR_BEV       L"BEV Drive #%02x"
-
-#define STR_FLOPPY_HELP    L"Select Floppy Drive #%02x"
-#define STR_HARDDISK_HELP  L"Select HardDisk Drive #%02x"
-#define STR_CDROM_HELP     L"Select ATAPI CDROM Drive #%02x"
-#define STR_NET_HELP       L"NET Drive #%02x"
-#define STR_BEV_HELP       L"BEV Drive #%02x"
-
-#define STR_FLOPPY_TITLE    L"Set Legacy Floppy Drive Order"
-#define STR_HARDDISK_TITLE  L"Set Legacy HardDisk Drive Order"
-#define STR_CDROM_TITLE     L"Set Legacy CDROM Drive Order"
-#define STR_NET_TITLE       L"Set Legacy NET Drive Order"
-#define STR_BEV_TITLE       L"Set Legacy BEV Drive Order"
-
-//
-// These are the VFR compiler generated data representing our VFR data.
-//
-extern UINT8  LegacyBootMaintUiVfrBin[];
-
-#pragma pack(1)
-
-///
-/// HII specific Vendor Device Path definition.
-///
-typedef struct {
-  VENDOR_DEVICE_PATH          VendorDevicePath;
-  EFI_DEVICE_PATH_PROTOCOL    End;
-} HII_VENDOR_DEVICE_PATH;
-
-//
-// Variable created with this flag will be "Efi:...."
-//
-#define VAR_FLAG  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE
-
-#define LEGACY_BOOT_OPTION_CALLBACK_DATA_SIGNATURE  SIGNATURE_32 ('L', 'G', 'C', 'B')
-
-typedef struct {
-  UINTN                             Signature;
-
-  //
-  // HII relative handles
-  //
-  EFI_HII_HANDLE                    HiiHandle;
-  EFI_HANDLE                        DriverHandle;
-
-  //
-  // Produced protocols
-  //
-  EFI_HII_CONFIG_ACCESS_PROTOCOL    ConfigAccess;
-
-  //
-  // Maintain the data.
-  //
-  LEGACY_BOOT_MAINTAIN_DATA         *MaintainMapData;
-} LEGACY_BOOT_OPTION_CALLBACK_DATA;
-
-//
-// All of the signatures that will be used in list structure
-//
-#define LEGACY_MENU_OPTION_SIGNATURE  SIGNATURE_32 ('m', 'e', 'n', 'u')
-#define LEGACY_MENU_ENTRY_SIGNATURE   SIGNATURE_32 ('e', 'n', 't', 'r')
-
-#define LEGACY_LEGACY_DEV_CONTEXT_SELECT  0x9
-
-typedef struct {
-  UINTN         Signature;
-  LIST_ENTRY    Head;
-  UINTN         MenuNumber;
-} LEGACY_MENU_OPTION;
-
-typedef struct {
-  UINT16    BbsIndex;
-  CHAR16    *Description;
-} LEGACY_DEVICE_CONTEXT;
-
-typedef struct {
-  UINTN            Signature;
-  LIST_ENTRY       Link;
-  UINTN            OptionNumber;
-  UINT16           *DisplayString;
-  UINT16           *HelpString;
-  EFI_STRING_ID    DisplayStringToken;
-  EFI_STRING_ID    HelpStringToken;
-  VOID             *VariableContext;
-} LEGACY_MENU_ENTRY;
-
-typedef struct {
-  UINT16    BbsIndex;
-} LEGACY_BOOT_OPTION_BBS_DATA;
-
-#pragma pack()
-
-/**
-  This call back function is registered with Boot Manager formset.
-  When user selects a boot option, this call back function will
-  be triggered. The boot option is saved for later processing.
-
-
-  @param This            Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
-  @param Action          Specifies the type of action taken by the browser.
-  @param QuestionId      A unique value which is sent to the original exporting driver
-                         so that it can identify the type of data to expect.
-  @param Type            The type of value for the question.
-  @param Value           A pointer to the data being sent to the original exporting driver.
-  @param ActionRequest   On return, points to the action requested by the callback function.
-
-  @retval  EFI_SUCCESS           The callback successfully handled the action.
-  @retval  EFI_INVALID_PARAMETER The setup browser call this function with invalid parameters.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyBootOptionCallback (
-  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
-  );
-
-/**
-  This function allows a caller to extract the current configuration for one
-  or more named elements from the target driver.
-
-
-  @param This            - Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
-  @param Request         - A null-terminated Unicode string in <ConfigRequest> format.
-  @param 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 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 NULL, illegal syntax, or unknown name.
-  @retval  EFI_NOT_FOUND          Routing data doesn't match any storage in this driver.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyBootOptionExtractConfig (
-  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL  *This,
-  IN  CONST EFI_STRING                      Request,
-  OUT EFI_STRING                            *Progress,
-  OUT EFI_STRING                            *Results
-  );
-
-/**
-  This function processes the results of changes in configuration.
-
-
-  @param This            - Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
-  @param Configuration   - A null-terminated Unicode string in <ConfigResp> format.
-  @param 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
-LegacyBootOptionRouteConfig (
-  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL  *This,
-  IN  CONST EFI_STRING                      Configuration,
-  OUT EFI_STRING                            *Progress
-  );
-
-#endif
diff --git a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiVfr.h b/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiVfr.h
deleted file mode 100644
index 7c751fc73c70..000000000000
--- a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiVfr.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/** @file
-  Legacy Boot Maintenance UI definition.
-
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
-SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef _EFI_LEGACY_BOOT_OPTION_VFR_H_
-#define _EFI_LEGACY_BOOT_OPTION_VFR_H_
-
-#include <Guid/HiiBootMaintenanceFormset.h>
-
-#define MAX_MENU_NUMBER  100
-
-#define LEGACY_BOOT_OPTION_FORMSET_GUID  { 0x6bc75598, 0x89b4, 0x483d, { 0x91, 0x60, 0x7f, 0x46, 0x9a, 0x96, 0x35, 0x31 } }
-
-#define VARSTORE_ID_LEGACY_BOOT  0x0001
-
-#define LEGACY_BOOT_FORM_ID          0x1000
-#define LEGACY_ORDER_CHANGE_FORM_ID  0x1001
-
-#define FORM_FLOPPY_BOOT_ID    0x2000
-#define FORM_HARDDISK_BOOT_ID  0x2001
-#define FORM_CDROM_BOOT_ID     0x2002
-#define FORM_NET_BOOT_ID       0x2003
-#define FORM_BEV_BOOT_ID       0x2004
-
-#define FORM_BOOT_LEGACY_DEVICE_ID  0x9000
-#define FORM_BOOT_LEGACY_LABEL_END  0x9001
-
-#pragma pack(1)
-
-///
-/// This is the structure that will be used to store the
-/// question's current value. Use it at initialize time to
-/// set default value for each question. When using at run
-/// time, this map is returned by the callback function,
-/// so dynamically changing the question's value will be
-/// possible through this mechanism
-///
-typedef struct {
-  //
-  // Legacy Device Order Selection Storage
-  //
-  UINT16    LegacyFD[MAX_MENU_NUMBER];
-  UINT16    LegacyHD[MAX_MENU_NUMBER];
-  UINT16    LegacyCD[MAX_MENU_NUMBER];
-  UINT16    LegacyNET[MAX_MENU_NUMBER];
-  UINT16    LegacyBEV[MAX_MENU_NUMBER];
-} LEGACY_BOOT_NV_DATA;
-
-///
-/// This is the structure that will be used to store the
-/// question's current value. Use it at initialize time to
-/// set default value for each question. When using at run
-/// time, this map is returned by the callback function,
-/// so dynamically changing the question's value will be
-/// possible through this mechanism
-///
-typedef struct {
-  //
-  // Legacy Device Order Selection Storage
-  //
-  LEGACY_BOOT_NV_DATA    InitialNvData;
-  LEGACY_BOOT_NV_DATA    CurrentNvData;
-  LEGACY_BOOT_NV_DATA    LastTimeNvData;
-  UINT8                  DisableMap[32];
-} LEGACY_BOOT_MAINTAIN_DATA;
-
-#pragma pack()
-
-#endif
diff --git a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUi.c b/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUi.c
deleted file mode 100644
index 6b4fa933f26d..000000000000
--- a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUi.c
+++ /dev/null
@@ -1,1500 +0,0 @@
-/** @file
-  Legacy Boot Maintenance UI implementation.
-
-Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
-(C) Copyright 2018 Hewlett Packard Enterprise Development LP<BR>
-SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "LegacyBootMaintUi.h"
-
-LEGACY_BOOT_OPTION_CALLBACK_DATA  *mLegacyBootOptionPrivate = NULL;
-EFI_GUID                          mLegacyBootOptionGuid     = LEGACY_BOOT_OPTION_FORMSET_GUID;
-CHAR16                            mLegacyBootStorageName[]  = L"LegacyBootData";
-BBS_TYPE                          mBbsType[]                = { BBS_FLOPPY, BBS_HARDDISK, BBS_CDROM, BBS_EMBED_NETWORK, BBS_BEV_DEVICE, BBS_UNKNOWN };
-BOOLEAN                           mFirstEnterLegacyForm     = FALSE;
-
-///
-/// Legacy FD Info from LegacyBios.GetBbsInfo()
-///
-LEGACY_MENU_OPTION  LegacyFDMenu = {
-  LEGACY_MENU_OPTION_SIGNATURE,
-  { NULL },
-  0
-};
-
-///
-/// Legacy HD Info from LegacyBios.GetBbsInfo()
-///
-LEGACY_MENU_OPTION  LegacyHDMenu = {
-  LEGACY_MENU_OPTION_SIGNATURE,
-  { NULL },
-  0
-};
-
-///
-/// Legacy CD Info from LegacyBios.GetBbsInfo()
-///
-LEGACY_MENU_OPTION  LegacyCDMenu = {
-  LEGACY_MENU_OPTION_SIGNATURE,
-  { NULL },
-  0
-};
-
-///
-/// Legacy NET Info from LegacyBios.GetBbsInfo()
-///
-LEGACY_MENU_OPTION  LegacyNETMenu = {
-  LEGACY_MENU_OPTION_SIGNATURE,
-  { NULL },
-  0
-};
-
-///
-/// Legacy NET Info from LegacyBios.GetBbsInfo()
-///
-LEGACY_MENU_OPTION  LegacyBEVMenu = {
-  LEGACY_MENU_OPTION_SIGNATURE,
-  { NULL },
-  0
-};
-
-VOID                *mLegacyStartOpCodeHandle = NULL;
-VOID                *mLegacyEndOpCodeHandle   = NULL;
-EFI_IFR_GUID_LABEL  *mLegacyStartLabel        = NULL;
-EFI_IFR_GUID_LABEL  *mLegacyEndLabel          = NULL;
-
-HII_VENDOR_DEVICE_PATH  mLegacyBootOptionHiiVendorDevicePath = {
-  {
-    {
-      HARDWARE_DEVICE_PATH,
-      HW_VENDOR_DP,
-      {
-        (UINT8)(sizeof (VENDOR_DEVICE_PATH)),
-        (UINT8)((sizeof (VENDOR_DEVICE_PATH)) >> 8)
-      }
-    },
-    { 0x6bc75598, 0x89b4, 0x483d, { 0x91, 0x60, 0x7f, 0x46, 0x9a, 0x96, 0x35, 0x31 }
-    }
-  },
-  {
-    END_DEVICE_PATH_TYPE,
-    END_ENTIRE_DEVICE_PATH_SUBTYPE,
-    {
-      (UINT8)(END_DEVICE_PATH_LENGTH),
-      (UINT8)((END_DEVICE_PATH_LENGTH) >> 8)
-    }
-  }
-};
-
-/**
-
-  Build the LegacyFDMenu LegacyHDMenu LegacyCDMenu according to LegacyBios.GetBbsInfo().
-
-**/
-VOID
-GetLegacyOptions (
-  VOID
-  );
-
-/**
-
-  Base on the L"LegacyDevOrder" variable to build the current order data.
-
-**/
-VOID
-GetLegacyOptionsOrder (
-  VOID
-  );
-
-/**
-  Re-order the Boot Option according to the DevOrder.
-
-  The routine re-orders the Boot Option in BootOption array according to
-  the order specified by DevOrder.
-
-  @param DevOrder           Pointer to buffer containing the BBS Index,
-                            high 8-bit value 0xFF indicating a disabled boot option
-  @param DevOrderCount      Count of the BBS Index
-  @param EnBootOption       Callee allocated buffer containing the enabled Boot Option Numbers
-  @param EnBootOptionCount  Count of the enabled Boot Option Numbers
-  @param DisBootOption      Callee allocated buffer containing the disabled Boot Option Numbers
-  @param DisBootOptionCount Count of the disabled Boot Option Numbers
-
-  @return EFI_SUCCESS       The function completed successfully.
-  @retval other             Contain some error, details see  the status return by gRT->SetVariable.
-**/
-EFI_STATUS
-OrderLegacyBootOption4SameType (
-  UINT16  *DevOrder,
-  UINTN   DevOrderCount,
-  UINT16  **EnBootOption,
-  UINTN   *EnBootOptionCount,
-  UINT16  **DisBootOption,
-  UINTN   *DisBootOptionCount
-  )
-{
-  EFI_STATUS  Status;
-  UINT16      *NewBootOption;
-  UINT16      *BootOrder;
-  UINTN       BootOrderSize;
-  UINTN       Index;
-  UINTN       StartPosition;
-
-  EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;
-
-  CHAR16  OptionName[sizeof ("Boot####")];
-  UINT16  *BbsIndexArray;
-  UINT16  *DeviceTypeArray;
-
-  GetEfiGlobalVariable2 (L"BootOrder", (VOID **)&BootOrder, &BootOrderSize);
-  ASSERT (BootOrder != NULL);
-
-  BbsIndexArray       = AllocatePool (BootOrderSize);
-  DeviceTypeArray     = AllocatePool (BootOrderSize);
-  *EnBootOption       = AllocatePool (BootOrderSize);
-  *DisBootOption      = AllocatePool (BootOrderSize);
-  *DisBootOptionCount = 0;
-  *EnBootOptionCount  = 0;
-  Index               = 0;
-  Status              = EFI_SUCCESS;
-
-  ASSERT (BbsIndexArray != NULL);
-  ASSERT (DeviceTypeArray != NULL);
-  ASSERT (*EnBootOption != NULL);
-  ASSERT (*DisBootOption != NULL);
-
-  for (Index = 0; Index < BootOrderSize / sizeof (UINT16); Index++) {
-    UnicodeSPrint (OptionName, sizeof (OptionName), L"Boot%04x", BootOrder[Index]);
-    Status = EfiBootManagerVariableToLoadOption (OptionName, &BootOption);
-    ASSERT_EFI_ERROR (Status);
-
-    if ((DevicePathType (BootOption.FilePath) == BBS_DEVICE_PATH) &&
-        (DevicePathSubType (BootOption.FilePath) == BBS_BBS_DP))
-    {
-      //
-      // Legacy Boot Option
-      //
-      ASSERT (BootOption.OptionalDataSize == sizeof (LEGACY_BOOT_OPTION_BBS_DATA));
-
-      DeviceTypeArray[Index] = ((BBS_BBS_DEVICE_PATH *)BootOption.FilePath)->DeviceType;
-      BbsIndexArray[Index]   = ((LEGACY_BOOT_OPTION_BBS_DATA *)BootOption.OptionalData)->BbsIndex;
-    } else {
-      DeviceTypeArray[Index] = BBS_TYPE_UNKNOWN;
-      BbsIndexArray[Index]   = 0xFFFF;
-    }
-
-    EfiBootManagerFreeLoadOption (&BootOption);
-  }
-
-  //
-  // Record the corresponding Boot Option Numbers according to the DevOrder
-  // Record the EnBootOption and DisBootOption according to the DevOrder
-  //
-  StartPosition = BootOrderSize / sizeof (UINT16);
-  NewBootOption = AllocatePool (DevOrderCount * sizeof (UINT16));
-  ASSERT (NewBootOption != NULL);
-  while (DevOrderCount-- != 0) {
-    for (Index = 0; Index < BootOrderSize / sizeof (UINT16); Index++) {
-      if (BbsIndexArray[Index] == (DevOrder[DevOrderCount] & 0xFF)) {
-        StartPosition                = MIN (StartPosition, Index);
-        NewBootOption[DevOrderCount] = BootOrder[Index];
-
-        if ((DevOrder[DevOrderCount] & 0xFF00) == 0xFF00) {
-          (*DisBootOption)[*DisBootOptionCount] = BootOrder[Index];
-          (*DisBootOptionCount)++;
-        } else {
-          (*EnBootOption)[*EnBootOptionCount] = BootOrder[Index];
-          (*EnBootOptionCount)++;
-        }
-
-        break;
-      }
-    }
-  }
-
-  //
-  // Overwrite the old BootOption
-  //
-  CopyMem (&BootOrder[StartPosition], NewBootOption, (*DisBootOptionCount + *EnBootOptionCount) * sizeof (UINT16));
-  Status = gRT->SetVariable (
-                  L"BootOrder",
-                  &gEfiGlobalVariableGuid,
-                  VAR_FLAG,
-                  BootOrderSize,
-                  BootOrder
-                  );
-
-  FreePool (NewBootOption);
-  FreePool (DeviceTypeArray);
-  FreePool (BbsIndexArray);
-
-  return Status;
-}
-
-/**
-  Update the legacy BBS boot option. L"LegacyDevOrder" and gEfiLegacyDevOrderVariableGuid EFI Variable
-  is updated with the new Legacy Boot order. The EFI Variable of "Boot####" and gEfiGlobalVariableGuid
-  is also updated.
-
-  @param NVMapData   The data for legacy BBS boot.
-
-  @return EFI_SUCCESS           The function completed successfully.
-  @retval EFI_NOT_FOUND         If L"LegacyDevOrder" and gEfiLegacyDevOrderVariableGuid EFI Variable can not be found.
-  @retval EFI_OUT_OF_RESOURCES  Fail to allocate memory resource
-  @retval other                 Contain some error, details see  the status return by gRT->SetVariable.
-**/
-EFI_STATUS
-UpdateBBSOption (
-  IN LEGACY_BOOT_NV_DATA  *NVMapData
-  )
-{
-  UINTN                   Index;
-  UINTN                   Index2;
-  UINTN                   CurrentType;
-  VOID                    *BootOptionVar;
-  CHAR16                  VarName[100];
-  UINTN                   OptionSize;
-  EFI_STATUS              Status;
-  UINT32                  *Attribute;
-  LEGACY_MENU_OPTION      *OptionMenu;
-  UINT16                  *LegacyDev;
-  UINT16                  *InitialLegacyDev;
-  UINT8                   *VarData;
-  UINTN                   VarSize;
-  LEGACY_DEV_ORDER_ENTRY  *DevOrder;
-  UINT8                   *OriginalPtr;
-  UINT8                   *DisMap;
-  UINTN                   Pos;
-  UINTN                   Bit;
-  UINT16                  *NewOrder;
-  UINT16                  Tmp;
-  UINT16                  *EnBootOption;
-  UINTN                   EnBootOptionCount;
-  UINT16                  *DisBootOption;
-  UINTN                   DisBootOptionCount;
-  UINTN                   BufferSize;
-
-  DisMap        = NULL;
-  NewOrder      = NULL;
-  CurrentType   = 0;
-  EnBootOption  = NULL;
-  DisBootOption = NULL;
-
-  DisMap = mLegacyBootOptionPrivate->MaintainMapData->DisableMap;
-  Status = EFI_SUCCESS;
-
-  //
-  // Update the Variable "LegacyDevOrder"
-  //
-  GetVariable2 (VAR_LEGACY_DEV_ORDER, &gEfiLegacyDevOrderVariableGuid, (VOID **)&VarData, &VarSize);
-  if (VarData == NULL) {
-    return EFI_NOT_FOUND;
-  }
-
-  OriginalPtr = VarData;
-
-  while (mBbsType[CurrentType] != BBS_UNKNOWN) {
-    switch (mBbsType[CurrentType]) {
-      case BBS_FLOPPY:
-        OptionMenu       = (LEGACY_MENU_OPTION *)&LegacyFDMenu;
-        LegacyDev        = NVMapData->LegacyFD;
-        InitialLegacyDev = mLegacyBootOptionPrivate->MaintainMapData->InitialNvData.LegacyFD;
-        BufferSize       = sizeof (NVMapData->LegacyFD);
-        break;
-
-      case BBS_HARDDISK:
-        OptionMenu       = (LEGACY_MENU_OPTION *)&LegacyHDMenu;
-        LegacyDev        = NVMapData->LegacyHD;
-        InitialLegacyDev = mLegacyBootOptionPrivate->MaintainMapData->InitialNvData.LegacyHD;
-
-        BufferSize = sizeof (NVMapData->LegacyHD);
-        break;
-
-      case BBS_CDROM:
-        OptionMenu       = (LEGACY_MENU_OPTION *)&LegacyCDMenu;
-        LegacyDev        = NVMapData->LegacyCD;
-        InitialLegacyDev = mLegacyBootOptionPrivate->MaintainMapData->InitialNvData.LegacyCD;
-        BufferSize       = sizeof (NVMapData->LegacyCD);
-        break;
-
-      case BBS_EMBED_NETWORK:
-        OptionMenu       = (LEGACY_MENU_OPTION *)&LegacyNETMenu;
-        LegacyDev        = NVMapData->LegacyNET;
-        InitialLegacyDev = mLegacyBootOptionPrivate->MaintainMapData->InitialNvData.LegacyNET;
-        BufferSize       = sizeof (NVMapData->LegacyNET);
-        break;
-
-      default:
-        ASSERT (mBbsType[CurrentType] == BBS_BEV_DEVICE);
-        OptionMenu       = (LEGACY_MENU_OPTION *)&LegacyBEVMenu;
-        LegacyDev        = NVMapData->LegacyBEV;
-        InitialLegacyDev = mLegacyBootOptionPrivate->MaintainMapData->InitialNvData.LegacyBEV;
-        BufferSize       = sizeof (NVMapData->LegacyBEV);
-        break;
-    }
-
-    //
-    // Check whether has value changed.
-    //
-    if (CompareMem (LegacyDev, InitialLegacyDev, BufferSize) == 0) {
-      CurrentType++;
-      continue;
-    }
-
-    DevOrder = (LEGACY_DEV_ORDER_ENTRY *)OriginalPtr;
-    while (VarData < OriginalPtr + VarSize) {
-      if (DevOrder->BbsType == mBbsType[CurrentType]) {
-        break;
-      }
-
-      VarData += sizeof (BBS_TYPE) + DevOrder->Length;
-      DevOrder = (LEGACY_DEV_ORDER_ENTRY *)VarData;
-    }
-
-    if (VarData >= OriginalPtr + VarSize) {
-      FreePool (OriginalPtr);
-      return EFI_NOT_FOUND;
-    }
-
-    NewOrder = AllocateZeroPool (DevOrder->Length - sizeof (DevOrder->Length));
-    if (NewOrder == NULL) {
-      FreePool (OriginalPtr);
-      return EFI_OUT_OF_RESOURCES;
-    }
-
-    for (Index = 0; Index < OptionMenu->MenuNumber; Index++) {
-      if (0xFF == LegacyDev[Index]) {
-        break;
-      }
-
-      NewOrder[Index] = LegacyDev[Index];
-    }
-
-    //
-    // Only the enable/disable state of each boot device with same device type can be changed,
-    // so we can count on the index information in DevOrder.
-    // DisMap bit array is the only reliable source to check a device's en/dis state,
-    // so we use DisMap to set en/dis state of each item in NewOrder array
-    //
-    for (Index2 = 0; Index2 < OptionMenu->MenuNumber; Index2++) {
-      Tmp = (UINT16)(DevOrder->Data[Index2] & 0xFF);
-      Pos = Tmp / 8;
-      Bit = 7 - (Tmp % 8);
-      if ((DisMap[Pos] & (1 << Bit)) != 0) {
-        NewOrder[Index] = (UINT16)(0xFF00 | Tmp);
-        Index++;
-      }
-    }
-
-    CopyMem (
-      DevOrder->Data,
-      NewOrder,
-      DevOrder->Length - sizeof (DevOrder->Length)
-      );
-    FreePool (NewOrder);
-
-    //
-    // Update BootOrder and Boot####.Attribute
-    //
-    // 1. Re-order the Option Number in BootOrder according to Legacy Dev Order
-    //
-    ASSERT (OptionMenu->MenuNumber == DevOrder->Length / sizeof (UINT16) - 1);
-
-    Status = OrderLegacyBootOption4SameType (
-               DevOrder->Data,
-               DevOrder->Length / sizeof (UINT16) - 1,
-               &EnBootOption,
-               &EnBootOptionCount,
-               &DisBootOption,
-               &DisBootOptionCount
-               );
-    if (EFI_ERROR (Status)) {
-      goto Fail;
-    }
-
-    //
-    // 2. Deactivate the DisBootOption and activate the EnBootOption
-    //
-    for (Index = 0; Index < DisBootOptionCount; Index++) {
-      UnicodeSPrint (VarName, sizeof (VarName), L"Boot%04x", DisBootOption[Index]);
-      GetEfiGlobalVariable2 (VarName, (VOID **)&BootOptionVar, &OptionSize);
-      if (BootOptionVar != NULL) {
-        Attribute   = (UINT32 *)BootOptionVar;
-        *Attribute &= ~LOAD_OPTION_ACTIVE;
-
-        Status = gRT->SetVariable (
-                        VarName,
-                        &gEfiGlobalVariableGuid,
-                        VAR_FLAG,
-                        OptionSize,
-                        BootOptionVar
-                        );
-
-        FreePool (BootOptionVar);
-      }
-    }
-
-    for (Index = 0; Index < EnBootOptionCount; Index++) {
-      UnicodeSPrint (VarName, sizeof (VarName), L"Boot%04x", EnBootOption[Index]);
-      GetEfiGlobalVariable2 (VarName, (VOID **)&BootOptionVar, &OptionSize);
-      if (BootOptionVar != NULL) {
-        Attribute   = (UINT32 *)BootOptionVar;
-        *Attribute |= LOAD_OPTION_ACTIVE;
-
-        Status = gRT->SetVariable (
-                        VarName,
-                        &gEfiGlobalVariableGuid,
-                        VAR_FLAG,
-                        OptionSize,
-                        BootOptionVar
-                        );
-
-        FreePool (BootOptionVar);
-      }
-    }
-
-    FreePool (EnBootOption);
-    FreePool (DisBootOption);
-
-    CurrentType++;
-  }
-
-  Status = gRT->SetVariable (
-                  VAR_LEGACY_DEV_ORDER,
-                  &gEfiLegacyDevOrderVariableGuid,
-                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,
-                  VarSize,
-                  OriginalPtr
-                  );
-
-Fail:
-  if (EnBootOption != NULL) {
-    FreePool (EnBootOption);
-  }
-
-  if (DisBootOption != NULL) {
-    FreePool (DisBootOption);
-  }
-
-  FreePool (OriginalPtr);
-  return Status;
-}
-
-/**
-  This function allows a caller to extract the current configuration for one
-  or more named elements from the target driver.
-
-
-  @param This            Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
-  @param Request         A null-terminated Unicode string in <ConfigRequest> format.
-  @param 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 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
-LegacyBootOptionExtractConfig (
-  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;
-  return EFI_NOT_FOUND;
-}
-
-/**
-  This function processes the results of changes in configuration.
-
-
-  @param This            Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
-  @param Configuration   A null-terminated Unicode string in <ConfigResp> format.
-  @param 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
-LegacyBootOptionRouteConfig (
-  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL  *This,
-  IN  CONST EFI_STRING                      Configuration,
-  OUT       EFI_STRING                      *Progress
-  )
-{
-  EFI_STATUS                       Status;
-  EFI_HII_CONFIG_ROUTING_PROTOCOL  *ConfigRouting;
-  LEGACY_BOOT_NV_DATA              *CurrentNVMapData;
-  UINTN                            BufferSize;
-
-  if ((Configuration == NULL) || (Progress == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  *Progress = Configuration;
-
-  //
-  // Check routing data in <ConfigHdr>.
-  // Note: there is no name for Name/Value storage, only GUID will be checked
-  //
-  if (!HiiIsConfigHdrMatch (Configuration, &mLegacyBootOptionGuid, mLegacyBootStorageName)) {
-    return EFI_NOT_FOUND;
-  }
-
-  Status = gBS->LocateProtocol (
-                  &gEfiHiiConfigRoutingProtocolGuid,
-                  NULL,
-                  (VOID **)&ConfigRouting
-                  );
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-
-  //
-  // Convert <ConfigResp> to buffer data by helper function ConfigToBlock()
-  //
-  CurrentNVMapData = &mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData;
-  Status           = ConfigRouting->ConfigToBlock (
-                                      ConfigRouting,
-                                      Configuration,
-                                      (UINT8 *)CurrentNVMapData,
-                                      &BufferSize,
-                                      Progress
-                                      );
-  ASSERT_EFI_ERROR (Status);
-
-  Status = UpdateBBSOption (CurrentNVMapData);
-
-  return Status;
-}
-
-/**
-  Refresh the global UpdateData structure.
-
-**/
-VOID
-RefreshLegacyUpdateData (
-  VOID
-  )
-{
-  //
-  // Free current updated date
-  //
-  if (mLegacyStartOpCodeHandle != NULL) {
-    HiiFreeOpCodeHandle (mLegacyStartOpCodeHandle);
-  }
-
-  if (mLegacyEndOpCodeHandle != NULL) {
-    HiiFreeOpCodeHandle (mLegacyEndOpCodeHandle);
-  }
-
-  //
-  // Create new OpCode Handle
-  //
-  mLegacyStartOpCodeHandle = HiiAllocateOpCodeHandle ();
-  mLegacyEndOpCodeHandle   = HiiAllocateOpCodeHandle ();
-
-  //
-  // Create Hii Extend Label OpCode as the start opcode
-  //
-  mLegacyStartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode (
-                                              mLegacyStartOpCodeHandle,
-                                              &gEfiIfrTianoGuid,
-                                              NULL,
-                                              sizeof (EFI_IFR_GUID_LABEL)
-                                              );
-  mLegacyStartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;
-
-  mLegacyStartLabel->Number = FORM_BOOT_LEGACY_DEVICE_ID;
-
-  //
-  // Create Hii Extend Label OpCode as the start opcode
-  //
-  mLegacyEndLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode (
-                                            mLegacyEndOpCodeHandle,
-                                            &gEfiIfrTianoGuid,
-                                            NULL,
-                                            sizeof (EFI_IFR_GUID_LABEL)
-                                            );
-  mLegacyEndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;
-
-  mLegacyEndLabel->Number = FORM_BOOT_LEGACY_LABEL_END;
-}
-
-/**
-  Get the Menu Entry from the list in Menu Entry List.
-
-  If MenuNumber is great or equal to the number of Menu
-  Entry in the list, then ASSERT.
-
-  @param MenuOption      The Menu Entry List to read the menu entry.
-  @param MenuNumber      The index of Menu Entry.
-
-  @return The Menu Entry.
-
-**/
-LEGACY_MENU_ENTRY *
-GetMenuEntry (
-  LEGACY_MENU_OPTION  *MenuOption,
-  UINTN               MenuNumber
-  )
-{
-  LEGACY_MENU_ENTRY  *NewMenuEntry;
-  UINTN              Index;
-  LIST_ENTRY         *List;
-
-  ASSERT (MenuNumber < MenuOption->MenuNumber);
-
-  List = MenuOption->Head.ForwardLink;
-  for (Index = 0; Index < MenuNumber; Index++) {
-    List = List->ForwardLink;
-  }
-
-  NewMenuEntry = CR (List, LEGACY_MENU_ENTRY, Link, LEGACY_MENU_ENTRY_SIGNATURE);
-
-  return NewMenuEntry;
-}
-
-/**
-  Create string tokens for a menu from its help strings and display strings
-
-  @param HiiHandle          Hii Handle of the package to be updated.
-  @param MenuOption         The Menu whose string tokens need to be created
-
-**/
-VOID
-CreateLegacyMenuStringToken (
-  IN EFI_HII_HANDLE      HiiHandle,
-  IN LEGACY_MENU_OPTION  *MenuOption
-  )
-{
-  LEGACY_MENU_ENTRY  *NewMenuEntry;
-  UINTN              Index;
-
-  for (Index = 0; Index < MenuOption->MenuNumber; Index++) {
-    NewMenuEntry = GetMenuEntry (MenuOption, Index);
-
-    NewMenuEntry->DisplayStringToken = HiiSetString (
-                                         HiiHandle,
-                                         0,
-                                         NewMenuEntry->DisplayString,
-                                         NULL
-                                         );
-
-    if (NULL == NewMenuEntry->HelpString) {
-      NewMenuEntry->HelpStringToken = NewMenuEntry->DisplayStringToken;
-    } else {
-      NewMenuEntry->HelpStringToken = HiiSetString (
-                                        HiiHandle,
-                                        0,
-                                        NewMenuEntry->HelpString,
-                                        NULL
-                                        );
-    }
-  }
-}
-
-/**
-  Create a dynamic page so that Legacy Device boot order
-  can be set for specified device type.
-
-  @param UpdatePageId    The form ID. It also specifies the legacy device type.
-
-
-**/
-VOID
-UpdateLegacyDeviceOrderPage (
-  IN UINT16  UpdatePageId
-  )
-{
-  LEGACY_MENU_OPTION  *OptionMenu;
-  LEGACY_MENU_ENTRY   *NewMenuEntry;
-  EFI_STRING_ID       StrRef;
-  EFI_STRING_ID       StrRefHelp;
-  UINT16              *Default;
-  UINT16              Index;
-  UINT16              Key;
-  CHAR16              String[100];
-  CHAR16              *TypeStr;
-  CHAR16              *TypeStrHelp;
-  CHAR16              *FormTitle;
-  VOID                *OptionsOpCodeHandle;
-  VOID                *DefaultOpCodeHandle;
-
-  Key         = 0;
-  StrRef      = 0;
-  StrRefHelp  = 0;
-  OptionMenu  = NULL;
-  TypeStr     = NULL;
-  TypeStrHelp = NULL;
-  Default     = NULL;
-
-  RefreshLegacyUpdateData ();
-
-  //
-  // Create oneof option list
-  //
-  switch (UpdatePageId) {
-    case FORM_FLOPPY_BOOT_ID:
-      OptionMenu  = (LEGACY_MENU_OPTION *)&LegacyFDMenu;
-      Key         = (UINT16)LEGACY_FD_QUESTION_ID;
-      TypeStr     = STR_FLOPPY;
-      TypeStrHelp = STR_FLOPPY_HELP;
-      FormTitle   = STR_FLOPPY_TITLE;
-      Default     = mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData.LegacyFD;
-      break;
-
-    case FORM_HARDDISK_BOOT_ID:
-      OptionMenu  = (LEGACY_MENU_OPTION *)&LegacyHDMenu;
-      Key         = (UINT16)LEGACY_HD_QUESTION_ID;
-      TypeStr     = STR_HARDDISK;
-      TypeStrHelp = STR_HARDDISK_HELP;
-      FormTitle   = STR_HARDDISK_TITLE;
-      Default     = mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData.LegacyHD;
-      break;
-
-    case FORM_CDROM_BOOT_ID:
-      OptionMenu  = (LEGACY_MENU_OPTION *)&LegacyCDMenu;
-      Key         = (UINT16)LEGACY_CD_QUESTION_ID;
-      TypeStr     = STR_CDROM;
-      TypeStrHelp = STR_CDROM_HELP;
-      FormTitle   = STR_CDROM_TITLE;
-      Default     = mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData.LegacyCD;
-      break;
-
-    case FORM_NET_BOOT_ID:
-      OptionMenu  = (LEGACY_MENU_OPTION *)&LegacyNETMenu;
-      Key         = (UINT16)LEGACY_NET_QUESTION_ID;
-      TypeStr     = STR_NET;
-      TypeStrHelp = STR_NET_HELP;
-      FormTitle   = STR_NET_TITLE;
-      Default     = mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData.LegacyNET;
-      break;
-
-    case FORM_BEV_BOOT_ID:
-      OptionMenu  = (LEGACY_MENU_OPTION *)&LegacyBEVMenu;
-      Key         = (UINT16)LEGACY_BEV_QUESTION_ID;
-      TypeStr     = STR_BEV;
-      TypeStrHelp = STR_BEV_HELP;
-      FormTitle   = STR_BEV_TITLE;
-      Default     = mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData.LegacyBEV;
-      break;
-
-    default:
-      DEBUG ((DEBUG_ERROR, "Invalid command ID for updating page!\n"));
-      return;
-  }
-
-  HiiSetString (mLegacyBootOptionPrivate->HiiHandle, STRING_TOKEN (STR_ORDER_CHANGE_PROMPT), FormTitle, NULL);
-
-  CreateLegacyMenuStringToken (mLegacyBootOptionPrivate->HiiHandle, OptionMenu);
-
-  OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();
-  ASSERT (OptionsOpCodeHandle != NULL);
-
-  for (Index = 0; Index < OptionMenu->MenuNumber; Index++) {
-    NewMenuEntry = GetMenuEntry (OptionMenu, Index);
-    //
-    // Create OneOf for each legacy device
-    //
-    HiiCreateOneOfOptionOpCode (
-      OptionsOpCodeHandle,
-      NewMenuEntry->DisplayStringToken,
-      0,
-      EFI_IFR_TYPE_NUM_SIZE_16,
-      ((LEGACY_DEVICE_CONTEXT *)NewMenuEntry->VariableContext)->BbsIndex
-      );
-  }
-
-  //
-  // Create OneOf for item "Disabled"
-  //
-  HiiCreateOneOfOptionOpCode (
-    OptionsOpCodeHandle,
-    STRING_TOKEN (STR_DISABLE_LEGACY_DEVICE),
-    0,
-    EFI_IFR_TYPE_NUM_SIZE_16,
-    0xFF
-    );
-
-  //
-  // Create oneof tag here for FD/HD/CD #1 #2
-  //
-  for (Index = 0; Index < OptionMenu->MenuNumber; Index++) {
-    DefaultOpCodeHandle = HiiAllocateOpCodeHandle ();
-    ASSERT (DefaultOpCodeHandle != NULL);
-
-    HiiCreateDefaultOpCode (
-      DefaultOpCodeHandle,
-      EFI_HII_DEFAULT_CLASS_STANDARD,
-      EFI_IFR_TYPE_NUM_SIZE_16,
-      *Default++
-      );
-
-    //
-    // Create the string for oneof tag
-    //
-    UnicodeSPrint (String, sizeof (String), TypeStr, Index);
-    StrRef = HiiSetString (mLegacyBootOptionPrivate->HiiHandle, 0, String, NULL);
-
-    UnicodeSPrint (String, sizeof (String), TypeStrHelp, Index);
-    StrRefHelp = HiiSetString (mLegacyBootOptionPrivate->HiiHandle, 0, String, NULL);
-
-    HiiCreateOneOfOpCode (
-      mLegacyStartOpCodeHandle,
-      (EFI_QUESTION_ID)(Key + Index),
-      VARSTORE_ID_LEGACY_BOOT,
-      (UINT16)(Key + Index * 2 - CONFIG_OPTION_OFFSET),
-      StrRef,
-      StrRefHelp,
-      EFI_IFR_FLAG_CALLBACK,
-      EFI_IFR_NUMERIC_SIZE_2,
-      OptionsOpCodeHandle,
-      DefaultOpCodeHandle // NULL //
-      );
-
-    HiiFreeOpCodeHandle (DefaultOpCodeHandle);
-  }
-
-  HiiUpdateForm (
-    mLegacyBootOptionPrivate->HiiHandle,
-    &mLegacyBootOptionGuid,
-    LEGACY_ORDER_CHANGE_FORM_ID,
-    mLegacyStartOpCodeHandle,
-    mLegacyEndOpCodeHandle
-    );
-
-  HiiFreeOpCodeHandle (OptionsOpCodeHandle);
-}
-
-/**
-  Adjust question value when one question value has been changed.
-
-  @param QuestionId    The question id for the value changed question.
-  @param Value         The value for the changed question.
-
-**/
-VOID
-AdjustOptionValue (
-  IN  UINT16              QuestionId,
-  IN  EFI_IFR_TYPE_VALUE  *Value
-  )
-{
-  UINTN                Number;
-  UINT16               *Default;
-  LEGACY_BOOT_NV_DATA  *CurrentNVMap;
-  UINT16               *CurrentVal;
-  UINTN                Index;
-  UINTN                Index2;
-  UINTN                Index3;
-  UINTN                NewValuePos;
-  UINTN                OldValue;
-  UINTN                NewValue;
-  UINT8                *DisMap;
-  UINTN                Pos;
-  UINTN                Bit;
-
-  Number      = 0;
-  CurrentVal  = 0;
-  Default     = NULL;
-  NewValue    = 0;
-  NewValuePos = 0;
-  OldValue    = 0;
-
-  //
-  // Update Select FD/HD/CD/NET/BEV Order Form
-  //
-  ASSERT ((QuestionId >= LEGACY_FD_QUESTION_ID) && (QuestionId < LEGACY_BEV_QUESTION_ID + MAX_MENU_NUMBER));
-
-  CurrentNVMap = &mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData;
-  HiiGetBrowserData (&mLegacyBootOptionGuid, mLegacyBootStorageName, sizeof (LEGACY_BOOT_NV_DATA), (UINT8 *)CurrentNVMap);
-  DisMap = mLegacyBootOptionPrivate->MaintainMapData->DisableMap;
-
-  if ((QuestionId >= LEGACY_FD_QUESTION_ID) && (QuestionId < LEGACY_FD_QUESTION_ID + MAX_MENU_NUMBER)) {
-    Number     = (UINT16)LegacyFDMenu.MenuNumber;
-    CurrentVal = CurrentNVMap->LegacyFD;
-    Default    = mLegacyBootOptionPrivate->MaintainMapData->LastTimeNvData.LegacyFD;
-  } else if ((QuestionId >= LEGACY_HD_QUESTION_ID) && (QuestionId < LEGACY_HD_QUESTION_ID + MAX_MENU_NUMBER)) {
-    Number     = (UINT16)LegacyHDMenu.MenuNumber;
-    CurrentVal = CurrentNVMap->LegacyHD;
-    Default    = mLegacyBootOptionPrivate->MaintainMapData->LastTimeNvData.LegacyHD;
-  } else if ((QuestionId >= LEGACY_CD_QUESTION_ID) && (QuestionId < LEGACY_CD_QUESTION_ID + MAX_MENU_NUMBER)) {
-    Number     = (UINT16)LegacyCDMenu.MenuNumber;
-    CurrentVal = CurrentNVMap->LegacyCD;
-    Default    = mLegacyBootOptionPrivate->MaintainMapData->LastTimeNvData.LegacyCD;
-  } else if ((QuestionId >= LEGACY_NET_QUESTION_ID) && (QuestionId < LEGACY_NET_QUESTION_ID + MAX_MENU_NUMBER)) {
-    Number     = (UINT16)LegacyNETMenu.MenuNumber;
-    CurrentVal = CurrentNVMap->LegacyNET;
-    Default    = mLegacyBootOptionPrivate->MaintainMapData->LastTimeNvData.LegacyNET;
-  } else if ((QuestionId >= LEGACY_BEV_QUESTION_ID) && (QuestionId < LEGACY_BEV_QUESTION_ID + MAX_MENU_NUMBER)) {
-    Number     = (UINT16)LegacyBEVMenu.MenuNumber;
-    CurrentVal = CurrentNVMap->LegacyBEV;
-    Default    = mLegacyBootOptionPrivate->MaintainMapData->LastTimeNvData.LegacyBEV;
-  }
-
-  //
-  //  First, find the different position
-  //  if there is change, it should be only one
-  //
-  for (Index = 0; Index < Number; Index++) {
-    if (CurrentVal[Index] != Default[Index]) {
-      OldValue = Default[Index];
-      NewValue = CurrentVal[Index];
-      break;
-    }
-  }
-
-  if (Index != Number) {
-    //
-    // there is change, now process
-    //
-    if (0xFF == NewValue) {
-      //
-      // This item will be disable
-      // Just move the items behind this forward to overlap it
-      //
-      Pos         = OldValue / 8;
-      Bit         = 7 - (OldValue % 8);
-      DisMap[Pos] = (UINT8)(DisMap[Pos] | (UINT8)(1 << Bit));
-      for (Index2 = Index; Index2 < Number - 1; Index2++) {
-        CurrentVal[Index2] = CurrentVal[Index2 + 1];
-      }
-
-      CurrentVal[Index2] = 0xFF;
-    } else {
-      for (Index2 = 0; Index2 < Number; Index2++) {
-        if (Index2 == Index) {
-          continue;
-        }
-
-        if (Default[Index2] == NewValue) {
-          //
-          // If NewValue is in OldLegacyDev array
-          // remember its old position
-          //
-          NewValuePos = Index2;
-          break;
-        }
-      }
-
-      if (Index2 != Number) {
-        //
-        // We will change current item to an existing item
-        // (It's hard to describe here, please read code, it's like a cycle-moving)
-        //
-        for (Index2 = NewValuePos; Index2 != Index;) {
-          if (NewValuePos < Index) {
-            CurrentVal[Index2] = Default[Index2 + 1];
-            Index2++;
-          } else {
-            CurrentVal[Index2] = Default[Index2 - 1];
-            Index2--;
-          }
-        }
-      } else {
-        //
-        // If NewValue is not in OldlegacyDev array, we are changing to a disabled item
-        // so we should modify DisMap to reflect the change
-        //
-        Pos         = NewValue / 8;
-        Bit         = 7 - (NewValue % 8);
-        DisMap[Pos] = (UINT8)(DisMap[Pos] & (~(UINT8)(1 << Bit)));
-        if (0xFF != OldValue) {
-          //
-          // Because NewValue is a item that was disabled before
-          // so after changing the OldValue should be disabled
-          // actually we are doing a swap of enable-disable states of two items
-          //
-          Pos         = OldValue / 8;
-          Bit         = 7 - (OldValue % 8);
-          DisMap[Pos] = (UINT8)(DisMap[Pos] | (UINT8)(1 << Bit));
-        }
-      }
-    }
-
-    //
-    // To prevent DISABLE appears in the middle of the list
-    // we should perform a re-ordering
-    //
-    Index3 = Index;
-    Index  = 0;
-    while (Index < Number) {
-      if (0xFF != CurrentVal[Index]) {
-        Index++;
-        continue;
-      }
-
-      Index2 = Index;
-      Index2++;
-      while (Index2 < Number) {
-        if (0xFF != CurrentVal[Index2]) {
-          break;
-        }
-
-        Index2++;
-      }
-
-      if (Index2 < Number) {
-        CurrentVal[Index]  = CurrentVal[Index2];
-        CurrentVal[Index2] = 0xFF;
-      }
-
-      Index++;
-    }
-
-    //
-    // Return correct question value.
-    //
-    Value->u16 = CurrentVal[Index3];
-    CopyMem (Default, CurrentVal, sizeof (UINT16) * Number);
-  }
-
-  //
-  // Pass changed uncommitted data back to Form Browser
-  //
-  HiiSetBrowserData (&mLegacyBootOptionGuid, mLegacyBootStorageName, sizeof (LEGACY_BOOT_NV_DATA), (UINT8 *)CurrentNVMap, NULL);
-}
-
-/**
-  This call back function is registered with Boot Manager formset.
-  When user selects a boot option, this call back function will
-  be triggered. The boot option is saved for later processing.
-
-
-  @param This            Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
-  @param Action          Specifies the type of action taken by the browser.
-  @param QuestionId      A unique value which is sent to the original exporting driver
-                         so that it can identify the type of data to expect.
-  @param Type            The type of value for the question.
-  @param Value           A pointer to the data being sent to the original exporting driver.
-  @param ActionRequest   On return, points to the action requested by the callback function.
-
-  @retval  EFI_SUCCESS           The callback successfully handled the action.
-  @retval  EFI_INVALID_PARAMETER The setup browser call this function with invalid parameters.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyBootOptionCallback (
-  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
-  )
-{
-  if ((Action != EFI_BROWSER_ACTION_CHANGED) && (Action != EFI_BROWSER_ACTION_CHANGING) && (Action != EFI_BROWSER_ACTION_FORM_OPEN)) {
-    //
-    // Do nothing for other UEFI Action. Only do call back when data is changed or the form is open.
-    //
-    return EFI_UNSUPPORTED;
-  }
-
-  if ((Value == NULL) || (ActionRequest == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  if (Action == EFI_BROWSER_ACTION_FORM_OPEN) {
-    if (QuestionId == FORM_FLOPPY_BOOT_ID) {
-      if (!mFirstEnterLegacyForm) {
-        //
-        // The legacyBootMaintUiLib depends on the LegacyBootManagerLib to realize its functionality.
-        // We need to do the legacy boot options related actions after the LegacyBootManagerLib has been initialized.
-        // Opening the legacy menus is the appropriate time that the LegacyBootManagerLib has already been initialized.
-        //
-        mFirstEnterLegacyForm = TRUE;
-        GetLegacyOptions ();
-        GetLegacyOptionsOrder ();
-      }
-    }
-  }
-
-  if (Action == EFI_BROWSER_ACTION_CHANGING) {
-    switch (QuestionId) {
-      case FORM_FLOPPY_BOOT_ID:
-      case FORM_HARDDISK_BOOT_ID:
-      case FORM_CDROM_BOOT_ID:
-      case FORM_NET_BOOT_ID:
-      case FORM_BEV_BOOT_ID:
-        UpdateLegacyDeviceOrderPage (QuestionId);
-        break;
-
-      default:
-        break;
-    }
-  } else if (Action == EFI_BROWSER_ACTION_CHANGED) {
-    if ((Value == NULL) || (ActionRequest == NULL)) {
-      return EFI_INVALID_PARAMETER;
-    }
-
-    if ((QuestionId >= LEGACY_FD_QUESTION_ID) && (QuestionId < LEGACY_BEV_QUESTION_ID + MAX_MENU_NUMBER)) {
-      AdjustOptionValue (QuestionId, Value);
-    }
-  }
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Create a menu entry by given menu type.
-
-  @param MenuType        The Menu type to be created.
-
-  @retval NULL           If failed to create the menu.
-  @return the new menu entry.
-
-**/
-LEGACY_MENU_ENTRY *
-CreateMenuEntry (
-  VOID
-  )
-{
-  LEGACY_MENU_ENTRY  *MenuEntry;
-
-  //
-  // Create new menu entry
-  //
-  MenuEntry = AllocateZeroPool (sizeof (LEGACY_MENU_ENTRY));
-  if (MenuEntry == NULL) {
-    return NULL;
-  }
-
-  MenuEntry->VariableContext = AllocateZeroPool (sizeof (LEGACY_DEVICE_CONTEXT));
-  if (MenuEntry->VariableContext == NULL) {
-    FreePool (MenuEntry);
-    return NULL;
-  }
-
-  MenuEntry->Signature = LEGACY_MENU_ENTRY_SIGNATURE;
-  return MenuEntry;
-}
-
-/**
-
-  Base on the L"LegacyDevOrder" variable to build the current order data.
-
-**/
-VOID
-GetLegacyOptionsOrder (
-  VOID
-  )
-{
-  UINTN                   VarSize;
-  UINT8                   *VarData;
-  UINT8                   *VarTmp;
-  LEGACY_DEV_ORDER_ENTRY  *DevOrder;
-  UINT16                  *LegacyDev;
-  UINTN                   Index;
-  LEGACY_MENU_OPTION      *OptionMenu;
-  UINT16                  VarDevOrder;
-  UINTN                   Pos;
-  UINTN                   Bit;
-  UINT8                   *DisMap;
-  UINTN                   TotalLength;
-
-  LegacyDev  = NULL;
-  OptionMenu = NULL;
-
-  DisMap = ZeroMem (mLegacyBootOptionPrivate->MaintainMapData->DisableMap, sizeof (mLegacyBootOptionPrivate->MaintainMapData->DisableMap));
-
-  //
-  // Get Device Order from variable
-  //
-  GetVariable2 (VAR_LEGACY_DEV_ORDER, &gEfiLegacyDevOrderVariableGuid, (VOID **)&VarData, &VarSize);
-  VarTmp = VarData;
-  if (NULL != VarData) {
-    DevOrder = (LEGACY_DEV_ORDER_ENTRY *)VarData;
-    while (VarData < VarTmp + VarSize) {
-      switch (DevOrder->BbsType) {
-        case BBS_FLOPPY:
-          LegacyDev  = mLegacyBootOptionPrivate->MaintainMapData->InitialNvData.LegacyFD;
-          OptionMenu = &LegacyFDMenu;
-          break;
-
-        case BBS_HARDDISK:
-          LegacyDev  = mLegacyBootOptionPrivate->MaintainMapData->InitialNvData.LegacyHD;
-          OptionMenu = &LegacyHDMenu;
-          break;
-
-        case BBS_CDROM:
-          LegacyDev  = mLegacyBootOptionPrivate->MaintainMapData->InitialNvData.LegacyCD;
-          OptionMenu = &LegacyCDMenu;
-          break;
-
-        case BBS_EMBED_NETWORK:
-          LegacyDev  = mLegacyBootOptionPrivate->MaintainMapData->InitialNvData.LegacyNET;
-          OptionMenu = &LegacyNETMenu;
-          break;
-
-        case BBS_BEV_DEVICE:
-          LegacyDev  = mLegacyBootOptionPrivate->MaintainMapData->InitialNvData.LegacyBEV;
-          OptionMenu = &LegacyBEVMenu;
-          break;
-
-        case BBS_UNKNOWN:
-        default:
-          ASSERT (FALSE);
-          DEBUG ((DEBUG_ERROR, "Unsupported device type found!\n"));
-          break;
-      }
-
-      //
-      // Create oneof tag here for FD/HD/CD #1 #2
-      //
-      for (Index = 0; Index < OptionMenu->MenuNumber; Index++) {
-        TotalLength = sizeof (BBS_TYPE) + sizeof (UINT16) + Index * sizeof (UINT16);
-        VarDevOrder = *(UINT16 *)((UINT8 *)DevOrder + TotalLength);
-
-        if (0xFF00 == (VarDevOrder & 0xFF00)) {
-          LegacyDev[Index] = 0xFF;
-          Pos              = (VarDevOrder & 0xFF) / 8;
-          Bit              = 7 - ((VarDevOrder & 0xFF) % 8);
-          DisMap[Pos]      = (UINT8)(DisMap[Pos] | (UINT8)(1 << Bit));
-        } else {
-          LegacyDev[Index] = VarDevOrder & 0xFF;
-        }
-      }
-
-      VarData++;
-      VarData += *(UINT16 *)VarData;
-      DevOrder = (LEGACY_DEV_ORDER_ENTRY *)VarData;
-    }
-  }
-
-  CopyMem (&mLegacyBootOptionPrivate->MaintainMapData->LastTimeNvData, &mLegacyBootOptionPrivate->MaintainMapData->InitialNvData, sizeof (LEGACY_BOOT_NV_DATA));
-  CopyMem (&mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData, &mLegacyBootOptionPrivate->MaintainMapData->InitialNvData, sizeof (LEGACY_BOOT_NV_DATA));
-}
-
-/**
-
-  Build the LegacyFDMenu LegacyHDMenu LegacyCDMenu according to LegacyBios.GetBbsInfo().
-
-**/
-VOID
-GetLegacyOptions (
-  VOID
-  )
-{
-  LEGACY_MENU_ENTRY             *NewMenuEntry;
-  LEGACY_DEVICE_CONTEXT         *NewLegacyDevContext;
-  EFI_BOOT_MANAGER_LOAD_OPTION  *BootOption;
-  UINTN                         BootOptionCount;
-  UINT16                        Index;
-  UINTN                         FDNum;
-  UINTN                         HDNum;
-  UINTN                         CDNum;
-  UINTN                         NETNum;
-  UINTN                         BEVNum;
-
-  //
-  // Initialize Bbs Table Context from BBS info data
-  //
-  InitializeListHead (&LegacyFDMenu.Head);
-  InitializeListHead (&LegacyHDMenu.Head);
-  InitializeListHead (&LegacyCDMenu.Head);
-  InitializeListHead (&LegacyNETMenu.Head);
-  InitializeListHead (&LegacyBEVMenu.Head);
-
-  FDNum  = 0;
-  HDNum  = 0;
-  CDNum  = 0;
-  NETNum = 0;
-  BEVNum = 0;
-
-  EfiBootManagerConnectAll ();
-
-  //
-  // 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);
-  for (Index = 0; Index < BootOptionCount; Index++) {
-    if ((DevicePathType (BootOption[Index].FilePath) != BBS_DEVICE_PATH) ||
-        (DevicePathSubType (BootOption[Index].FilePath) != BBS_BBS_DP)
-        )
-    {
-      continue;
-    }
-
-    ASSERT (BootOption[Index].OptionalDataSize == sizeof (LEGACY_BOOT_OPTION_BBS_DATA));
-    NewMenuEntry = CreateMenuEntry ();
-    ASSERT (NewMenuEntry != NULL);
-
-    NewLegacyDevContext              = (LEGACY_DEVICE_CONTEXT *)NewMenuEntry->VariableContext;
-    NewLegacyDevContext->BbsIndex    = ((LEGACY_BOOT_OPTION_BBS_DATA *)BootOption[Index].OptionalData)->BbsIndex;
-    NewLegacyDevContext->Description = AllocateCopyPool (StrSize (BootOption[Index].Description), BootOption[Index].Description);
-    ASSERT (NewLegacyDevContext->Description != NULL);
-
-    NewMenuEntry->DisplayString = NewLegacyDevContext->Description;
-    NewMenuEntry->HelpString    = NULL;
-
-    switch (((BBS_BBS_DEVICE_PATH *)BootOption[Index].FilePath)->DeviceType) {
-      case BBS_TYPE_FLOPPY:
-        InsertTailList (&LegacyFDMenu.Head, &NewMenuEntry->Link);
-        FDNum++;
-        break;
-
-      case BBS_TYPE_HARDDRIVE:
-        InsertTailList (&LegacyHDMenu.Head, &NewMenuEntry->Link);
-        HDNum++;
-        break;
-
-      case BBS_TYPE_CDROM:
-        InsertTailList (&LegacyCDMenu.Head, &NewMenuEntry->Link);
-        CDNum++;
-        break;
-
-      case BBS_TYPE_EMBEDDED_NETWORK:
-        InsertTailList (&LegacyNETMenu.Head, &NewMenuEntry->Link);
-        NETNum++;
-        break;
-
-      case BBS_TYPE_BEV:
-        InsertTailList (&LegacyBEVMenu.Head, &NewMenuEntry->Link);
-        BEVNum++;
-        break;
-    }
-  }
-
-  EfiBootManagerFreeLoadOptions (BootOption, BootOptionCount);
-
-  LegacyFDMenu.MenuNumber  = FDNum;
-  LegacyHDMenu.MenuNumber  = HDNum;
-  LegacyCDMenu.MenuNumber  = CDNum;
-  LegacyNETMenu.MenuNumber = NETNum;
-  LegacyBEVMenu.MenuNumber = BEVNum;
-}
-
-/**
-
-  Install Boot Manager Menu driver.
-
-  @param ImageHandle     The image handle.
-  @param SystemTable     The system table.
-
-  @retval  EFI_SUCCESS  Install Boot manager menu success.
-  @retval  Other        Return error status.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyBootMaintUiLibConstructor (
-  IN EFI_HANDLE        ImageHandle,
-  IN EFI_SYSTEM_TABLE  *SystemTable
-  )
-{
-  EFI_STATUS                        Status;
-  EFI_LEGACY_BIOS_PROTOCOL          *LegacyBios;
-  LEGACY_BOOT_OPTION_CALLBACK_DATA  *LegacyBootOptionData;
-
-  Status = gBS->LocateProtocol (&gEfiLegacyBiosProtocolGuid, NULL, (VOID **)&LegacyBios);
-  if (!EFI_ERROR (Status)) {
-    //
-    // Create LegacyBootOptionData structures for Driver Callback
-    //
-    LegacyBootOptionData = AllocateZeroPool (sizeof (LEGACY_BOOT_OPTION_CALLBACK_DATA));
-    ASSERT (LegacyBootOptionData != NULL);
-
-    LegacyBootOptionData->MaintainMapData = AllocateZeroPool (sizeof (LEGACY_BOOT_MAINTAIN_DATA));
-    ASSERT (LegacyBootOptionData->MaintainMapData != NULL);
-
-    LegacyBootOptionData->ConfigAccess.ExtractConfig = LegacyBootOptionExtractConfig;
-    LegacyBootOptionData->ConfigAccess.RouteConfig   = LegacyBootOptionRouteConfig;
-    LegacyBootOptionData->ConfigAccess.Callback      = LegacyBootOptionCallback;
-
-    //
-    // Install Device Path Protocol and Config Access protocol to driver handle
-    //
-    Status = gBS->InstallMultipleProtocolInterfaces (
-                    &LegacyBootOptionData->DriverHandle,
-                    &gEfiDevicePathProtocolGuid,
-                    &mLegacyBootOptionHiiVendorDevicePath,
-                    &gEfiHiiConfigAccessProtocolGuid,
-                    &LegacyBootOptionData->ConfigAccess,
-                    NULL
-                    );
-    ASSERT_EFI_ERROR (Status);
-
-    //
-    // Publish our HII data
-    //
-    LegacyBootOptionData->HiiHandle = HiiAddPackages (
-                                        &mLegacyBootOptionGuid,
-                                        LegacyBootOptionData->DriverHandle,
-                                        LegacyBootMaintUiVfrBin,
-                                        LegacyBootMaintUiLibStrings,
-                                        NULL
-                                        );
-    ASSERT (LegacyBootOptionData->HiiHandle != NULL);
-
-    mLegacyBootOptionPrivate = LegacyBootOptionData;
-  }
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Destructor of Customized Display Library Instance.
-
-  @param  ImageHandle   The firmware allocated handle for the EFI image.
-  @param  SystemTable   A pointer to the EFI System Table.
-
-  @retval EFI_SUCCESS   The destructor completed successfully.
-  @retval Other value   The destructor did not complete successfully.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyBootMaintUiLibDestructor (
-  IN EFI_HANDLE        ImageHandle,
-  IN EFI_SYSTEM_TABLE  *SystemTable
-  )
-{
-  EFI_STATUS  Status;
-
-  if ((mLegacyBootOptionPrivate != NULL) && (mLegacyBootOptionPrivate->DriverHandle != NULL)) {
-    Status = gBS->UninstallMultipleProtocolInterfaces (
-                    mLegacyBootOptionPrivate->DriverHandle,
-                    &gEfiDevicePathProtocolGuid,
-                    &mLegacyBootOptionHiiVendorDevicePath,
-                    &gEfiHiiConfigAccessProtocolGuid,
-                    &mLegacyBootOptionPrivate->ConfigAccess,
-                    NULL
-                    );
-    ASSERT_EFI_ERROR (Status);
-
-    HiiRemovePackages (mLegacyBootOptionPrivate->HiiHandle);
-
-    FreePool (mLegacyBootOptionPrivate->MaintainMapData);
-    FreePool (mLegacyBootOptionPrivate);
-  }
-
-  return EFI_SUCCESS;
-}
diff --git a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiVfr.Vfr b/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiVfr.Vfr
deleted file mode 100644
index 2b03820d3869..000000000000
--- a/OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiVfr.Vfr
+++ /dev/null
@@ -1,67 +0,0 @@
-///** @file
-//
-//    Browser formset.
-//
-//  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
-//  SPDX-License-Identifier: BSD-2-Clause-Patent
-//
-//**/
-
-#include "LegacyBootMaintUiVfr.h"
-
-
-formset
-  guid      = LEGACY_BOOT_OPTION_FORMSET_GUID,
-  title     = STRING_TOKEN(STR_LEGACY_BOOT_PROMPT),
-  help      = STRING_TOKEN(STR_LEGACY_BOOT_HELP),
-  classguid = EFI_IFR_BOOT_MAINTENANCE_GUID,
-
-  varstore LEGACY_BOOT_NV_DATA,
-    varid = VARSTORE_ID_LEGACY_BOOT,
-    name = LegacyBootData,
-    guid = LEGACY_BOOT_OPTION_FORMSET_GUID;
-
-  form formid = LEGACY_BOOT_FORM_ID,
-       title  = STRING_TOKEN(STR_LEGACY_BOOT_PROMPT);
-
-    goto LEGACY_ORDER_CHANGE_FORM_ID,
-         prompt = STRING_TOKEN(STR_FORM_FLOPPY_BOOT_TITLE),
-         help = STRING_TOKEN(STR_FORM_FLOPPY_BOOT_HELP),
-         flags = INTERACTIVE,
-         key = FORM_FLOPPY_BOOT_ID;
-
-    goto LEGACY_ORDER_CHANGE_FORM_ID,
-         prompt = STRING_TOKEN(STR_FORM_HARDDISK_BOOT_TITLE),
-         help = STRING_TOKEN(STR_FORM_HARDDISK_BOOT_HELP),
-         flags = INTERACTIVE,
-         key = FORM_HARDDISK_BOOT_ID;
-
-    goto LEGACY_ORDER_CHANGE_FORM_ID,
-         prompt = STRING_TOKEN(STR_FORM_CDROM_BOOT_TITLE),
-         help = STRING_TOKEN(STR_FORM_CDROM_BOOT_HELP),
-         flags = INTERACTIVE,
-         key = FORM_CDROM_BOOT_ID;
-
-    goto LEGACY_ORDER_CHANGE_FORM_ID,
-         prompt = STRING_TOKEN(STR_FORM_NET_BOOT_TITLE),
-         help = STRING_TOKEN(STR_FORM_NET_BOOT_HELP),
-         flags = INTERACTIVE,
-         key = FORM_NET_BOOT_ID;
-
-    goto LEGACY_ORDER_CHANGE_FORM_ID,
-         prompt = STRING_TOKEN(STR_FORM_BEV_BOOT_TITLE),
-         help = STRING_TOKEN(STR_FORM_BEV_BOOT_HELP),
-         flags = INTERACTIVE,
-         key = FORM_BEV_BOOT_ID;
-
-  endform;
-
-  form formid = LEGACY_ORDER_CHANGE_FORM_ID,
-       title  = STRING_TOKEN(STR_ORDER_CHANGE_PROMPT);
-
-       label FORM_BOOT_LEGACY_DEVICE_ID;
-       label FORM_BOOT_LEGACY_LABEL_END;
-
-  endform;
-
-endformset;



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#111077): https://edk2.groups.io/g/devel/message/111077
Mute This Topic: https://groups.io/mt/102518643/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/1913456212/xyzzy [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



  parent reply	other threads:[~2023-11-10 23:59 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-10 23:57 [edk2-devel] [PATCH 00/37] OvmfPkg: remove the CSM (after edk2-stable202311) Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 01/37] OvmfPkg: cripple CSM_ENABLE macro Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 02/37] OvmfPkg: remove PcdCsmEnable Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 03/37] OvmfPkg: unplug LegacyBootManagerLib from BdsDxe and UiApp Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 04/37] OvmfPkg: remove LegacyBootManagerLib Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 05/37] OvmfPkg: unplug LegacyBootMaintUiLib from UiApp Laszlo Ersek
2023-11-10 23:57 ` Laszlo Ersek [this message]
2023-11-10 23:57 ` [edk2-devel] [PATCH 07/37] OvmfPkg: remove gEfiLegacyDevOrderVariableGuid Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 08/37] OvmfPkg: exclude the CSM-based VideoDxe driver Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 09/37] OvmfPkg: remove Csm/BiosThunk/VideoDxe Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 10/37] OvmfPkg: remove gEfiVgaMiniPortProtocolGuid Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 11/37] OvmfPkg: remove Bios Video PCDs Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 12/37] OvmfPkg: exclude LegacyBiosDxe Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 13/37] OvmfPkg/IncompatiblePciDeviceSupportDxe: ignore CSM presence Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 14/37] Revert "OvmfPkg: don't assign PCI BARs above 4GiB when CSM enabled" Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 15/37] OvmfPkg: remove LegacyBiosDxe Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 16/37] OvmfPkg: exclude NullMemoryTestDxe driver Laszlo Ersek
2024-04-24 11:02   ` Corvin Köhne
2023-11-10 23:58 ` [edk2-devel] [PATCH 17/37] OvmfPkg: remove gEfiIsaIoProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 18/37] OvmfPkg: remove gEfiIsaAcpiProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 19/37] OvmfPkg: remove gEfiLegacyBiosGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 20/37] OvmfPkg: remove LegacyBiosDxe PCDs Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 21/37] OvmfPkg: unplug CsmSupportLib from BdsDxe Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 22/37] OvmfPkg: remove CsmSupportLib Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 23/37] OvmfPkg: remove gEfiFirmwareVolumeProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 24/37] OvmfPkg: remove gEfiLegacyBiosPlatformProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 25/37] OvmfPkg: remove gEfiLegacyBiosProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 26/37] OvmfPkg: remove gEfiLegacyInterruptProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 27/37] OvmfPkg: remove <FrameworkDxe.h> Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 28/37] OvmfPkg: exclude Csm16.inf / Csm16.bin Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 29/37] OvmfPkg: remove Rule.Common.USER_DEFINED.CSM from all FDF files Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 30/37] OvmfPkg: remove Csm16 Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 31/37] OvmfPkg: exclude 8254TimerDxe Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 32/37] OvmfPkg: remove 8254TimerDxe Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 33/37] OvmfPkg: exclude 8259InterruptControllerDxe Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 34/37] OvmfPkg: remove 8259InterruptControllerDxe Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 35/37] OvmfPkg: remove gEfiLegacy8259ProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 36/37] OvmfPkg: remove Pcd8259LegacyModeEdgeLevel and Pcd8259LegacyModeMask Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 37/37] OvmfPkg: remove CSM_ENABLE build macro Laszlo Ersek
2023-11-11  2:12 ` [edk2-devel] [PATCH 00/37] OvmfPkg: remove the CSM (after edk2-stable202311) Yao, Jiewen
2023-11-11 10:54   ` Ard Biesheuvel
2023-11-13  7:52     ` Corvin Köhne
2023-11-13 10:44 ` Gerd Hoffmann
2023-12-07 18:10 ` Laszlo Ersek

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=20231110235820.644381-7-lersek@redhat.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