public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* Re: [edk2-devel] [PATCH] edk2-staging/EmulatorPkg: Add a sample memory configuration HII driver
       [not found] <16B25D0D5E069C47.9643@groups.io>
@ 2021-10-29  8:39 ` Abner Chang
  0 siblings, 0 replies; only message in thread
From: Abner Chang @ 2021-10-29  8:39 UTC (permalink / raw)
  To: devel@edk2.groups.io, Chang, Abner (HPS SW/FW Technologist)
  Cc: Wang, Nickle (HPS SW), Liming Gao, Andrew Fish, Ray Ni


This patch is sent in behalf of Nickle Wang who is the author of this change.

Reviewed-by: Abner Chang <abner.chang@hpe.com>

> -----Original Message-----
> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
> Abner Chang
> Sent: Friday, October 29, 2021 9:45 AM
> To: devel@edk2.groups.io
> Cc: Wang, Nickle (HPS SW) <nickle.wang@hpe.com>; Liming Gao
> <gaoliming@byosoft.com.cn>; Andrew Fish <afish@apple.com>; Ray Ni
> <ray.ni@intel.com>
> Subject: [edk2-devel] [PATCH] edk2-staging/EmulatorPkg: Add a sample
> memory configuration HII driver
> 
> This is an HII sample driver of memory configuration. This demonstrates
> the communication between platform configuration (EDK2/HII) and Redfish
> service (Memory resource) base on RedfishClientPkg.
> 
> The language ("x-uef-redfish-*") defined in the Redfish-specific uni file is
> the connection between HII configuration and the Redfish schema.
> 
> e.g.
> #langdef   x-uefi-redfish-Memory.v1_7_1 "Memory.v1_7_1"
> 
> The HII option strings those applied with "x-uef-redfish-* HII language
> are connected to the corresponding Redfish properties.
> 
> e.g.
> #string STR_MEMORY_1_BASE_MODULE_TYPE_PROMPT #language x-uefi-
> redfish-Memory.v1_7_1   "/Memory/{1}/BaseModuleType"
> 
> The changes made on BIOS setup page or remote (OOB to Redfish service)
> will be
> sync-up each other through EDKII Redfish feature driver using the transport
> (REST_EX) provided by RedfishPkg.
> 
> On EDK2, HTTP based REST EX protocol instance is used to consume and
> update
> the Redfish properties.
> 
> Check this for the RedfishClientPkg design architecture,
> https://github.com/tianocore/edk2-staging/blob/edk2-redfish-
> client/RedfishClientPkg/Readme.md
> 
> Below for RedfishPkg design architecture,
> https://github.com/tianocore/edk2/blob/master/RedfishPkg/Readme.md
> 
> Signed-off-by: Nickle Wang <nickle.wang@hpe.com>
> Cc: Abner Chang <abner.chang@hpe.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Andrew Fish <afish@apple.com>
> Cc: Ray Ni <ray.ni@intel.com>
> ---
>  .../Hii2RedfishMemoryDxe.inf                  |  55 ++++
>  .../Hii2RedfishMemoryData.h                   |  71 +++++
>  .../Hii2RedfishMemoryDxe.h                    |  44 +++
>  .../Hii2RedfishMemoryVfr.vfr                  | 219 +++++++++++++
>  .../Hii2RedfishMemoryDxe.c                    | 294 ++++++++++++++++++
>  .../Hii2RedfishMemoryDxeMap.uni               |  38 +++
>  .../Hii2RedfishMemoryDxeStrings.uni           |  68 ++++
>  7 files changed, 789 insertions(+)
>  create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
>  create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h
>  create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h
>  create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr
>  create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c
>  create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni
>  create mode 100644
> EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.uni
> 
> diff --git a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
> new file mode 100644
> index 00000000000..3376f7e7b49
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.inf
> @@ -0,0 +1,55 @@
> +## @file
> +#  HII-to-Redfish memory driver.
> +#
> +#  (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +#
> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +##
> +
> +[Defines]
> +  INF_VERSION                    = 0x00010005
> +  BASE_NAME                      = Hii2RedfishMemoryDxe
> +  FILE_GUID                      = 58134796-EB3A-4635-9664-6B7F68A8A9A1
> +  MODULE_TYPE                    = UEFI_DRIVER
> +  VERSION_STRING                 = 1.0
> +  ENTRY_POINT                    = Hii2RedfishMemoryDxeDriverEntryPoint
> +  UNLOAD_IMAGE                   = Hii2RedfishMemoryDxeDriverUnload
> +
> +[Sources]
> +  Hii2RedfishMemoryDxe.c
> +  Hii2RedfishMemoryDxe.h
> +  Hii2RedfishMemoryData.h
> +  Hii2RedfishMemoryVfr.vfr
> +  Hii2RedfishMemoryDxeStrings.uni
> +  Hii2RedfishMemoryDxeMap.uni
> +
> +[Packages]
> +  MdePkg/MdePkg.dec
> +  MdeModulePkg/MdeModulePkg.dec
> +  EmulatorPkg/EmulatorPkg.dec
> +
> +[LibraryClasses]
> +  UefiDriverEntryPoint
> +  BaseLib
> +  BaseMemoryLib
> +  DebugLib
> +  PcdLib
> +  MemoryAllocationLib
> +  UefiBootServicesTableLib
> +  UefiRuntimeServicesTableLib
> +  UefiLib
> +  PrintLib
> +  HiiLib
> +
> +[Protocols]
> +  gEfiDevicePathProtocolGuid
> +  gEfiHiiConfigAccessProtocolGuid
> +
> +
> +[Guids]
> +  gHii2RedfishMemoryFormsetGuid
> +
> +[Depex]
> +  gEfiHiiDatabaseProtocolGuid
> +
> diff --git a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h
> new file mode 100644
> index 00000000000..f5ffaaec631
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryData.h
> @@ -0,0 +1,71 @@
> +/** @file
> +  The header file of HII-to-Redfish memory driver.
> +
> +  (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef HII_2_REDFISH_MEMORY_DATA_H_
> +#define HII_2_REDFISH_MEMORY_DATA_H_
> +
> +#include <Uefi/UefiMultiPhase.h>
> +#include <Guid/HiiPlatformSetupFormset.h>
> +
> +#define HII_2_REDFISH_MEMORY_FORMSET_GUID \
> +  { \
> +    0xC2BE579E, 0x3C57, 0x499C, { 0xA9, 0xDF, 0xE6, 0x23, 0x8A, 0x49, 0x64,
> 0xF8 } \
> +  }
> +
> +extern EFI_GUID gHii2RedfishMemoryFormsetGuid;
> +
> +#define FORM_ID                                     0x001
> +#define FROM_ID_MEMORY_1                            0x002
> +#define FROM_ID_MEMORY_2                            0x003
> +#define FROM_ID_MEMORY_3                            0x004
> +#define FROM_ID_MEMORY_4                            0x005
> +
> +#define QUESTION_ID_MEMORY_1_BASE_MODULE_TYPE         0x100
> +#define QUESTION_ID_MEMORY_1_BUS_WIDTH_BITS           0x101
> +#define QUESTION_ID_MEMORY_1_CONFIGURATION_LOCKED     0x102
> +
> +#define QUESTION_ID_MEMORY_2_BASE_MODULE_TYPE         0x200
> +#define QUESTION_ID_MEMORY_2_BUS_WIDTH_BITS           0x201
> +#define QUESTION_ID_MEMORY_2_CONFIGURATION_LOCKED     0x202
> +
> +#define QUESTION_ID_MEMORY_3_BASE_MODULE_TYPE         0x300
> +#define QUESTION_ID_MEMORY_3_BUS_WIDTH_BITS           0x301
> +#define QUESTION_ID_MEMORY_3_CONFIGURATION_LOCKED     0x302
> +
> +#define QUESTION_ID_MEMORY_4_BASE_MODULE_TYPE         0x400
> +#define QUESTION_ID_MEMORY_4_BUS_WIDTH_BITS           0x401
> +#define QUESTION_ID_MEMORY_4_CONFIGURATION_LOCKED     0x402
> +
> +#define MEMORY_MAX_NO                                 0x04
> +#define ID_STRING_MIN                                 0
> +#define ID_STRING_MAX                                 15
> +#define ID_STRING_MAX_WITH_TERMINATOR                 16
> +
> +#pragma pack(1)
> +//
> +// Definiton of HII_2_REDFISH_MEMORY_SET
> +//
> +typedef struct {
> +  CHAR16        ModuleProductId[ID_STRING_MAX_WITH_TERMINATOR];
> +  UINT8         BaseModuleType;
> +  UINT8         BusWidthBits;
> +  UINT8         ConfigurationLocked;
> +  UINT8         Reserved;           // for 16 bit boundary of ModuleProductId
> +} HII_2_REDFISH_MEMORY_SET;
> +
> +//
> +// Definiton of HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA
> +//
> +typedef struct {
> +  HII_2_REDFISH_MEMORY_SET  Memory[MEMORY_MAX_NO];
> +} HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA;
> +
> +#pragma pack()
> +
> +#endif
> diff --git a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h
> new file mode 100644
> index 00000000000..98bfd7246a4
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.h
> @@ -0,0 +1,44 @@
> +/** @file
> +  HII-to-Redfish memory driver header file.
> +
> +  (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef HII_2_REDFISH_MEMORY_DXE_H_
> +#define HII_2_REDFISH_MEMORY_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 <Protocol/HiiConfigAccess.h>
> +#include <Guid/VariableFormat.h>
> +
> +#include "Hii2RedfishMemoryData.h"
> +
> +extern UINT8 Hii2RedfishMemoryVfrBin[];
> +
> +#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
> \ No newline at end of file
> diff --git a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr
> new file mode 100644
> index 00000000000..288686f8303
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryVfr.vfr
> @@ -0,0 +1,219 @@
> +/** @file
> +  HII-to-Redfish memory driver VFR file.
> +
> +  (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +
> +#include "Hii2RedfishMemoryData.h"
> +
> +formset
> +  guid      = HII_2_REDFISH_MEMORY_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_MEMORY_EFI_VARSTORE_DATA,
> +    attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS |
> EFI_VARIABLE_NON_VOLATILE,  // EFI variable attribures
> +    name  = Hii2RedfishMemoryEfiVar,
> +    guid  = HII_2_REDFISH_MEMORY_FORMSET_GUID;
> +
> +  //
> +  // Define a Form (EFI_IFR_FORM)
> +  //
> +  form formid = FORM_ID,                          // Form ID
> +       title  = STRING_TOKEN(STR_FORM_TITLE);     // Form title
> +
> +    goto FROM_ID_MEMORY_1,                              // Destination Form ID
> +      prompt  = STRING_TOKEN(STR_FORM_TITLE_MEMORY_1),  // Prompt
> string
> +      help    = STRING_TOKEN(STR_FORM_HELP_MEMORY_1);   // Help string
> +
> +    goto FROM_ID_MEMORY_2,                              // Destination Form ID
> +      prompt  = STRING_TOKEN(STR_FORM_TITLE_MEMORY_2),  // Prompt
> string
> +      help    = STRING_TOKEN(STR_FORM_HELP_MEMORY_2);   // Help string
> +
> +    goto FROM_ID_MEMORY_3,                              // Destination Form ID
> +      prompt  = STRING_TOKEN(STR_FORM_TITLE_MEMORY_3),  // Prompt
> string
> +      help    = STRING_TOKEN(STR_FORM_HELP_MEMORY_3);   // Help string
> +
> +    goto FROM_ID_MEMORY_4,                              // Destination Form ID
> +      prompt  = STRING_TOKEN(STR_FORM_TITLE_MEMORY_4),  // Prompt
> string
> +      help    = STRING_TOKEN(STR_FORM_HELP_MEMORY_4);   // Help string
> +
> +  endform;
> +
> +  form formid = FROM_ID_MEMORY_1,                          // Form ID
> +       title  = STRING_TOKEN(STR_FORM_TITLE_MEMORY_1);     // Form title
> +
> +    oneof varid = Hii2RedfishMemoryEfiVar.Memory[0].BaseModuleType,
> +          questionid = QUESTION_ID_MEMORY_1_BASE_MODULE_TYPE,
> +          prompt =
> STRING_TOKEN(STR_MEMORY_1_BASE_MODULE_TYPE_PROMPT),
> +          help   =
> STRING_TOKEN(STR_MEMORY_1_BASE_MODULE_TYPE_HELP),
> +          flags  = INTERACTIVE | NUMERIC_SIZE_1,
> +          option text = STRING_TOKEN(STR_MEMORY_RDIMM_PROMPT),
> value = STR_MEMORY_RDIMM_PROMPT, flags = DEFAULT;
> +          option text = STRING_TOKEN(STR_MEMORY_UDIMM_PROMPT),
> value = STR_MEMORY_UDIMM_PROMPT,   flags = 0;
> +          option text = STRING_TOKEN(STR_MEMORY_SO_DIMM_PROMPT),
> value = STR_MEMORY_SO_DIMM_PROMPT,   flags = 0;
> +          option text = STRING_TOKEN(STR_MEMORY_LRDIMM_PROMPT),
> value = STR_MEMORY_LRDIMM_PROMPT, flags = 0;
> +          option text = STRING_TOKEN(STR_MEMORY_MINI_RDIMM_PROMPT),
> value = STR_MEMORY_MINI_RDIMM_PROMPT,   flags = 0;
> +          option text =
> STRING_TOKEN(STR_MEMORY_MINI_UDIMM_PROMPT),    value =
> STR_MEMORY_MINI_UDIMM_PROMPT,   flags = 0;
> +    endoneof;
> +
> +    string varid = Hii2RedfishMemoryEfiVar.Memory[0].ModuleProductId,
> +        prompt =
> STRING_TOKEN(STR_MEMORY_1_MODULE_PRODUCT_ID_PROMPT),
> +        help =
> STRING_TOKEN(STR_MEMORY_1_MODULE_PRODUCT_ID_HELP),
> +        flags = READ_ONLY,
> +        minsize = ID_STRING_MIN,
> +        maxsize = ID_STRING_MAX,
> +    endstring;
> +
> +    numeric varid   = Hii2RedfishMemoryEfiVar.Memory[0].BusWidthBits,
> +            prompt  =
> STRING_TOKEN(STR_MEMORY_1_BUS_WIDTH_BITS_PROMPT),
> +            help    = STRING_TOKEN(STR_MEMORY_1_BUS_WIDTH_BITS_HELP),
> +            minimum = 0,
> +            maximum = 0xff,
> +            step    = 1,
> +            default = 20,
> +    endnumeric;
> +
> +    checkbox varid   =
> Hii2RedfishMemoryEfiVar.Memory[0].ConfigurationLocked,
> +             prompt   =
> STRING_TOKEN(STR_MEMORY_1_CONFIGURATION_LOCKED_PROMPT),
> +             help     =
> STRING_TOKEN(STR_MEMORY_1_CONFIGURATION_LOCKED_HELP),
> +             flags    = CHECKBOX_DEFAULT,
> +             default  = TRUE,
> +    endcheckbox;
> +
> +  endform;
> +
> +  form formid = FROM_ID_MEMORY_2,                          // Form ID
> +       title  = STRING_TOKEN(STR_FORM_TITLE_MEMORY_2);     // Form title
> +
> +    oneof varid = Hii2RedfishMemoryEfiVar.Memory[1].BaseModuleType,
> +          questionid = QUESTION_ID_MEMORY_2_BASE_MODULE_TYPE,
> +          prompt =
> STRING_TOKEN(STR_MEMORY_2_BASE_MODULE_TYPE_PROMPT),
> +          help   =
> STRING_TOKEN(STR_MEMORY_2_BASE_MODULE_TYPE_HELP),
> +          flags  = INTERACTIVE | NUMERIC_SIZE_1,
> +          option text = STRING_TOKEN(STR_MEMORY_RDIMM_PROMPT),
> value = STR_MEMORY_RDIMM_PROMPT, flags = DEFAULT;
> +          option text = STRING_TOKEN(STR_MEMORY_UDIMM_PROMPT),
> value = STR_MEMORY_UDIMM_PROMPT,   flags = 0;
> +          option text = STRING_TOKEN(STR_MEMORY_SO_DIMM_PROMPT),
> value = STR_MEMORY_SO_DIMM_PROMPT,   flags = 0;
> +          option text = STRING_TOKEN(STR_MEMORY_LRDIMM_PROMPT),
> value = STR_MEMORY_LRDIMM_PROMPT, flags = 0;
> +          option text = STRING_TOKEN(STR_MEMORY_MINI_RDIMM_PROMPT),
> value = STR_MEMORY_MINI_RDIMM_PROMPT,   flags = 0;
> +          option text =
> STRING_TOKEN(STR_MEMORY_MINI_UDIMM_PROMPT),    value =
> STR_MEMORY_MINI_UDIMM_PROMPT,   flags = 0;
> +    endoneof;
> +
> +    string varid = Hii2RedfishMemoryEfiVar.Memory[1].ModuleProductId,
> +        prompt =
> STRING_TOKEN(STR_MEMORY_2_MODULE_PRODUCT_ID_PROMPT),
> +        help =
> STRING_TOKEN(STR_MEMORY_2_MODULE_PRODUCT_ID_HELP),
> +        flags = READ_ONLY,
> +        minsize = ID_STRING_MIN,
> +        maxsize = ID_STRING_MAX,
> +    endstring;
> +
> +    numeric varid   = Hii2RedfishMemoryEfiVar.Memory[1].BusWidthBits,
> +            prompt  =
> STRING_TOKEN(STR_MEMORY_2_BUS_WIDTH_BITS_PROMPT),
> +            help    = STRING_TOKEN(STR_MEMORY_2_BUS_WIDTH_BITS_HELP),
> +            minimum = 0,
> +            maximum = 0xff,
> +            step    = 1,
> +            default = 20,
> +    endnumeric;
> +
> +    checkbox varid   =
> Hii2RedfishMemoryEfiVar.Memory[1].ConfigurationLocked,
> +             prompt   =
> STRING_TOKEN(STR_MEMORY_2_CONFIGURATION_LOCKED_PROMPT),
> +             help     =
> STRING_TOKEN(STR_MEMORY_2_CONFIGURATION_LOCKED_HELP),
> +             flags    = CHECKBOX_DEFAULT,
> +             default  = TRUE,
> +    endcheckbox;
> +
> +  endform;
> +
> +  form formid = FROM_ID_MEMORY_3,                          // Form ID
> +       title  = STRING_TOKEN(STR_FORM_TITLE_MEMORY_3);     // Form title
> +
> +    oneof varid = Hii2RedfishMemoryEfiVar.Memory[2].BaseModuleType,
> +          questionid = QUESTION_ID_MEMORY_3_BASE_MODULE_TYPE,
> +          prompt =
> STRING_TOKEN(STR_MEMORY_3_BASE_MODULE_TYPE_PROMPT),
> +          help   =
> STRING_TOKEN(STR_MEMORY_3_BASE_MODULE_TYPE_HELP),
> +          flags  = INTERACTIVE | NUMERIC_SIZE_1,
> +          option text = STRING_TOKEN(STR_MEMORY_RDIMM_PROMPT),
> value = STR_MEMORY_RDIMM_PROMPT, flags = DEFAULT;
> +          option text = STRING_TOKEN(STR_MEMORY_UDIMM_PROMPT),
> value = STR_MEMORY_UDIMM_PROMPT,   flags = 0;
> +          option text = STRING_TOKEN(STR_MEMORY_SO_DIMM_PROMPT),
> value = STR_MEMORY_SO_DIMM_PROMPT,   flags = 0;
> +          option text = STRING_TOKEN(STR_MEMORY_LRDIMM_PROMPT),
> value = STR_MEMORY_LRDIMM_PROMPT, flags = 0;
> +          option text = STRING_TOKEN(STR_MEMORY_MINI_RDIMM_PROMPT),
> value = STR_MEMORY_MINI_RDIMM_PROMPT,   flags = 0;
> +          option text =
> STRING_TOKEN(STR_MEMORY_MINI_UDIMM_PROMPT),    value =
> STR_MEMORY_MINI_UDIMM_PROMPT,   flags = 0;
> +    endoneof;
> +
> +    string varid = Hii2RedfishMemoryEfiVar.Memory[2].ModuleProductId,
> +        prompt =
> STRING_TOKEN(STR_MEMORY_3_MODULE_PRODUCT_ID_PROMPT),
> +        help =
> STRING_TOKEN(STR_MEMORY_3_MODULE_PRODUCT_ID_HELP),
> +        flags = READ_ONLY,
> +        minsize = ID_STRING_MIN,
> +        maxsize = ID_STRING_MAX,
> +    endstring;
> +
> +    numeric varid   = Hii2RedfishMemoryEfiVar.Memory[2].BusWidthBits,
> +            prompt  =
> STRING_TOKEN(STR_MEMORY_3_BUS_WIDTH_BITS_PROMPT),
> +            help    = STRING_TOKEN(STR_MEMORY_3_BUS_WIDTH_BITS_HELP),
> +            minimum = 0,
> +            maximum = 0xff,
> +            step    = 1,
> +            default = 20,
> +    endnumeric;
> +
> +    checkbox varid   =
> Hii2RedfishMemoryEfiVar.Memory[2].ConfigurationLocked,
> +             prompt   =
> STRING_TOKEN(STR_MEMORY_3_CONFIGURATION_LOCKED_PROMPT),
> +             help     =
> STRING_TOKEN(STR_MEMORY_3_CONFIGURATION_LOCKED_HELP),
> +             flags    = CHECKBOX_DEFAULT,
> +             default  = TRUE,
> +    endcheckbox;
> +
> +  endform;
> +
> +  form formid = FROM_ID_MEMORY_4,                          // Form ID
> +       title  = STRING_TOKEN(STR_FORM_TITLE_MEMORY_3);     // Form title
> +
> +    oneof varid = Hii2RedfishMemoryEfiVar.Memory[3].BaseModuleType,
> +          questionid = QUESTION_ID_MEMORY_4_BASE_MODULE_TYPE,
> +          prompt =
> STRING_TOKEN(STR_MEMORY_4_BASE_MODULE_TYPE_PROMPT),
> +          help   =
> STRING_TOKEN(STR_MEMORY_4_BASE_MODULE_TYPE_HELP),
> +          flags  = INTERACTIVE | NUMERIC_SIZE_1,
> +          option text = STRING_TOKEN(STR_MEMORY_RDIMM_PROMPT),
> value = STR_MEMORY_RDIMM_PROMPT, flags = DEFAULT;
> +          option text = STRING_TOKEN(STR_MEMORY_UDIMM_PROMPT),
> value = STR_MEMORY_UDIMM_PROMPT,   flags = 0;
> +          option text = STRING_TOKEN(STR_MEMORY_SO_DIMM_PROMPT),
> value = STR_MEMORY_SO_DIMM_PROMPT,   flags = 0;
> +          option text = STRING_TOKEN(STR_MEMORY_LRDIMM_PROMPT),
> value = STR_MEMORY_LRDIMM_PROMPT, flags = 0;
> +          option text = STRING_TOKEN(STR_MEMORY_MINI_RDIMM_PROMPT),
> value = STR_MEMORY_MINI_RDIMM_PROMPT,   flags = 0;
> +          option text =
> STRING_TOKEN(STR_MEMORY_MINI_UDIMM_PROMPT),    value =
> STR_MEMORY_MINI_UDIMM_PROMPT,   flags = 0;
> +    endoneof;
> +
> +    string varid = Hii2RedfishMemoryEfiVar.Memory[3].ModuleProductId,
> +        prompt =
> STRING_TOKEN(STR_MEMORY_4_MODULE_PRODUCT_ID_PROMPT),
> +        help =
> STRING_TOKEN(STR_MEMORY_4_MODULE_PRODUCT_ID_HELP),
> +        flags = READ_ONLY,
> +        minsize = ID_STRING_MIN,
> +        maxsize = ID_STRING_MAX,
> +    endstring;
> +
> +    numeric varid   = Hii2RedfishMemoryEfiVar.Memory[3].BusWidthBits,
> +            prompt  =
> STRING_TOKEN(STR_MEMORY_4_BUS_WIDTH_BITS_PROMPT),
> +            help    = STRING_TOKEN(STR_MEMORY_4_BUS_WIDTH_BITS_HELP),
> +            minimum = 0,
> +            maximum = 0xff,
> +            step    = 1,
> +            default = 20,
> +    endnumeric;
> +
> +    checkbox varid   =
> Hii2RedfishMemoryEfiVar.Memory[3].ConfigurationLocked,
> +             prompt   =
> STRING_TOKEN(STR_MEMORY_4_CONFIGURATION_LOCKED_PROMPT),
> +             help     =
> STRING_TOKEN(STR_MEMORY_4_CONFIGURATION_LOCKED_HELP),
> +             flags    = CHECKBOX_DEFAULT,
> +             default  = TRUE,
> +    endcheckbox;
> +
> +  endform;
> +
> +endformset;
> \ No newline at end of file
> diff --git a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c
> new file mode 100644
> index 00000000000..4c13a197fa4
> --- /dev/null
> +++ b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxe.c
> @@ -0,0 +1,294 @@
> +/** @file
> +  HII-to-Redfish memory driver.
> +
> +  (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include "Hii2RedfishMemoryDxe.h"
> +
> +EFI_GUID        mHii2RedfishMemoryGuid =
> HII_2_REDFISH_MEMORY_FORMSET_GUID;
> +EFI_HII_HANDLE  mHiiHandle;
> +EFI_HANDLE      DriverHandle;
> +CHAR16          Hii2RedfishEfiVar[] = L"Hii2RedfishMemoryEfiVar";
> +
> +///
> +/// 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_MEMORY_FORMSET_GUID
> +  },
> +  {
> +    END_DEVICE_PATH_TYPE,
> +    END_ENTIRE_DEVICE_PATH_SUBTYPE,
> +    {
> +      (UINT8) (END_DEVICE_PATH_LENGTH),
> +      (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8)
> +    }
> +  }
> +};
> +
> +/**
> +  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_MEMORY_EFI_VARSTORE_DATA Hii2RedfishMemoryVar;
> +  UINTN      Index;
> +
> +  //
> +  // Get Buffer Storage data from EFI variable.
> +  // Try to get the current setting from variable.
> +  //
> +  BufferSize = sizeof (HII_2_REDFISH_MEMORY_EFI_VARSTORE_DATA);
> +  Status = gRT->GetVariable (
> +            Hii2RedfishEfiVar,
> +            &gHii2RedfishMemoryFormsetGuid,
> +            NULL,
> +            &BufferSize,
> +            &Hii2RedfishMemoryVar
> +            );
> +  if (!EFI_ERROR (Status)) {
> +    return EFI_SUCCESS;
> +  }
> +
> +  //
> +  // Initialization
> +  //
> +  for (Index = 0; Index < MEMORY_MAX_NO; Index++) {
> +    Hii2RedfishMemoryVar.Memory[Index].BaseModuleType =
> STR_MEMORY_RDIMM_PROMPT;
> +    Hii2RedfishMemoryVar.Memory[Index].BusWidthBits = 20;
> +    Hii2RedfishMemoryVar.Memory[Index].ConfigurationLocked = TRUE;
> +    StrCpyS (Hii2RedfishMemoryVar.Memory[Index].ModuleProductId,
> ID_STRING_MAX_WITH_TERMINATOR, L"1234");
> +  }
> +
> +  Status = gRT->SetVariable (
> +                  Hii2RedfishEfiVar,
> +                  &gHii2RedfishMemoryFormsetGuid,
> +                  VARIABLE_ATTRIBUTE_NV_BS,
> +                  BufferSize,
> +                  &Hii2RedfishMemoryVar
> +                  );
> +
> +  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
> +Hii2RedfishMemoryExtractConfig (
> +  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;
> +  }
> +
> +  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, &gHii2RedfishMemoryFormsetGuid,
> L"Hii2RedfishMemoryEfiVar")) {
> +      return EFI_UNSUPPORTED;
> +  }
> +
> +  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
> +Hii2RedfishMemoryRouteConfig (
> +  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL   *This,
> +  IN  CONST EFI_STRING                       Configuration,
> +  OUT EFI_STRING                             *Progress
> +  )
> +{
> +  DEBUG ((DEBUG_INFO, "%a, unsupported\n", __FUNCTION__));
> +
> +  return EFI_UNSUPPORTED;
> +}
> +
> +
> +/**
> +  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
> +Hii2RedfishMemoryDriverCallback (
> +  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", __FUNCTION__,
> Action, QuestionId));
> +
> +  return EFI_UNSUPPORTED;
> +}
> +
> +EFI_HII_CONFIG_ACCESS_PROTOCOL  mHii2RedfishConfigAccess = {
> +  Hii2RedfishMemoryExtractConfig,
> +  Hii2RedfishMemoryRouteConfig,
> +  Hii2RedfishMemoryDriverCallback
> +};
> +
> +/**
> +  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
> +Hii2RedfishMemoryDxeDriverEntryPoint (
> +  IN EFI_HANDLE         ImageHandle,
> +  IN EFI_SYSTEM_TABLE   *SystemTable
> +  )
> +{
> +  EFI_STATUS  Status;
> +
> +  DriverHandle = NULL;
> +  Status = gBS->InstallMultipleProtocolInterfaces (
> +                  &DriverHandle,
> +                  &gEfiDevicePathProtocolGuid,
> +                  &mHiiVendorDevicePath,
> +                  &gEfiHiiConfigAccessProtocolGuid,
> +                  &mHii2RedfishConfigAccess,
> +                  NULL
> +                  );
> +
> +  //
> +  // Publish our HII data
> +  //
> +  mHiiHandle = HiiAddPackages (
> +                 &mHii2RedfishMemoryGuid,
> +                 DriverHandle,
> +                 Hii2RedfishMemoryDxeStrings,
> +                 Hii2RedfishMemoryVfrBin,
> +                 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",
> __FUNCTION__, 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
> +Hii2RedfishMemoryDxeDriverUnload (
> +  IN EFI_HANDLE  ImageHandle
> +  )
> +{
> +  if (mHiiHandle != NULL) {
> +    HiiRemovePackages (mHiiHandle);
> +  }
> +
> +  return EFI_SUCCESS;
> +}
> diff --git
> a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni
> new file mode 100644
> index 00000000000..66e2ece21f5
> --- /dev/null
> +++
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeMap.uni
> @@ -0,0 +1,38 @@
> +/** @file
> +  HII-to-Redfish memory driver.
> +
> +  (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +/=#
> +#langdef   x-uefi-redfish-Memory.v1_7_1 "Memory.v1_7_1"
> +
> +#string STR_MEMORY_1_BASE_MODULE_TYPE_PROMPT         #language x-
> uefi-redfish-Memory.v1_7_1   "/Memory/{1}/BaseModuleType"
> +#string STR_MEMORY_1_BUS_WIDTH_BITS_PROMPT           #language x-
> uefi-redfish-Memory.v1_7_1   "/Memory/{1}/BusWidthBits"
> +#string STR_MEMORY_1_CONFIGURATION_LOCKED_PROMPT     #language
> x-uefi-redfish-Memory.v1_7_1   "/Memory/{1}/ConfigurationLocked"
> +#string STR_MEMORY_1_MODULE_PRODUCT_ID_PROMPT        #language
> x-uefi-redfish-Memory.v1_7_1   "/Memory/{1}/ModuleProductID"
> +
> +#string STR_MEMORY_2_BASE_MODULE_TYPE_PROMPT         #language x-
> uefi-redfish-Memory.v1_7_1   "/Memory/{2}/BaseModuleType"
> +#string STR_MEMORY_2_BUS_WIDTH_BITS_PROMPT           #language x-
> uefi-redfish-Memory.v1_7_1   "/Memory/{2}/BusWidthBits"
> +#string STR_MEMORY_2_CONFIGURATION_LOCKED_PROMPT     #language
> x-uefi-redfish-Memory.v1_7_1   "/Memory/{2}/ConfigurationLocked"
> +#string STR_MEMORY_2_MODULE_PRODUCT_ID_PROMPT        #language
> x-uefi-redfish-Memory.v1_7_1   "/Memory/{2}/ModuleProductID"
> +
> +#string STR_MEMORY_3_BASE_MODULE_TYPE_PROMPT         #language x-
> uefi-redfish-Memory.v1_7_1   "/Memory/{3}/BaseModuleType"
> +#string STR_MEMORY_3_BUS_WIDTH_BITS_PROMPT           #language x-
> uefi-redfish-Memory.v1_7_1   "/Memory/{3}/BusWidthBits"
> +#string STR_MEMORY_3_CONFIGURATION_LOCKED_PROMPT     #language
> x-uefi-redfish-Memory.v1_7_1   "/Memory/{3}/ConfigurationLocked"
> +#string STR_MEMORY_3_MODULE_PRODUCT_ID_PROMPT        #language
> x-uefi-redfish-Memory.v1_7_1   "/Memory/{3}/ModuleProductID"
> +
> +#string STR_MEMORY_4_BASE_MODULE_TYPE_PROMPT         #language x-
> uefi-redfish-Memory.v1_7_1   "/Memory/{5}/BaseModuleType"
> +#string STR_MEMORY_4_BUS_WIDTH_BITS_PROMPT           #language x-
> uefi-redfish-Memory.v1_7_1   "/Memory/{5}/BusWidthBits"
> +#string STR_MEMORY_4_CONFIGURATION_LOCKED_PROMPT     #language
> x-uefi-redfish-Memory.v1_7_1   "/Memory/{5}/ConfigurationLocked"
> +#string STR_MEMORY_4_MODULE_PRODUCT_ID_PROMPT        #language
> x-uefi-redfish-Memory.v1_7_1   "/Memory/{5}/ModuleProductID"
> +
> +#string STR_MEMORY_RDIMM_PROMPT                     #language x-uefi-
> redfish-Memory.v1_7_1   "RDIMM"
> +#string STR_MEMORY_UDIMM_PROMPT                     #language x-uefi-
> redfish-Memory.v1_7_1   "UDIMM"
> +#string STR_MEMORY_SO_DIMM_PROMPT                   #language x-uefi-
> redfish-Memory.v1_7_1   "SO_DIMM"
> +#string STR_MEMORY_LRDIMM_PROMPT                    #language x-uefi-
> redfish-Memory.v1_7_1   "LRDIMM"
> +#string STR_MEMORY_MINI_RDIMM_PROMPT                #language x-uefi-
> redfish-Memory.v1_7_1   "Mini_RDIMM"
> +#string STR_MEMORY_MINI_UDIMM_PROMPT                #language x-uefi-
> redfish-Memory.v1_7_1   "Mini_UDIMM"
> \ No newline at end of file
> diff --git
> a/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.uni
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.uni
> new file mode 100644
> index 00000000000..92e8b8b5f3d
> --- /dev/null
> +++
> b/EmulatorPkg/Hii2RedfishMemoryDxe/Hii2RedfishMemoryDxeStrings.uni
> @@ -0,0 +1,68 @@
> +/** @file
> +  HII-to-Redfish memory driver.
> +
> +  (C) Copyright 2021 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
> (Memory)"
> +#string STR_FORM_SET_TITLE_HELP                #language en-US    "HII to
> Redfish (Memory)"
> +#string STR_FORM_TITLE                         #language en-US    "HII to Redfish
> Memory properties"
> +
> +#string STR_FORM_TITLE_MEMORY_1                #language en-US    "Memory
> 1"
> +#string STR_FORM_HELP_MEMORY_1                 #language en-US    "Memory
> 1"
> +#string STR_FORM_TITLE_MEMORY_2                #language en-US    "Memory
> 2"
> +#string STR_FORM_HELP_MEMORY_2                 #language en-US    "Memory
> 2"
> +#string STR_FORM_TITLE_MEMORY_3                #language en-US    "Memory
> 3"
> +#string STR_FORM_HELP_MEMORY_3                 #language en-US    "Memory
> 3"
> +#string STR_FORM_TITLE_MEMORY_4                #language en-US    "Memory
> 5"
> +#string STR_FORM_HELP_MEMORY_4                 #language en-US    "Memory
> 5"
> +
> +
> +#string STR_MEMORY_1_BASE_MODULE_TYPE_PROMPT     #language en-
> US   "Base module type"
> +#string STR_MEMORY_1_BASE_MODULE_TYPE_HELP       #language en-US
> "The value of this property shall be the base module type of Memory"
> +#string STR_MEMORY_1_BUS_WIDTH_BITS_PROMPT       #language en-US
> "Bus Width in bits"
> +#string STR_MEMORY_1_BUS_WIDTH_BITS_HELP         #language en-US
> "The value of this property shall be the bus width in bits"
> +#string STR_MEMORY_1_CONFIGURATION_LOCKED_PROMPT #language
> en-US   "Configuration Locked"
> +#string STR_MEMORY_1_CONFIGURATION_LOCKED_HELP   #language en-
> US   "The value of this property shall be the current configuration lock state
> of this memory. True shall indicate that the configuration is locked and
> cannot be altered. False shall indicate that the configuration is not locked and
> may be altered"
> +#string STR_MEMORY_1_MODULE_PRODUCT_ID_PROMPT    #language en-
> US   "Module Product ID"
> +#string STR_MEMORY_1_MODULE_PRODUCT_ID_HELP      #language en-US
> "The product ID of this memory module."
> +
> +#string STR_MEMORY_2_BASE_MODULE_TYPE_PROMPT     #language en-
> US   "Base module type"
> +#string STR_MEMORY_2_BASE_MODULE_TYPE_HELP       #language en-US
> "The value of this property shall be the base module type of Memory"
> +#string STR_MEMORY_2_BUS_WIDTH_BITS_PROMPT       #language en-US
> "Bus Width in bits"
> +#string STR_MEMORY_2_BUS_WIDTH_BITS_HELP         #language en-US
> "The value of this property shall be the bus width in bits"
> +#string STR_MEMORY_2_CONFIGURATION_LOCKED_PROMPT #language
> en-US   "Configuration Locked"
> +#string STR_MEMORY_2_CONFIGURATION_LOCKED_HELP   #language en-
> US   "The value of this property shall be the current configuration lock state
> of this memory. True shall indicate that the configuration is locked and
> cannot be altered. False shall indicate that the configuration is not locked and
> may be altered"
> +#string STR_MEMORY_2_MODULE_PRODUCT_ID_PROMPT    #language en-
> US   "Module Product ID"
> +#string STR_MEMORY_2_MODULE_PRODUCT_ID_HELP      #language en-US
> "The product ID of this memory module."
> +
> +#string STR_MEMORY_3_BASE_MODULE_TYPE_PROMPT     #language en-
> US   "Base module type"
> +#string STR_MEMORY_3_BASE_MODULE_TYPE_HELP       #language en-US
> "The value of this property shall be the base module type of Memory"
> +#string STR_MEMORY_3_BUS_WIDTH_BITS_PROMPT       #language en-US
> "Bus Width in bits"
> +#string STR_MEMORY_3_BUS_WIDTH_BITS_HELP         #language en-US
> "The value of this property shall be the bus width in bits"
> +#string STR_MEMORY_3_CONFIGURATION_LOCKED_PROMPT #language
> en-US   "Configuration Locked"
> +#string STR_MEMORY_3_CONFIGURATION_LOCKED_HELP   #language en-
> US   "The value of this property shall be the current configuration lock state
> of this memory. True shall indicate that the configuration is locked and
> cannot be altered. False shall indicate that the configuration is not locked and
> may be altered"
> +#string STR_MEMORY_3_MODULE_PRODUCT_ID_PROMPT    #language en-
> US   "Module Product ID"
> +#string STR_MEMORY_3_MODULE_PRODUCT_ID_HELP      #language en-US
> "The product ID of this memory module."
> +
> +#string STR_MEMORY_4_BASE_MODULE_TYPE_PROMPT     #language en-
> US   "Base module type"
> +#string STR_MEMORY_4_BASE_MODULE_TYPE_HELP       #language en-US
> "The value of this property shall be the base module type of Memory"
> +#string STR_MEMORY_4_BUS_WIDTH_BITS_PROMPT       #language en-US
> "Bus Width in bits"
> +#string STR_MEMORY_4_BUS_WIDTH_BITS_HELP         #language en-US
> "The value of this property shall be the bus width in bits"
> +#string STR_MEMORY_4_CONFIGURATION_LOCKED_PROMPT #language
> en-US   "Configuration Locked"
> +#string STR_MEMORY_4_CONFIGURATION_LOCKED_HELP   #language en-
> US   "The value of this property shall be the current configuration lock state
> of this memory. True shall indicate that the configuration is locked and
> cannot be altered. False shall indicate that the configuration is not locked and
> may be altered"
> +#string STR_MEMORY_4_MODULE_PRODUCT_ID_PROMPT    #language en-
> US   "Module Product ID"
> +#string STR_MEMORY_4_MODULE_PRODUCT_ID_HELP      #language en-US
> "The product ID of this memory module."
> +
> +#string STR_MEMORY_RDIMM_PROMPT                  #language en-US
> "RDIMM"
> +#string STR_MEMORY_UDIMM_PROMPT                  #language en-US
> "UDIMM"
> +#string STR_MEMORY_SO_DIMM_PROMPT                #language en-US
> "SO_DIMM"
> +#string STR_MEMORY_LRDIMM_PROMPT                 #language en-US
> "LRDIMM"
> +#string STR_MEMORY_MINI_RDIMM_PROMPT             #language en-US
> "Mini_RDIMM"
> +#string STR_MEMORY_MINI_UDIMM_PROMPT             #language en-US
> "Mini_UDIMM"
> --
> 2.21.0.windows.1
> 
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-10-29  8:40 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <16B25D0D5E069C47.9643@groups.io>
2021-10-29  8:39 ` [edk2-devel] [PATCH] edk2-staging/EmulatorPkg: Add a sample memory configuration HII driver Abner Chang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox