## @file  MdeModulePkg.dec
# This package provides the modules that conform to UEFI/PI Industry standards.
# It also provides the definitions(including PPIs/PROTOCOLs/GUIDs and library classes)
# and libraries instances, which are used for those modules.
#
# Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.
# Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
# (C) Copyright 2016 - 2019 Hewlett Packard Enterprise Development LP<BR>
# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
# Copyright (c) Microsoft Corporation.<BR>
# Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##


[Defines]
  DEC_SPECIFICATION              = 0x00010005
  PACKAGE_NAME                   = MdeModulePkg
  PACKAGE_UNI_FILE               = MdeModulePkg.uni
  PACKAGE_GUID                   = BA0D78D6-2CAF-414b-BD4D-B6762A894288
  PACKAGE_VERSION                = 0.98

[Includes]
  Include

[Includes.Common.Private]
  Library/BrotliCustomDecompressLib/brotli/c/include

[LibraryClasses]
  ##  @libraryclass  Defines a set of methods to reset whole system.
  ResetSystemLib|Include/Library/ResetSystemLib.h

  ##  @libraryclass  Business logic for storing and testing variable policies
  VariablePolicyLib|Include/Library/VariablePolicyLib.h

  ##  @libraryclass  Defines a set of helper functions for resetting the system.
  ResetUtilityLib|Include/Library/ResetUtilityLib.h

  ##  @libraryclass  Provides HII related functions.
  HiiLib|Include/Library/HiiLib.h

  ##  @libraryclass  Defines a set of interfaces on how to process capusle image update.
  CapsuleLib|Include/Library/CapsuleLib.h

  ##  @libraryclass    Provides global variables that are pointers
  #   to the UEFI HII related protocols.
  #
  UefiHiiServicesLib|Include/Library/UefiHiiServicesLib.h

  ##  @libraryclass    Provides a set of interfaces to abstract the policy of security measurement.
  #
  SecurityManagementLib|Include/Library/SecurityManagementLib.h

  ##  @libraryclass  OEM status code libary is used to report status code to OEM device.
  #
  OemHookStatusCodeLib|Include/Library/OemHookStatusCodeLib.h

  ##  @libraryclass  Debug Agent is used to provide soft debug capability.
  #
  DebugAgentLib|Include/Library/DebugAgentLib.h

  ##  @libraryclass  Provide platform specific hooks.
  #
  PlatformHookLib|Include/Library/PlatformHookLib.h

  ##  @libraryclass  Provide platform specific hooks for SMM core.
  #
  SmmCorePlatformHookLib|Include/Library/SmmCorePlatformHookLib.h

  ##  @libraryclass  Provide capability to maintain the data integrity cross S3 phase.
  #
  LockBoxLib|Include/Library/LockBoxLib.h

  ##  @libraryclass  Provide the CPU exception handler.
  #
  CpuExceptionHandlerLib|Include/Library/CpuExceptionHandlerLib.h

  ##  @libraryclass    Provides platform specific display interface.
  #
  CustomizedDisplayLib|Include/Library/CustomizedDisplayLib.h

  ## @libraryclass   Provides sorting functions
  SortLib|Include/Library/SortLib.h

  ## @libraryclass   Provides core boot manager functions
  UefiBootManagerLib|Include/Library/UefiBootManagerLib.h

  ## @libraryclass   Provides core boot manager functions
  PlatformBootManagerLib|Include/Library/PlatformBootManagerLib.h

  ## @libraryclass  Provides common interfaces about TPM measurement for other modules.
  #
  TpmMeasurementLib|Include/Library/TpmMeasurementLib.h

  ## @libraryclass  Provides authenticated variable services.
  #
  AuthVariableLib|Include/Library/AuthVariableLib.h

  ## @libraryclass  Provides variable check services and database management.
  #
  VarCheckLib|Include/Library/VarCheckLib.h

  ## @libraryclass  Provides services to get variable error flag and do platform variable cleanup.
  #
  PlatformVarCleanupLib|Include/Library/PlatformVarCleanupLib.h

  ## @libraryclass  Provides services to get do the file explorer.
  #
  FileExplorerLib|Include/Library/FileExplorerLib.h

  ## @libraryclass  Provides interfaces about logo display.
  #
  BootLogoLib|Include/Library/BootLogoLib.h

  ## @libraryclass  Provides interfaces about Ipmi submit generic commond.
  #
  IpmiLib|Include/Library/IpmiLib.h

  ## @libraryclass  Provides interfaces to send/receive IPMI command.
  #
  IpmiCommandLib|Include/Library/IpmiCommandLib.h

  ## @libraryclass  Provides interfaces for platform to return root bridge information to PciHostBridgeDxe driver.
  #
  PciHostBridgeLib|Include/Library/PciHostBridgeLib.h

  ## @libraryclass  Provides services to record memory profile of multilevel caller.
  #
  MemoryProfileLib|Include/Library/MemoryProfileLib.h

  ##  @libraryclass  Provides an interface for performing UEFI Graphics Output Protocol Video blt operations.
  ##
  FrameBufferBltLib|Include/Library/FrameBufferBltLib.h

  ## @libraryclass  Provides services to authenticate a UEFI defined FMP Capsule.
  #
  FmpAuthenticationLib|Include/Library/FmpAuthenticationLib.h

  ## @libraryclass   Provides a service to register non-discoverable device
  ##
  NonDiscoverableDeviceRegistrationLib|Include/Library/NonDiscoverableDeviceRegistrationLib.h

  ## @libraryclass  Provides services to convert a BMP graphics image to a GOP BLT buffer
  #  and to convert a GOP BLT buffer to a BMP graphics image.
  #
  BmpSupportLib|Include/Library/BmpSupportLib.h

  ## @libraryclass  Provides services to display completion progress when
  #  processing a firmware update that updates the firmware image in a firmware
  #  device.  A platform may provide its own instance of this library class to
  #  customize how a user is informed of completion progress.
  #
  DisplayUpdateProgressLib|Include/Library/DisplayUpdateProgressLib.h

  ##  @libraryclass  This library contains helper functions for marshalling and
  #   registering new policies with the VariablePolicy infrastructure.
  #
  VariablePolicyHelperLib|Include/Library/VariablePolicyHelperLib.h

  ##  @libraryclass  Provides services to access UEFI variable flash information.
  #
  VariableFlashInfoLib|Include/Library/VariableFlashInfoLib.h

[Guids]
  ## MdeModule package token space guid
  # Include/Guid/MdeModulePkgTokenSpace.h
  gEfiMdeModulePkgTokenSpaceGuid       = { 0xA1AFF049, 0xFDEB, 0x442a, { 0xB3, 0x20, 0x13, 0xAB, 0x4C, 0xB7, 0x2B, 0xBC }}

  ## Hob guid for Pcd DataBase
  #  Include/Guid/PcdDataBaseHobGuid.h
  gPcdDataBaseHobGuid            = { 0xEA296D92, 0x0B69, 0x423C, { 0x8C, 0x28, 0x33, 0xB4, 0xE0, 0xA9, 0x12, 0x68 }}

  ## Guid for PCD DataBase signature.
  # Include/Guid/PcdDataBaseSignatureGuid.h
  gPcdDataBaseSignatureGuid = { 0x3c7d193c, 0x682c, 0x4c14, { 0xa6, 0x8f, 0x55, 0x2d, 0xea, 0x4f, 0x43, 0x7e }}

  ## Guid for EDKII implementation GUIDed opcodes
  #  Include/Guid/MdeModuleHii.h
  gEfiIfrTianoGuid      = { 0xf0b1735, 0x87a0, 0x4193, {0xb2, 0x66, 0x53, 0x8c, 0x38, 0xaf, 0x48, 0xce }}

  ## Guid for EDKII implementation extension, used to indaicate there are bit fields in the varstore.
  #  Include/Guid/MdeModuleHii.h
  gEdkiiIfrBitVarstoreGuid  = {0x82DDD68B, 0x9163, 0x4187, {0x9B, 0x27, 0x20, 0xA8, 0xFD, 0x60,0xA7, 0x1D}}

  ## Guid for Framework vfr GUIDed opcodes.
  #  Include/Guid/MdeModuleHii.h
  gEfiIfrFrameworkGuid  = { 0x31ca5d1a, 0xd511, 0x4931, { 0xb7, 0x82, 0xae, 0x6b, 0x2b, 0x17, 0x8c, 0xd7 }}

  ## Guid to specify the System Non Volatile FV
  #  Include/Guid/SystemNvDataGuid.h
  gEfiSystemNvDataFvGuid         = { 0xFFF12B8D, 0x7696, 0x4C8B, { 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50 }}

  ## GUID used as the signature of FTW working block header.
  #  Include/Guid/SystemNvDataGuid.h
  gEdkiiWorkingBlockSignatureGuid   = { 0x9e58292b, 0x7c68, 0x497d, { 0xa0, 0xce, 0x65,  0x0, 0xfd, 0x9f, 0x1b, 0x95 }}

  ## GUID used to build FTW last write data hob and install PPI to inform the check for FTW last write data has been done.
  #  Include/Guid/FaultTolerantWrite.h
  gEdkiiFaultTolerantWriteGuid      = { 0x1d3e9cb8, 0x43af, 0x490b, { 0x83,  0xa, 0x35, 0x16, 0xaa, 0x53, 0x20, 0x47 }}

  ## Guid specify the device is the console out device.
  #  Include/Guid/ConsoleOutDevice.h
  gEfiConsoleOutDeviceGuid       = { 0xD3B36F2C, 0xD551, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}

  ## Guid specify the device is the console in device.
  #  Include/Guid/ConsoleInDevice.h
  gEfiConsoleInDeviceGuid        = { 0xD3B36F2B, 0xD551, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}

  ## Hob and Variable guid specify the platform memory type information.
  #  Include/Guid/MemoryTypeInformation.h
  gEfiMemoryTypeInformationGuid  = { 0x4C19049F, 0x4137, 0x4DD3, { 0x9C, 0x10, 0x8B, 0x97, 0xA8, 0x3F, 0xFD, 0xFA }}

  ## Capsule update hob and variable guid
  #  Include/Guid/CapsuleVendor.h
  gEfiCapsuleVendorGuid          = { 0x711C703F, 0xC285, 0x4B10, { 0xA3, 0xB0, 0x36, 0xEC, 0xBD, 0x3C, 0x8B, 0xE2 }}

  ## Guid specifiy the device is the StdErr device.
  #  Include/Guid/StandardErrorDevice.h
  gEfiStandardErrorDeviceGuid    = { 0xD3B36F2D, 0xD551, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}

  ## Guid acted as variable store header's signature and to specify the variable list entries put in the EFI system table.
  #  Include/Guid/VariableFormat.h
  gEfiVariableGuid           = { 0xddcf3616, 0x3275, 0x4164, { 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d }}

  ## Guid acted as the authenticated variable store header's signature, and to specify the variable list entries put in the EFI system table.
  #  Include/Guid/AuthenticatedVariableFormat.h
  gEfiAuthenticatedVariableGuid = { 0xaaf32c78, 0x947b, 0x439a, { 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92 } }

  #  Include/Guid/VariableIndexTable.h
  gEfiVariableIndexTableGuid  = { 0x8cfdb8c8, 0xd6b2, 0x40f3, { 0x8e, 0x97, 0x02, 0x30, 0x7c, 0xc9, 0x8b, 0x7c }}

  ## Guid is defined for SMM variable module to notify SMM variable wrapper module when variable write service was ready.
  #  Include/Guid/SmmVariableCommon.h
  gSmmVariableWriteGuid  = { 0x93ba1826, 0xdffb, 0x45dd, { 0x82, 0xa7, 0xe7, 0xdc, 0xaa, 0x3b, 0xbd, 0xf3 }}

  ## Guid of the variable flash information HOB.
  #  Include/Guid/VariableFlashInfo.h
  gVariableFlashInfoHobGuid = { 0x5d11c653, 0x8154, 0x4ac3, { 0xa8, 0xc2, 0xfb, 0xa2, 0x89, 0x20, 0xfc, 0x90 }}

  ## Performance protocol guid that also acts as the performance HOB guid and performance variable GUID
  #  Include/Guid/Performance.h
  gPerformanceProtocolGuid       = { 0x76B6BDFA, 0x2ACD, 0x4462, { 0x9E, 0x3F, 0xCB, 0x58, 0xC9, 0x69, 0xD9, 0x37 } }
  gSmmPerformanceProtocolGuid    = { 0xf866226a, 0xeaa5, 0x4f5a, { 0xa9, 0xa,  0x6c, 0xfb, 0xa5, 0x7c, 0x58, 0x8e } }
  gPerformanceExProtocolGuid     = { 0x1ea81bec, 0xf01a, 0x4d98, { 0xa2, 0x1,  0x4a, 0x61, 0xce, 0x2f, 0xc0, 0x22 } }
  gSmmPerformanceExProtocolGuid  = { 0x931fc048, 0xc71d, 0x4455, { 0x89, 0x30, 0x47, 0x6,  0x30, 0xe3, 0xe,  0xe5 } }
  #  Include/Guid/PerformanceMeasurement.h
  gEdkiiPerformanceMeasurementProtocolGuid      = { 0xc85d06be, 0x5f75, 0x48ce, { 0xa8, 0x0f, 0x12, 0x36, 0xba, 0x3b, 0x87, 0xb1 } }
  gEdkiiSmmPerformanceMeasurementProtocolGuid   = { 0xd56b6d73, 0x1a7b, 0x4015, { 0x9b, 0xb4, 0x7b, 0x07, 0x17, 0x29, 0xed, 0x24 } }

  ## Guid is defined for CRC32 encapsulation scheme.
  #  Include/Guid/Crc32GuidedSectionExtraction.h
  gEfiCrc32GuidedSectionExtractionGuid = { 0xFC1BCDB0, 0x7D31, 0x49aa, {0x93, 0x6A, 0xA4, 0x60, 0x0D, 0x9D, 0xD0, 0x83 } }

  ## Include/Guid/StatusCodeCallbackGuid.h
  gStatusCodeCallbackGuid   = {0xe701458c, 0x4900, 0x4ca5, {0xb7, 0x72, 0x3d, 0x37, 0x94, 0x9f, 0x79, 0x27}}

  ## GUID identifies status code records HOB that originate from the PEI status code
  #  Include/Guid/MemoryStatusCodeRecord.h
  gMemoryStatusCodeRecordGuid     = { 0x060CC026, 0x4C0D, 0x4DDA, { 0x8F, 0x41, 0x59, 0x5F, 0xEF, 0x00, 0xA5, 0x02 }}

  ## GUID used to pass DEBUG() macro information through the Status Code Protocol and Status Code PPI
  #  Include/Guid/StatusCodeDataTypeDebug.h
  gEfiStatusCodeDataTypeDebugGuid  = { 0x9A4E9246, 0xD553, 0x11D5, { 0x87, 0xE2, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xB9 }}

  ##  A configuration Table Guid for Load module at fixed address
  #  Include/Guid/LoadModuleAtFixedAddress.h
  gLoadFixedAddressConfigurationTableGuid  = { 0x2CA88B53,0xD296,0x4080, { 0xA4,0xA5,0xCA,0xD9,0xBA,0xE2,0x4B,0x9 } }

  ## GUID used to store the global debug mask value into an EFI Variable
  # Include/Guid/DebugMask.h
  gEfiGenericVariableGuid = { 0x59d1c24f, 0x50f1, 0x401a, {0xb1, 0x01, 0xf3, 0x3e, 0x0d, 0xae, 0xd4, 0x43} }

  ##  Event for the DXE Core to signal idle events
  #  Include/Guid/EventIdle.h
  gIdleLoopEventGuid  = { 0x3c8d294c, 0x5fc3, 0x4451, { 0xbb, 0x31, 0xc4, 0xc0, 0x32, 0x29, 0x5e, 0x6c } }

  ## Include/Guid/RecoveryDevice.h
  gRecoveryOnFatUsbDiskGuid          = { 0x0FFBCE19, 0x324C, 0x4690, { 0xA0, 0x09, 0x98, 0xC6, 0xAE, 0x2E, 0xB1, 0x86 }}

  ## Include/Guid/RecoveryDevice.h
  gRecoveryOnFatIdeDiskGuid          = { 0xB38573B6, 0x6200, 0x4AC5, { 0xB5, 0x1D, 0x82, 0xE6, 0x59, 0x38, 0xD7, 0x83 }}

  ## Include/Guid/RecoveryDevice.h
  gRecoveryOnFatFloppyDiskGuid       = { 0x2E3D2E75, 0x9B2E, 0x412D, { 0xB4, 0xB1, 0x70, 0x41, 0x6B, 0x87, 0x00, 0xFF }}

  ## Include/Guid/RecoveryDevice.h
  gRecoveryOnDataCdGuid              = { 0x5CAC0099, 0x0DC9, 0x48E5, { 0x80, 0x68, 0xBB, 0x95, 0xF5, 0x40, 0x0A, 0x9F }}

  ## Include/Guid/RecoveryDevice.h
  gRecoveryOnFatNvmeDiskGuid         = { 0xC770A27F, 0x956A, 0x497A, { 0x85, 0x48, 0xE0, 0x61, 0x97, 0x58, 0x8B, 0xF6 }}

  ## Include/Guid/SmmLockBox.h
  gEfiSmmLockBoxCommunicationGuid    = { 0x2a3cfebd, 0x27e8, 0x4d0a, { 0x8b, 0x79, 0xd6, 0x88, 0xc2, 0xa3, 0xe1, 0xc0 }}

  ## Include/Guid/AcpiS3Context.h
  gEfiAcpiVariableGuid               = { 0xAF9FFD67, 0xEC10, 0x488A, { 0x9D, 0xFC, 0x6C, 0xBF, 0x5E, 0xE2, 0x2C, 0x2E }}

  ## Include/Guid/AcpiS3Context.h
  gEfiAcpiS3ContextGuid              = { 0xef98d3a, 0x3e33, 0x497a, { 0xa4, 0x1, 0x77, 0xbe, 0x3e, 0xb7, 0x4f, 0x38 }}

  ## Include/Guid/BootScriptExecutorVariable.h
  gEfiBootScriptExecutorVariableGuid = { 0x3079818c, 0x46d4, 0x4a73, { 0xae, 0xf3, 0xe3, 0xe4, 0x6c, 0xf1, 0xee, 0xdb }}
  gEfiBootScriptExecutorContextGuid  = { 0x79cb58c4, 0xac51, 0x442f, { 0xaf, 0xd7, 0x98, 0xe4, 0x7d, 0x2e, 0x99, 0x8 }}

  ## Include/Guid/UsbKeyBoardLayout.h
  gUsbKeyboardLayoutPackageGuid      = { 0xc0f3b43, 0x44de, 0x4907, { 0xb4, 0x78, 0x22, 0x5f, 0x6f, 0x62, 0x89, 0xdc }}
  gUsbKeyboardLayoutKeyGuid          = { 0x3a4d7a7c, 0x18a, 0x4b42, { 0x81, 0xb3, 0xdc, 0x10, 0xe3, 0xb5, 0x91, 0xbd }}

  ## Include/Guid/HiiResourceSampleHii.h
  gHiiResourceSamleFormSetGuid       = { 0x4f4ef7f0, 0xaa29, 0x4ce9, { 0xba, 0x41, 0x64, 0x3e, 0x1, 0x23, 0xa9, 0x9f }}

  ## Include/Guid/DriverSampleHii.h
  gDriverSampleFormSetGuid           = { 0xA04A27f4, 0xDF00, 0x4D42, { 0xB5, 0x52, 0x39, 0x51, 0x13, 0x02, 0x11, 0x3D }}
  gDriverSampleInventoryGuid         = { 0xb3f56470, 0x6141, 0x4621, { 0x8f, 0x19, 0x70, 0x4e, 0x57, 0x7a, 0xa9, 0xe8 }}
  gEfiIfrRefreshIdOpGuid             = { 0xF5E655D9, 0x02A6, 0x46f2, { 0x9E, 0x76, 0xB8, 0xBE, 0x8E, 0x60, 0xAB, 0x22 }}

  ## Include/Guid/PlatDriOverrideHii.h
  gPlatformOverridesManagerGuid      = { 0x8614567d, 0x35be, 0x4415, { 0x8d, 0x88, 0xbd, 0x7d, 0xc, 0x9c, 0x70, 0xc0 }}

  ## Include/Guid/ZeroGuid.h
  gZeroGuid                          = { 0x0, 0x0, 0x0, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}

  ## Include/Guid/MtcVendor.h
  gMtcVendorGuid                     = { 0xeb704011, 0x1402, 0x11d3, { 0x8e, 0x77, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b }}

  ## Guid for Firmware Performance Data Table (FPDT) implementation.
  #  Include/Guid/FirmwarePerformance.h
  gEfiFirmwarePerformanceGuid        = { 0xc095791a, 0x3001, 0x47b2, { 0x80, 0xc9, 0xea, 0xc7, 0x31, 0x9f, 0x2f, 0xa4 }}
  gFirmwarePerformanceS3PointerGuid  = { 0xdc65adc,  0xa973, 0x4130, { 0x8d, 0xf0, 0x2a, 0xdb, 0xeb, 0x9e, 0x4a, 0x31 }}

  ## Include/Guid/ExitBootServiceFailed.h
  gEventExitBootServicesFailedGuid   = { 0x4f6c5507, 0x232f, 0x4787, { 0xb9, 0x5e, 0x72, 0xf8, 0x62, 0x49, 0xc, 0xb1 } }

  ## Include/Guid/ConnectConInEvent.h
  gConnectConInEventGuid             = { 0xdb4e8151, 0x57ed, 0x4bed, { 0x88, 0x33, 0x67, 0x51, 0xb5, 0xd1, 0xa8, 0xd7 }}

  ## Include/Guid/StatusCodeDataTypeVariable.h
  gEdkiiStatusCodeDataTypeVariableGuid = { 0xf6ee6dbb, 0xd67f, 0x4ea0, { 0x8b, 0x96, 0x6a, 0x71, 0xb1, 0x9d, 0x84, 0xad }}

  ## Include/Guid/MemoryProfile.h
  gEdkiiMemoryProfileGuid              = { 0x821c9a09, 0x541a, 0x40f6, { 0x9f, 0x43, 0xa, 0xd1, 0x93, 0xa1, 0x2c, 0xfe }}
  gEdkiiSmmMemoryProfileGuid           = { 0xe22bbcca, 0x516a, 0x46a8, { 0x80, 0xe2, 0x67, 0x45, 0xe8, 0x36, 0x93, 0xbd }}

  ## Include/Protocol/VarErrorFlag.h
  gEdkiiVarErrorFlagGuid               = { 0x4b37fe8, 0xf6ae, 0x480b, { 0xbd, 0xd5, 0x37, 0xd9, 0x8c, 0x5e, 0x89, 0xaa } }

  ## GUID indicates the BROTLI custom compress/decompress algorithm.
  gBrotliCustomDecompressGuid      = { 0x3D532050, 0x5CDA, 0x4FD0, { 0x87, 0x9E, 0x0F, 0x7F, 0x63, 0x0D, 0x5A, 0xFB }}

  ## GUID indicates the LZMA custom compress/decompress algorithm.
  #  Include/Guid/LzmaDecompress.h
  gLzmaCustomDecompressGuid      = { 0xEE4E5898, 0x3914, 0x4259, { 0x9D, 0x6E, 0xDC, 0x7B, 0xD7, 0x94, 0x03, 0xCF }}
  gLzmaF86CustomDecompressGuid     = { 0xD42AE6BD, 0x1352, 0x4bfb, { 0x90, 0x9A, 0xCA, 0x72, 0xA6, 0xEA, 0xE8, 0x89 }}

  ## Include/Guid/TtyTerm.h
  gEfiTtyTermGuid                = { 0x7d916d80, 0x5bb1, 0x458c, {0xa4, 0x8f, 0xe2, 0x5f, 0xdd, 0x51, 0xef, 0x94 }}
  gEdkiiLinuxTermGuid            = { 0xe4364a7f, 0xf825, 0x430e, {0x9d, 0x3a, 0x9c, 0x9b, 0xe6, 0x81, 0x7c, 0xa5 }}
  gEdkiiXtermR6Guid              = { 0xfbfca56b, 0xbb36, 0x4b78, {0xaa, 0xab, 0xbe, 0x1b, 0x97, 0xec, 0x7c, 0xcb }}
  gEdkiiVT400Guid                = { 0x8e46dddd, 0x3d49, 0x4a9d, {0xb8, 0x75, 0x3c, 0x08, 0x6f, 0x6a, 0xa2, 0xbd }}
  gEdkiiSCOTermGuid              = { 0xfc7dd6e0, 0x813c, 0x434d, {0xb4, 0xda, 0x3b, 0xd6, 0x49, 0xe9, 0xe1, 0x5a }}

  ## Include/Guid/HiiBootMaintenanceFormset.h
  gEfiIfrBootMaintenanceGuid      = { 0xb2dedc91, 0xd59f, 0x48d2, { 0x89, 0x8a, 0x12, 0x49, 0xc, 0x74, 0xa4, 0xe0 }}

  gEfiIfrFrontPageGuid        = { 0xe58809f8, 0xfbc1, 0x48e2, { 0x88, 0x3a, 0xa3, 0x0f, 0xdc, 0x4b, 0x44, 0x1e } }

  ## Include/Guid/RamDiskHii.h
  gRamDiskFormSetGuid            = { 0x2a46715f, 0x3581, 0x4a55, { 0x8e, 0x73, 0x2b, 0x76, 0x9a, 0xaa, 0x30, 0xc5 }}

  ## Include/Guid/PiSmmCommunicationRegionTable.h
  gEdkiiPiSmmCommunicationRegionTableGuid = { 0x4e28ca50, 0xd582, 0x44ac, {0xa1, 0x1f, 0xe3, 0xd5, 0x65, 0x26, 0xdb, 0x34}}

  ## Include/Guid/PiSmmMemoryAttributesTable.h
  gEdkiiPiSmmMemoryAttributesTableGuid = { 0x6b9fd3f7, 0x16df, 0x45e8, {0xbd, 0x39, 0xb9, 0x4a, 0x66, 0x54, 0x1a, 0x5d}}

  ## Include/Guid/SmiHandlerProfile.h
  gSmiHandlerProfileGuid = {0x49174342, 0x7108, 0x409b, {0x8b, 0xbe, 0x65, 0xfd, 0xa8, 0x53, 0x89, 0xf5}}

  ## Include/Guid/NonDiscoverableDevice.h
  gEdkiiNonDiscoverableAhciDeviceGuid = { 0xC7D35798, 0xE4D2, 0x4A93, {0xB1, 0x45, 0x54, 0x88, 0x9F, 0x02, 0x58, 0x4B } }
  gEdkiiNonDiscoverableAmbaDeviceGuid = { 0x94440339, 0xCC93, 0x4506, {0xB4, 0xC6, 0xEE, 0x8D, 0x0F, 0x4C, 0xA1, 0x91 } }
  gEdkiiNonDiscoverableEhciDeviceGuid = { 0xEAEE5615, 0x0CFD, 0x45FC, {0x87, 0x69, 0xA0, 0xD8, 0x56, 0x95, 0xAF, 0x85 } }
  gEdkiiNonDiscoverableNvmeDeviceGuid = { 0xC5F25542, 0x2A79, 0x4A26, {0x81, 0xBB, 0x4E, 0xA6, 0x32, 0x33, 0xB3, 0x09 } }
  gEdkiiNonDiscoverableOhciDeviceGuid = { 0xB20005B0, 0xBB2D, 0x496F, {0x86, 0x9C, 0x23, 0x0B, 0x44, 0x79, 0xE7, 0xD1 } }
  gEdkiiNonDiscoverableSdhciDeviceGuid = { 0x1DD1D619, 0xF9B8, 0x463E, {0x86, 0x81, 0xD1, 0xDC, 0x7C, 0x07, 0xB7, 0x2C } }
  gEdkiiNonDiscoverableUfsDeviceGuid = { 0x2EA77912, 0x80A8, 0x4947, {0xBE, 0x69, 0xCD, 0xD0, 0x0A, 0xFB, 0xE5, 0x56 } }
  gEdkiiNonDiscoverableUhciDeviceGuid = { 0xA8CDA0A2, 0x4F37, 0x4A1B, {0x8E, 0x10, 0x8E, 0xF3, 0xCC, 0x3B, 0xF3, 0xA8 } }
  gEdkiiNonDiscoverableXhciDeviceGuid = { 0xB1BE0BC5, 0x6C28, 0x442D, {0xAA, 0x37, 0x15, 0x1B, 0x42, 0x57, 0xBD, 0x78 } }

  ## Include/Guid/PlatformHasAcpi.h
  gEdkiiPlatformHasAcpiGuid = { 0xf0966b41, 0xc23f, 0x41b9, { 0x96, 0x04, 0x0f, 0xf7, 0xe1, 0x11, 0x96, 0x5a } }

  ## Include/Guid/ExtendedFirmwarePerformance.h
  gEdkiiFpdtExtendedFirmwarePerformanceGuid = { 0x3b387bfd, 0x7abc, 0x4cf2, { 0xa0, 0xca, 0xb6, 0xa1, 0x6c, 0x1b, 0x1b, 0x25 } }

  ## Include/Guid/EndofS3Resume.h
  gEdkiiEndOfS3ResumeGuid = { 0x96f5296d, 0x05f7, 0x4f3c, {0x84, 0x67, 0xe4, 0x56, 0x89, 0x0e, 0x0c, 0xb5 } }

  ## Used (similar to Variable Services) to communicate policies to the enforcement engine.
  # {DA1B0D11-D1A7-46C4-9DC9-F3714875C6EB}
  gVarCheckPolicyLibMmiHandlerGuid = { 0xda1b0d11, 0xd1a7, 0x46c4, { 0x9d, 0xc9, 0xf3, 0x71, 0x48, 0x75, 0xc6, 0xeb }}

  ## Include/Guid/S3SmmInitDone.h
  gEdkiiS3SmmInitDoneGuid = { 0x8f9d4825, 0x797d, 0x48fc, { 0x84, 0x71, 0x84, 0x50, 0x25, 0x79, 0x2e, 0xf6 } }

  ## Include/Guid/S3StorageDeviceInitList.h
  gS3StorageDeviceInitListGuid = { 0x310e9b8c, 0xcf90, 0x421e, { 0x8e, 0x9b, 0x9e, 0xef, 0xb6, 0x17, 0xc8, 0xef } }

  ## Include/Guid/SerialPortLibVendor.h
  gEdkiiSerialPortLibVendorGuid = { 0xD3987D4B, 0x971A, 0x435F, { 0x8C, 0xAF, 0x49, 0x67, 0xEB, 0x62, 0x72, 0x41 } }

  ## GUID indicates the capsule is to store Capsule On Disk file names.
  gEdkiiCapsuleOnDiskNameGuid = { 0x98c80a4f, 0xe16b, 0x4d11, { 0x93, 0x9a, 0xab, 0xe5, 0x61, 0x26, 0x3, 0x30 } }

  ## Include/Guid/MigratedFvInfo.h
  gEdkiiMigratedFvInfoGuid = { 0xc1ab12f7, 0x74aa, 0x408d, { 0xa2, 0xf4, 0xc6, 0xce, 0xfd, 0x17, 0x98, 0x71 } }

  #
  # GUID defined in UniversalPayload
  #
  ## Include/UniversalPayload/PciRootBridges.h
  gUniversalPayloadPciRootBridgeInfoGuid = { 0xec4ebacb, 0x2638, 0x416e, { 0xbe, 0x80, 0xe5, 0xfa, 0x4b, 0x51, 0x19, 0x01 }}

  ## Include/UniversalPayload/SmbiosTable.h
  gUniversalPayloadSmbios3TableGuid = { 0x92b7896c, 0x3362, 0x46ce, { 0x99, 0xb3, 0x4f, 0x5e, 0x3c, 0x34, 0xeb, 0x42 } }

  ## Include/UniversalPayload/SmbiosTable.h
  gUniversalPayloadSmbiosTableGuid = { 0x590a0d26, 0x06e5, 0x4d20, { 0x8a, 0x82, 0x59, 0xea, 0x1b, 0x34, 0x98, 0x2d } }

  ## Include/UniversalPayload/AcpiTable.h
  gUniversalPayloadAcpiTableGuid = { 0x9f9a9506, 0x5597, 0x4515, { 0xba, 0xb6, 0x8b, 0xcd, 0xe7, 0x84, 0xba, 0x87 } }

  ## Include/UniversalPayload/ExtraData.h
  gUniversalPayloadExtraDataGuid = {0x15a5baf6, 0x1c91, 0x467d, {0x9d, 0xfb, 0x31, 0x9d, 0x17, 0x8d, 0x4b, 0xb4}}

  ## Include/UniversalPayload/SerialPortInfo.h
  gUniversalPayloadSerialPortInfoGuid = { 0xaa7e190d, 0xbe21, 0x4409, { 0x8e, 0x67, 0xa2, 0xcd, 0xf, 0x61, 0xe1, 0x70 } }

  ## GUID used for Boot Discovery Policy FormSet guid and related variables.
  gBootDiscoveryPolicyMgrFormsetGuid = { 0x5b6f7107, 0xbb3c, 0x4660, { 0x92, 0xcd, 0x54, 0x26, 0x90, 0x28, 0x0b, 0xbd } }

[Ppis]
  ## Include/Ppi/AtaController.h
  gPeiAtaControllerPpiGuid       = { 0xa45e60d1, 0xc719, 0x44aa, { 0xb0, 0x7a, 0xaa, 0x77, 0x7f, 0x85, 0x90, 0x6d }}

  ## Include/Ppi/UsbHostController.h
  gPeiUsbHostControllerPpiGuid   = { 0x652B38A9, 0x77F4, 0x453F, { 0x89, 0xD5, 0xE7, 0xBD, 0xC3, 0x52, 0xFC, 0x53 }}

  ## Include/Ppi/Usb2HostController.h
  gPeiUsb2HostControllerPpiGuid  = { 0xfedd6305, 0xe2d7, 0x4ed5, { 0x9f, 0xaa, 0xda, 0x8, 0xe, 0x33, 0x6c, 0x22   }}

  ## Include/Ppi/UsbController.h
  gPeiUsbControllerPpiGuid       = { 0x3BC1F6DE, 0x693E, 0x4547, { 0xA3, 0x00, 0x21, 0x82, 0x3C, 0xA4, 0x20, 0xB2 }}

  ## Include/Ppi/UsbIo.h
  gPeiUsbIoPpiGuid               = { 0x7C29785C, 0x66B9, 0x49FC, { 0xB7, 0x97, 0x1C, 0xA5, 0x55, 0x0E, 0xF2, 0x83 }}

  ## Include/Ppi/SecPerformance.h
  gPeiSecPerformancePpiGuid      = { 0x0ecc666b, 0x4662, 0x47f9, { 0x9d, 0xd5, 0xd0, 0x96, 0xff, 0x7d, 0xa4, 0x9e }}

  ## Include/Ppi/SmmCommunication.h
  gEfiPeiSmmCommunicationPpiGuid   =  { 0xae933e1c, 0xcc47, 0x4e38, { 0x8f, 0xe, 0xe2, 0xf6, 0x1d, 0x26, 0x5, 0xdf }}

  ## Include/Ppi/SmmAccess.h
  gPeiSmmAccessPpiGuid          =  { 0x268f33a9, 0xcccd, 0x48be, { 0x88, 0x17, 0x86, 0x5, 0x3a, 0xc3, 0x2e, 0xd6 }}

  ## Include/Ppi/SmmControl.h
  gPeiSmmControlPpiGuid         =  { 0x61c68702, 0x4d7e, 0x4f43, { 0x8d, 0xef, 0xa7, 0x43, 0x5, 0xce, 0x74, 0xc5 }}

  ## Include/Ppi/PostBootScriptTable.h
  gPeiPostScriptTablePpiGuid    =  { 0x88c9d306, 0x900, 0x4eb5, { 0x82, 0x60, 0x3e, 0x2d, 0xbe, 0xda, 0x1f, 0x89}}

  ## Include/Ppi/SerialPortPei.h
  gPeiSerialPortPpiGuid         =  { 0x490e9d85, 0x8aef, 0x4193, { 0x8e, 0x56, 0xf7, 0x34, 0xa9, 0xff, 0xac, 0x8b}}

  ## Include/Ppi/UfsHostController.h
  gEdkiiPeiUfsHostControllerPpiGuid  =  { 0xdc54b283, 0x1a77, 0x4cd6, { 0x83, 0xbb, 0xfd, 0xda, 0x46, 0x9a, 0x2e, 0xc6 }}

  ## Include/Ppi/IpmiPpi.h
  gPeiIpmiPpiGuid               =  { 0xa9731431, 0xd968, 0x4277, { 0xb7, 0x52, 0xa3, 0xa9, 0xa6, 0xae, 0x18, 0x98 }}

  ## Include/Ppi/SdMmcHostController.h
  gEdkiiPeiSdMmcHostControllerPpiGuid = { 0xb30dfeed, 0x947f, 0x4396, { 0xb1, 0x5a, 0xdf, 0xbd, 0xb9, 0x16, 0xdc, 0x24 }}

  ## Include/Ppi/IoMmu.h
  gEdkiiIoMmuPpiGuid = { 0x70b0af26, 0xf847, 0x4bb6, { 0xaa, 0xb9, 0xcd, 0xe8, 0x4f, 0xc6, 0x14, 0x31 } }

  ## Include/Ppi/PlatformSpecificResetFilter.h
  gEdkiiPlatformSpecificResetFilterPpiGuid = { 0x8c9f4de3, 0x7b90, 0x47ef, { 0x93, 0x8, 0x28, 0x7c, 0xec, 0xd6, 0x6d, 0xe8 } }

  ## Include/Ppi/PlatformSpecificResetNotification.h
  gEdkiiPlatformSpecificResetNotificationPpiGuid = { 0xe09f355d, 0xdae8, 0x4910, { 0xb1, 0x4a, 0x92, 0x78, 0xf, 0xdc, 0xf7, 0xcb } }

  ## Include/Ppi/PlatformSpecificResetHandler.h
  gEdkiiPlatformSpecificResetHandlerPpiGuid = { 0x75cf14ae, 0x3441, 0x49dc, { 0xaa, 0x10, 0xbb, 0x35, 0xa7, 0xba, 0x8b, 0xab } }

  ## Include/Ppi/NvmExpressHostController.h
  gEdkiiPeiNvmExpressHostControllerPpiGuid  = { 0xcae3aa63, 0x676f, 0x4da3, { 0xbd, 0x50, 0x6c, 0xc5, 0xed, 0xde, 0x9a, 0xad } }

  ## Include/Ppi/AtaAhciController.h
  gEdkiiPeiAtaAhciHostControllerPpiGuid     = { 0x61dd33ea, 0x421f, 0x4cc0, { 0x89, 0x29, 0xff, 0xee, 0xa9, 0xa1, 0xa2, 0x61 } }

  ## Include/Ppi/StorageSecurityCommand.h
  gEdkiiPeiStorageSecurityCommandPpiGuid    = { 0x35de0b4e, 0x30fb, 0x46c3, { 0xbd, 0x84, 0x1f, 0xdb, 0xa1, 0x58, 0xbb, 0x56 } }

  ## Include/Ppi/AtaPassThru.h
  gEdkiiPeiAtaPassThruPpiGuid               = { 0xa16473fd, 0xd474, 0x4c89, { 0xae, 0xc7, 0x90, 0xb8, 0x3c, 0x73, 0x86, 0x9  } }

  ## Include/Ppi/Debug.h
  gEdkiiDebugPpiGuid                        = { 0x999e699c, 0xb013, 0x475e, { 0xb1, 0x7b, 0xf3, 0xa8, 0xae, 0x5c, 0x48, 0x75 } }

  ## Include/Ppi/NvmExpressPassThru.h
  gEdkiiPeiNvmExpressPassThruPpiGuid    = { 0x6af31b2c, 0x3be, 0x46c1, { 0xb1, 0x2d, 0xea, 0x4a, 0x36, 0xdf, 0xa7, 0x4c } }

  ## Include/Ppi/PciDevice.h
  gEdkiiPeiPciDevicePpiGuid                 = { 0x1597ab4f, 0xd542, 0x4efe, { 0x9a, 0xf7, 0xb2, 0x44, 0xec, 0x54, 0x4c, 0x0b } }

  ## Include/Ppi/CapsuleOnDisk.h
  gEdkiiPeiCapsuleOnDiskPpiGuid             = { 0x71a9ea61, 0x5a35, 0x4a5d, { 0xac, 0xef, 0x9c, 0xf8, 0x6d, 0x6d, 0x67, 0xe0 } }
  gEdkiiPeiBootInCapsuleOnDiskModePpiGuid   = { 0xb08a11e4, 0xe2b7, 0x4b75, { 0xb5, 0x15, 0xaf, 0x61, 0x6, 0x68, 0xbf, 0xd1  } }

[Protocols]
  ## Load File protocol provides capability to load and unload EFI image into memory and execute it.
  #  Include/Protocol/LoadPe32Image.h
  #  This protocol is deprecated. Native EDKII module should NOT use this protocol to load/unload image.
  #  If developer need implement such functionality, they should use BasePeCoffLib.
  gEfiLoadPeImageProtocolGuid    = { 0x5CB5C776, 0x60D5, 0x45EE, { 0x88, 0x3C, 0x45, 0x27, 0x08, 0xCD, 0x74, 0x3F }}

  ## Print protocols define basic print functions to print the format unicode and ascii string.
  # Include/Protocol/Print2.h
  gEfiPrint2ProtocolGuid          = { 0xf05976ef, 0x83f1, 0x4f3d, { 0x86, 0x19, 0xf7, 0x59, 0x5d, 0x41, 0xe5, 0x38 } }
  gEfiPrint2SProtocolGuid         = { 0xcc252d2, 0xc106, 0x4661, { 0xb5, 0xbd, 0x31, 0x47, 0xa4, 0xf8, 0x1f, 0x92 } }

  ## This protocol defines the generic memory test interfaces in Dxe phase.
  # Include/Protocol/GenericMemoryTest.h
  gEfiGenericMemTestProtocolGuid = { 0x309DE7F1, 0x7F5E, 0x4ACE, { 0xB4, 0x9C, 0x53, 0x1B, 0xE5, 0xAA, 0x95, 0xEF }}

  ## This protocol defines the Debugger Configuration interface.
  # Include/Protocol/DebuggerConfiguration.h
  gEfiDebuggerConfigurationProtocolGuid = { 0x577d959c, 0xe967, 0x4546, { 0x86, 0x20, 0xc7, 0x78, 0xfa, 0xe5, 0xda, 0x05 }}

  ## Fault Tolerant Write protocol provides boot-time service to do fault tolerant write capability for block devices.
  #  Include/Protocol/FaultTolerantWrite.h
  gEfiFaultTolerantWriteProtocolGuid = { 0x3EBD9E82, 0x2C78, 0x4DE6, { 0x97, 0x86, 0x8D, 0x4B, 0xFC, 0xB7, 0xC8, 0x81 }}

  ## This protocol provides boot-time service to do fault tolerant write capability for block devices in SMM environment.
  #  Include/Protocol/SmmFaultTolerantWrite.h
  gEfiSmmFaultTolerantWriteProtocolGuid = { 0x3868fc3b, 0x7e45, 0x43a7, { 0x90, 0x6c, 0x4b, 0xa4, 0x7d, 0xe1, 0x75, 0x4d }}

  ## This protocol is used to abstract the swap operation of boot block and backup block of boot FV.
  #  Include/Protocol/SwapAddressRange.h
  gEfiSwapAddressRangeProtocolGuid = { 0x1259F60D, 0xB754, 0x468E, { 0xA7, 0x89, 0x4D, 0xB8, 0x5D, 0x55, 0xE8, 0x7E }}

  ## This protocol is used to abstract the swap operation of boot block and backup block of boot FV in SMM environment.
  #  Include/Protocol/SmmSwapAddressRange.h
  gEfiSmmSwapAddressRangeProtocolGuid = { 0x67c4f112, 0x3385, 0x4e55, { 0x9c, 0x5b, 0xc0, 0x5b, 0x71, 0x7c, 0x42, 0x28 }}

  ## This protocol is intended for use as a means to store data in the EFI SMM environment.
  #  Include/Protocol/SmmVariableProtocol.h
  gEfiSmmVariableProtocolGuid = { 0xed32d533, 0x99e6, 0x4209, { 0x9c, 0xc0, 0x2d, 0x72, 0xcd, 0xd9, 0x98, 0xa7 }}

  ## This protocol is intended for use as a means to mark a variable read-only after the event EFI_END_OF_DXE_EVENT_GUID is signaled.
  #  Include/Protocol/VariableLock.h
  gEdkiiVariableLockProtocolGuid = { 0xcd3d0a05, 0x9e24, 0x437c, { 0xa8, 0x91, 0x1e, 0xe0, 0x53, 0xdb, 0x76, 0x38 }}

  ## Include/Protocol/VarCheck.h
  gEdkiiVarCheckProtocolGuid     = { 0xaf23b340, 0x97b4, 0x4685, { 0x8d, 0x4f, 0xa3, 0xf2, 0x81, 0x69, 0xb2, 0x1d } }

  ## Include/Protocol/SmmVarCheck.h
  gEdkiiSmmVarCheckProtocolGuid  = { 0xb0d8f3c1, 0xb7de, 0x4c11, { 0xbc, 0x89, 0x2f, 0xb5, 0x62, 0xc8, 0xc4, 0x11 } }

  ## This protocol is similar with DXE FVB protocol and used in the UEFI SMM evvironment.
  #  Include/Protocol/SmmFirmwareVolumeBlock.h
  gEfiSmmFirmwareVolumeBlockProtocolGuid = { 0xd326d041, 0xbd31, 0x4c01, { 0xb5, 0xa8, 0x62, 0x8b, 0xe8, 0x7f, 0x6, 0x53 }}

  ## This protocol allows the error level mask for DEBUG() macros to be adjusted for DXE Phase modules
  # Include/Guid/DebugMask.h
  gEfiDebugMaskProtocolGuid = { 0x4c8a2451, 0xc207, 0x405b, {0x96, 0x94, 0x99, 0xea, 0x13, 0x25, 0x13, 0x41} }

  ## Include/Protocol/LockBox.h
  gEfiLockBoxProtocolGuid        = { 0xbd445d79, 0xb7ad, 0x4f04, { 0x9a, 0xd8, 0x29, 0xbd, 0x20, 0x40, 0xeb, 0x3c }}

  ## Include/Protocol/FormBrowserEx.h
  gEdkiiFormBrowserExProtocolGuid = { 0x1f73b18d, 0x4630, 0x43c1, { 0xa1, 0xde, 0x6f, 0x80, 0x85, 0x5d, 0x7d, 0xa4 } }

  ## Include/Protocol/EbcVmTest.h
  gEfiEbcVmTestProtocolGuid = { 0xAAEACCFD, 0xF27B, 0x4C17, { 0xB6, 0x10, 0x75, 0xCA, 0x1F, 0x2D, 0xFB, 0x52 } }

  ## Include/Protocol/EbcSimpleDebugger.h
  gEfiEbcSimpleDebuggerProtocolGuid = { 0x2a72d11e, 0x7376, 0x40f6, { 0x9c, 0x68, 0x23, 0xfa, 0x2f, 0xe3, 0x63, 0xf1 } }

  ## Include/Protocol/BootLogo.h
  gEfiBootLogoProtocolGuid = { 0xcdea2bd3, 0xfc25, 0x4c1c, { 0xb9, 0x7c, 0xb3, 0x11, 0x86, 0x6, 0x49, 0x90 } }

  # Include/Protocol/BootLogo2.h
  gEdkiiBootLogo2ProtocolGuid = { 0x4b5dc1df, 0x1eaa, 0x48b2, { 0xa7, 0xe9, 0xea, 0xc4, 0x89, 0xa0, 0xb, 0x5c } }

  ## Include/Protocol/DisplayProtocol.h
  gEdkiiFormDisplayEngineProtocolGuid = { 0x9bbe29e9, 0xfda1, 0x41ec, { 0xad, 0x52, 0x45, 0x22, 0x13, 0x74, 0x2d, 0x2e } }

  ## Include/Protocol/FormBrowserEx2.h
  gEdkiiFormBrowserEx2ProtocolGuid = { 0xa770c357, 0xb693, 0x4e6d, { 0xa6, 0xcf, 0xd2, 0x1c, 0x72, 0x8e, 0x55, 0xb } }

  ## Include/Protocol/UfsHostController.h
  gEdkiiUfsHostControllerProtocolGuid = { 0xebc01af5, 0x7a9, 0x489e, { 0xb7, 0xce, 0xdc, 0x8, 0x9e, 0x45, 0x9b, 0x2f } }

  ## Include/Protocol/UfsHostControllerPlatform.h
  gEdkiiUfsHcPlatformProtocolGuid = { 0x3d18ba13, 0xd9b1, 0x4dd4, {0xb9, 0x16, 0xd3, 0x07, 0x96, 0x53, 0x9e, 0xd8}}

  ## Include/Protocol/EsrtManagement.h
  gEsrtManagementProtocolGuid         = { 0xa340c064, 0x723c, 0x4a9c, { 0xa4, 0xdd, 0xd5, 0xb4, 0x7a, 0x26, 0xfb, 0xb0 }}

  ## Include/Protocol/SmmExitBootServices.h
  gEdkiiSmmExitBootServicesProtocolGuid = { 0x296eb418, 0xc4c8, 0x4e05, { 0xab, 0x59, 0x39, 0xe8, 0xaf, 0x56, 0xf0, 0xa } }

  ## Include/Protocol/SmmLegacyBoot.h
  gEdkiiSmmLegacyBootProtocolGuid = { 0x85a8ab57, 0x644, 0x4110, { 0x85, 0xf, 0x98, 0x13, 0x22, 0x4, 0x70, 0x70 } }

  ## Include/Protocol/SmmReadyToBoot.h
  gEdkiiSmmReadyToBootProtocolGuid = { 0x6e057ecf, 0xfa99, 0x4f39, { 0x95, 0xbc, 0x59, 0xf9, 0x92, 0x1d, 0x17, 0xe4 } }

  ## Include/Protocol/PlatformLogo.h
  gEdkiiPlatformLogoProtocolGuid = { 0x53cd299f, 0x2bc1, 0x40c0, { 0x8c, 0x07, 0x23, 0xf6, 0x4f, 0xdb, 0x30, 0xe0 } }

  ## Include/Protocol/FileExplorer.h
  gEfiFileExplorerProtocolGuid = { 0x2C03C536, 0x4594, 0x4515, { 0x9E, 0x7A, 0xD3, 0xD2, 0x04, 0xFE, 0x13, 0x63 } }

  ## Include/Protocol/IpmiProtocol.h
  gIpmiProtocolGuid    = { 0xdbc6381f, 0x5554, 0x4d14, { 0x8f, 0xfd, 0x76, 0xd7, 0x87, 0xb8, 0xac, 0xbf } }
  gSmmIpmiProtocolGuid = { 0x5169af60, 0x8c5a, 0x4243, { 0xb3, 0xe9, 0x56, 0xc5, 0x6d, 0x18, 0xee, 0x26 } }

  ## PS/2 policy protocol abstracts the specific platform initialization and setting.
  #  Include/Protocol/Ps2Policy.h
  gEfiPs2PolicyProtocolGuid = { 0x4DF19259, 0xDC71, 0x4D46, { 0xBE, 0xF1, 0x35, 0x7B, 0xB5, 0x78, 0xC4, 0x18 } }

  ## Include/Protocol/NonDiscoverableDevice.h
  gEdkiiNonDiscoverableDeviceProtocolGuid = { 0x0d51905b, 0xb77e, 0x452a, {0xa2, 0xc0, 0xec, 0xa0, 0xcc, 0x8d, 0x51, 0x4a } }

  ## Include/Protocol/IoMmu.h
  gEdkiiIoMmuProtocolGuid = { 0x4e939de9, 0xd948, 0x4b0f, { 0x88, 0xed, 0xe6, 0xe1, 0xce, 0x51, 0x7c, 0x1e } }

  ## Include/Protocol/DeviceSecurity.h
  gEdkiiDeviceSecurityProtocolGuid  = { 0x5d6b38c8, 0x5510, 0x4458, { 0xb4, 0x8d, 0x95, 0x81, 0xcf, 0xa7, 0xb0, 0xd } }
  gEdkiiDeviceIdentifierTypePciGuid = { 0x2509b2f1, 0xa022, 0x4cca, { 0xaf, 0x70, 0xf9, 0xd3, 0x21, 0xfb, 0x66, 0x49 } }
  gEdkiiDeviceIdentifierTypeUsbGuid = { 0x7394f350, 0x394d, 0x488c, { 0xbb, 0x75, 0xc, 0xab, 0x7b, 0x12, 0xa, 0xc5 } }

  ## Include/Protocol/SmmMemoryAttribute.h
  gEdkiiSmmMemoryAttributeProtocolGuid = { 0x69b792ea, 0x39ce, 0x402d, { 0xa2, 0xa6, 0xf7, 0x21, 0xde, 0x35, 0x1d, 0xfe } }

  ## Include/Protocol/SdMmcOverride.h
  gEdkiiSdMmcOverrideProtocolGuid = { 0xeaf9e3c1, 0xc9cd, 0x46db, { 0xa5, 0xe5, 0x5a, 0x12, 0x4c, 0x83, 0x23, 0x23 } }

  ## Include/Protocol/PlatformSpecificResetFilter.h
  gEdkiiPlatformSpecificResetFilterProtocolGuid  = { 0x695d7835, 0x8d47, 0x4c11, { 0xab, 0x22, 0xfa, 0x8a, 0xcc, 0xe7, 0xae, 0x7a } }
  ## Include/Protocol/PlatformSpecificResetHandler.h
  gEdkiiPlatformSpecificResetHandlerProtocolGuid = { 0x2df6ba0b, 0x7092, 0x440d, { 0xbd, 0x4, 0xfb, 0x9, 0x1e, 0xc3, 0xf3, 0xc1 } }

  ## Include/Protocol/FirmwareManagementProgress.h
  gEdkiiFirmwareManagementProgressProtocolGuid = { 0x1849bda2, 0x6952, 0x4e86, { 0xa1, 0xdb, 0x55, 0x9a, 0x3c, 0x47, 0x9d, 0xf1 } }

  ## Include/Protocol/AtaAtapiPolicy.h
  gEdkiiAtaAtapiPolicyProtocolGuid = { 0xe59cd769, 0x5083, 0x4f26,{ 0x90, 0x94, 0x6c, 0x91, 0x9f, 0x91, 0x6c, 0x4e } }

  ## Include/Protocol/PeCoffImageEmulator.h
  gEdkiiPeCoffImageEmulatorProtocolGuid = { 0x96f46153, 0x97a7, 0x4793, { 0xac, 0xc1, 0xfa, 0x19, 0xbf, 0x78, 0xea, 0x97 } }

  ## Include/Protocol/PlatformBootManager.h
  gEdkiiPlatformBootManagerProtocolGuid = { 0xaa17add4, 0x756c, 0x460d, { 0x94, 0xb8, 0x43, 0x88, 0xd7, 0xfb, 0x3e, 0x59 } }

#
# [Error.gEfiMdeModulePkgTokenSpaceGuid]
#   0x80000001 | Invalid value provided.
#   0x80000002 | Reserved bits must be set to zero.
#   0x80000003 | Incorrect progress code provided.
#   0x80000004 | Invalid foreground color specified.
#   0x80000005 | Invalid background color specified.
#   0x80000006 | Incorrect error code provided.
#

  ## Include/Protocol/VariablePolicy.h
  gEdkiiVariablePolicyProtocolGuid = { 0x81D1675C, 0x86F6, 0x48DF, { 0xBD, 0x95, 0x9A, 0x6E, 0x4F, 0x09, 0x25, 0xC3 } }

[PcdsFeatureFlag]
  ## Indicates if the platform can support update capsule across a system reset.<BR><BR>
  #   TRUE  - Supports update capsule across a system reset.<BR>
  #   FALSE - Does not support update capsule across a system reset.<BR>
  # @Prompt Enable update capsule across a system reset.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset|FALSE|BOOLEAN|0x0001001d

  ## Indicates if all PCD PPI services will be enabled.<BR><BR>
  #   TRUE  - All PCD PPI services will be produced.<BR>
  #   FALSE - Minimal PCD PPI services (only GetService) will be produced.<BR>
  # @Prompt Enable full PEI PCD services.
  gEfiMdeModulePkgTokenSpaceGuid.PcdPeiFullPcdDatabaseEnable|TRUE|BOOLEAN|0x00010020

  ## Indicates if the Device Path To Text Protocol should be produced by the platform.
  #  It can be disabled to save size.<BR><BR>
  #   TRUE  - Device Path To Text Protocol will be produced.<BR>
  #   FALSE - Device Path To Text Protocol will not be produced.<BR>
  # @Prompt Enable Device Path to Text support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdDevicePathSupportDevicePathToText|TRUE|BOOLEAN|0x00010037

  ## Indicates if the Device Path From Text Protocol should be produced by the platform.
  #  It can be disabled to save size.<BR><BR>
  #   TRUE  - Device Path From Text Protocol will be produced.<BR>
  #   FALSE - Device Path From Text Protocol will not be produced.<BR>
  # @Prompt Enable Device Path From Text support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdDevicePathSupportDevicePathFromText|TRUE|BOOLEAN|0x00010038

  ## Indicates if the UEFI variable runtime cache should be enabled.
  #  This setting only applies if SMM variables are enabled. When enabled, all variable
  #  data for Runtime Service GetVariable () and GetNextVariableName () calls is retrieved
  #  from a runtime data buffer referred to as the "runtime cache". An SMI is not triggered
  #  at all for these requests. Variables writes still trigger an SMI. This can greatly
  #  reduce overall system SMM usage as most boots tend to issue far more variable reads
  #  than writes.<BR><BR>
  #   TRUE  - The UEFI variable runtime cache is enabled.<BR>
  #   FALSE - The UEFI variable runtime cache is disabled.<BR>
  # @Prompt Enable the UEFI variable runtime cache.
  gEfiMdeModulePkgTokenSpaceGuid.PcdEnableVariableRuntimeCache|TRUE|BOOLEAN|0x00010039

  ## Indicates if the statistics about variable usage will be collected. This information is
  #  stored as a vendor configuration table into the EFI system table.
  #  Set this PCD to TRUE to use VariableInfo application in MdeModulePkg\Application directory to get
  #  variable usage info. VariableInfo application will not output information if not set to TRUE.<BR><BR>
  #   TRUE  - Statistics about variable usage will be collected.<BR>
  #   FALSE - Statistics about variable usage will not be collected.<BR>
  # @Prompt Enable variable statistics collection.
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics|FALSE|BOOLEAN|0x0001003f

  ## Indicates if Unicode Collation Protocol will be installed.<BR><BR>
  #   TRUE  - Installs Unicode Collation Protocol.<BR>
  #   FALSE - Does not install Unicode Collation Protocol.<BR>
  # @Prompt Enable Unicode Collation support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdUnicodeCollationSupport|TRUE|BOOLEAN|0x00010040

  ## Indicates if Unicode Collation 2 Protocol will be installed.<BR><BR>
  #   TRUE  - Installs Unicode Collation 2 Protocol.<BR>
  #   FALSE - Does not install Unicode Collation 2 Protocol.<BR>
  # @Prompt Enable Unicode Collation 2 support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdUnicodeCollation2Support|TRUE|BOOLEAN|0x00010041

  ## Indicates if Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe.
  #  It could be set FALSE to save size.<BR><BR>
  #   TRUE  - Installs Graphics Output Protocol on virtual handle created by ConsplitterDxe.<BR>
  #   FALSE - Does not install Graphics Output Protocol on virtual handle created by ConsplitterDxe.<BR>
  # @Prompt Enable ConOut GOP support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE|BOOLEAN|0x00010042

  ## Indicates if UGA Draw Protocol will be installed on virtual handle created by ConsplitterDxe.
  #  It could be set FALSE to save size.<BR><BR>
  #   TRUE  - Installs UGA Draw Protocol on virtual handle created by ConsplitterDxe.<BR>
  #   FALSE - Does not install UGA Draw Protocol on virtual handle created by ConsplitterDxe.<BR>
  # @Prompt Enable ConOut UGA support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|TRUE|BOOLEAN|0x00010043

  ## Indicates PeiCore will first search TE section from the PEIM to load the image, or PE32 section, when PeiCore dispatches a PEI module.
  #  This PCD is used to tune PEI phase performance to reduce the search image time.
  #  It can be set according to the generated image section type.<BR><BR>
  #   TRUE  - PeiCore will first search TE section from PEIM to load the image, if TE section is not found, then PeiCore will search PE section.<BR>
  #   FALSE - PeiCore will first search PE section from PEIM to load the image.<BR>
  # @Prompt PeiCore search TE section first.
  gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreImageLoaderSearchTeSectionFirst|TRUE|BOOLEAN|0x00010044

  ## Indicates if to turn off the support of legacy usb. So legacy usb device driver can not make use of SMI
  #  interrupt to access usb device in the case of absence of usb stack.
  #  DUET platform requires the token to be TRUE.<BR><BR>
  #   TRUE  - Turn off usb legacy support.<BR>
  #   FALSE - Does not turn off usb legacy support.<BR>
  # @Prompt Turn off USB legacy support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdTurnOffUsbLegacySupport|FALSE|BOOLEAN|0x00010047

  ## Indicates if HiiImageProtocol will be installed.
  #  FALSE is for size reduction.<BR><BR>
  #   TRUE  - Installs HiiImageProtocol.<BR>
  #   FALSE - Does not install HiiImageProtocol.<BR>
  # @Prompt Enable HII image support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSupportHiiImageProtocol|TRUE|BOOLEAN|0x00010100

  ## Indicates if USB KeyBoard Driver disables the default keyboard layout.
  #  The default keyboard layout serves as the backup when no keyboard layout can be retrieved
  #  from HII database.<BR><BR>
  #   TRUE  - USB KeyBoard Driver will disable the default keyboard layout.<BR>
  #   FALSE - USB KeyBoard Driver will not disable the default keyboard layout.<BR>
  # @Prompt Disable default keyboard layout in USB KeyBoard Driver.
  gEfiMdeModulePkgTokenSpaceGuid.PcdDisableDefaultKeyboardLayoutInUsbKbDriver|FALSE|BOOLEAN|0x00010200

  ## Indicates if HelloWorld Application will print the verbose information.
  #  This PCD is a sample to explain FeatureFlag PCD usage.<BR><BR>
  #   TRUE  - HelloWorld Application will print the verbose information.<BR>
  #   FALSE - HelloWorld Application will not print the verbose information.<BR>
  # @Prompt Enable HelloWorld print.
  gEfiMdeModulePkgTokenSpaceGuid.PcdHelloWorldPrintEnable|TRUE|BOOLEAN|0x0001200a

  ## Indicates if FULL FTW protocol services (total six APIs) will be produced.<BR><BR>
  #   TRUE  - Produces FULL FTW protocol services (total six APIs).<BR>
  #   FALSE - Only FTW Write service is available.<BR>
  # @Prompt Enable FULL FTW services.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable|TRUE|BOOLEAN|0x0001200b

  ## Indicates if DXE IPL supports the UEFI decompression algorithm.<BR><BR>
  #   TRUE  - DXE IPL will support UEFI decompression.<BR>
  #   FALSE - DXE IPL will not support UEFI decompression to save space.<BR>
  # @Prompt Enable UEFI decompression support in DXE IPL.
  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSupportUefiDecompress|TRUE|BOOLEAN|0x0001200c

  ## Indicates if PciBus driver supports the hot plug device.<BR><BR>
  #   TRUE  - PciBus driver supports the hot plug device.<BR>
  #   FALSE - PciBus driver doesn't support the hot plug device.<BR>
  # @Prompt Enable PciBus hot plug device support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdPciBusHotplugDeviceSupport|TRUE|BOOLEAN|0x0001003d

  ## Indicates if the PciBus driver probes non-standard, such as 2K/1K/512, granularity for PCI to PCI bridge I/O window.<BR><BR>
  #   TRUE  - PciBus driver probes non-standard granularity for PCI to PCI bridge I/O window.<BR>
  #   FALSE - PciBus driver doesn't probe non-standard granularity for PCI to PCI bridge I/O window.<BR>
  # @Prompt Enable PCI bridge IO alignment probe.
  gEfiMdeModulePkgTokenSpaceGuid.PcdPciBridgeIoAlignmentProbe|FALSE|BOOLEAN|0x0001004e

  ## Indicates if PEI phase StatusCode will be replayed in DXE phase.<BR><BR>
  #   TRUE  - Replays PEI phase StatusCode in DXE phased.<BR>
  #   FALSE - Does not replay PEI phase StatusCode in DXE phase.<BR>
  # @Prompt Enable PEI StatusCode replay in DXE phase
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeReplayIn|FALSE|BOOLEAN|0x0001002d

  ## Indicates if ACPI SDT protocol will be installed.<BR><BR>
  #   TRUE  - Installs ACPI SDT protocol.<BR>
  #   FALSE - Does not install ACPI SDT protocol.<BR>
  # @Prompt Enable ACPI SDT support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol|FALSE|BOOLEAN|0x0001004d

  ## Indicates if the unaligned I/O, MMIO, and PCI Configuration cycles through the PCI I/O Protocol are enabled.
  #  The default value for this PCD is false to disable support for unaligned PCI I/O Protocol requests.<BR><BR>
  #   TRUE  - Enables the unaligned I/O, MMIO, and PCI Configuration cycles through the PCI I/O Protocol.<BR>
  #   FALSE - Disables the unaligned I/O, MMIO, and PCI Configuration cycles through the PCI I/O Protocol.<BR>
  # @Prompt Enable unaligned PCI I/O support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdUnalignedPciIoEnable|FALSE|BOOLEAN|0x0001003e

  ## Indicates if TEXT statement is always set to GrayOut statement in HII Form Browser.<BR><BR>
  #   TRUE  - TEXT statement will always be set to GrayOut.<BR>
  #   FALSE - TEXT statement will be set to GrayOut only when GrayOut condition is TRUE.<BR>
  # @Prompt Always GrayOut TEXT statement.
  gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserGrayOutTextStatement|FALSE|BOOLEAN|0x0001004f

  ## Indicates if unselectable menu should be gray out in HII Form Browser.<BR><BR>
  #   TRUE  - The unselectable menu will be set to GrayOut.<BR>
  #   FALSE - The menu will be show as normal menu entry even if it is not selectable.<BR>
  # @Prompt GrayOut read only menu.
  gEfiMdeModulePkgTokenSpaceGuid.PcdBrowerGrayOutReadOnlyMenu|FALSE|BOOLEAN|0x00010070

  ## Indicates if recovery from IDE disk will be supported.<BR><BR>
  #   TRUE  - Supports recovery from IDE disk.<BR>
  #   FALSE - Does not support recovery from IDE disk.<BR>
  # @Prompt Enable recovery on IDE disk.
  gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnIdeDisk|TRUE|BOOLEAN|0x00010060

  ## Indicates if recovery from FAT floppy disk will be supported.<BR><BR>
  #   TRUE  - Supports recovery from FAT floppy disk.<BR>
  #   FALSE - Does not support recovery from FAT floppy disk.<BR>
  # @Prompt Enable recovery on FAT floppy disk.
  gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnFatFloppyDisk|TRUE|BOOLEAN|0x00010061

  ## Indicates if recovery from data CD will be supported.<BR><BR>
  #   TRUE  - Supports recovery from data CD.<BR>
  #   FALSE - Does not support recovery from data CD.<BR>
  # @Prompt Enable recovery on data CD.
  gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnDataCD|TRUE|BOOLEAN|0x00010062

  ## Indicates if recovery from FAT USB disk will be supported.<BR><BR>
  #   TRUE  - Supports recovery from USB disk.<BR>
  #   FALSE - Does not support recovery from USB disk.<BR>
  # @Prompt Enable recovery on FAT USB disk.
  gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryOnFatUsbDisk|TRUE|BOOLEAN|0x00010063

  ## Indicates if S3 performance data will be supported in ACPI FPDT table.<BR><BR>
  #   TRUE  - S3 performance data will be supported in ACPI FPDT table.<BR>
  #   FALSE - S3 performance data will not be supported in ACPI FPDT table.<BR>
  # @Prompt Enable S3 performance data support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwarePerformanceDataTableS3Support|TRUE|BOOLEAN|0x00010064

  ## Indicates if PS2 keyboard does a extended verification during start.
  #  Add this PCD mainly consider the use case of simulator. This PCD maybe set to FALSE for
  #  Extended verification will take some performance. It can be set to FALSE for boot performance.<BR><BR>
  #   TRUE  - Turn on PS2 keyboard extended verification.<BR>
  #   FALSE - Turn off PS2 keyboard extended verification.<BR>
  # @Prompt Turn on PS2 Keyboard Extended Verification
  gEfiMdeModulePkgTokenSpaceGuid.PcdPs2KbdExtendedVerification|TRUE|BOOLEAN|0x00010072

  ## Indicates if Serial device uses half hand shake.<BR><BR>
  #   TRUE  - Serial device uses half hand shake.<BR>
  #   FALSE - Serial device doesn't use half hand shake.<BR>
  # @Prompt Enable Serial device Half Hand Shake
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseHalfHandshake|FALSE|BOOLEAN|0x00010073

  ## Indicates if HII data and configuration has been exported.<BR><BR>
  #  Add this PCD mainly consider the use case of simulator. This PCD maybe set to FALSE for
  #  simulator platform because the performance cost for this feature.
  #   TRUE  - Export HII data and configuration data.<BR>
  #   FALSE - Does not export HII data and configuration.<BR>
  # @Prompt Enable export HII data and configuration to be used in OS runtime.
  gEfiMdeModulePkgTokenSpaceGuid.PcdHiiOsRuntimeSupport|TRUE|BOOLEAN|0x00010074

  ## Indicates if PS2 mouse does a extended verification during start.
  #  Extended verification will take some performance. It can be set to FALSE for boot performance.<BR><BR>
  #   TRUE  - Turn on PS2 mouse extended verification. <BR>
  #   FALSE - Turn off PS2 mouse extended verification. <BR>
  # @Prompt Turn on PS2 Mouse Extended Verification
  gEfiMdeModulePkgTokenSpaceGuid.PcdPs2MouseExtendedVerification|TRUE|BOOLEAN|0x00010075

  ## Indicates whether 64-bit PCI MMIO BARs should degrade to 32-bit in the presence of an option ROM
  #  On X64 platforms, Option ROMs may contain code that executes in the context of a legacy BIOS (CSM),
  #  which requires that all PCI MMIO BARs are located below 4 GB
  #   TRUE  - All PCI MMIO BARs of a device will be located below 4 GB if it has an option ROM
  #   FALSE - PCI MMIO BARs of a device may be located above 4 GB even if it has an option ROM
  # @Prompt Degrade 64-bit PCI MMIO BARs for legacy BIOS option ROMs
  gEfiMdeModulePkgTokenSpaceGuid.PcdPciDegradeResourceForOptionRom|TRUE|BOOLEAN|0x0001003a

  ## Indicates if the platform can support process non-reset capsule image at runtime.<BR><BR>
  #   TRUE  - Supports process non-reset capsule image at runtime.<BR>
  #   FALSE - Does not support process non-reset capsule image at runtime.<BR>
  # @Prompt Enable process non-reset capsule image at runtime.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSupportProcessCapsuleAtRuntime|FALSE|BOOLEAN|0x00010079

[PcdsFeatureFlag.IA32, PcdsFeatureFlag.ARM, PcdsFeatureFlag.AARCH64, PcdsFeatureFlag.LOONGARCH64]
  gEfiMdeModulePkgTokenSpaceGuid.PcdPciDegradeResourceForOptionRom|FALSE|BOOLEAN|0x0001003a

[PcdsFeatureFlag.IA32, PcdsFeatureFlag.X64]
  ## Indicates if DxeIpl should switch to long mode to enter DXE phase.
  #   TRUE  - DxeIpl will load a 64-bit DxeCore and switch to long mode to hand over to DxeCore.<BR>
  #   FALSE - DxeIpl will load a 32-bit or 64-bit DxeCore and perform stack switch to hand over to DxeCore.<BR>
  # @Prompt DxeIpl switch to long mode.
  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|TRUE|BOOLEAN|0x0001003b

  ## Indicates if DxeIpl should rebuild page tables. This flag only
  #  makes sense in the case where the DxeIpl and the DxeCore are both X64.<BR><BR>
  #   TRUE  - DxeIpl will rebuild page tables.<BR>
  #   FALSE - DxeIpl will not rebuild page tables.<BR>
  # @Prompt DxeIpl rebuild page tables.
  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplBuildPageTables|TRUE|BOOLEAN|0x0001003c

[PcdsFixedAtBuild]
  ## Flag of enabling/disabling the feature of Loading Module at Fixed Address.<BR><BR>
  #  0xFFFFFFFFFFFFFFFF: Enable the feature as fixed offset to TOLM.<BR>
  #  0:                  Disable the feature.<BR>
  #  Other Value:        Enable the feature as fixed absolute address, and the value is the top memory address.<BR>
  # @Prompt Enable LMFA feature.
  # @Expression 0x80000001 | (gEfiMdeModulePkgTokenSpaceGuid.PcdLoadModuleAtFixAddressEnable == 0xFFFFFFFFFFFFFFFF || gEfiMdeModulePkgTokenSpaceGuid.PcdLoadModuleAtFixAddressEnable <= 0x0FFFFFFFFFFFFFFF)
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadModuleAtFixAddressEnable|0|UINT64|0x30001015

  ## Progress Code for OS Loader LoadImage start.<BR><BR>
  #  PROGRESS_CODE_OS_LOADER_LOAD   = (EFI_SOFTWARE_DXE_BS_DRIVER | (EFI_OEM_SPECIFIC | 0x00000000)) = 0x03058000<BR>
  # @Prompt Progress Code for OS Loader LoadImage start.
  # @ValidList  0x80000003 | 0x03058000
  gEfiMdeModulePkgTokenSpaceGuid.PcdProgressCodeOsLoaderLoad|0x03058000|UINT32|0x30001030

  ## Progress Code for OS Loader StartImage start.<BR><BR>
  #  PROGRESS_CODE_OS_LOADER_START  = (EFI_SOFTWARE_DXE_BS_DRIVER | (EFI_OEM_SPECIFIC | 0x00000001)) = 0x03058001<BR>
  # @Prompt Progress Code for OS Loader StartImage start.
  # @ValidList  0x80000003 | 0x03058001
  gEfiMdeModulePkgTokenSpaceGuid.PcdProgressCodeOsLoaderStart|0x03058001|UINT32|0x30001031

  ## Progress Code for S3 Suspend start.<BR><BR>
  #  PROGRESS_CODE_S3_SUSPEND_START = (EFI_SOFTWARE_SMM_DRIVER | (EFI_OEM_SPECIFIC | 0x00000000))    = 0x03078000<BR>
  # @Prompt Progress Code for S3 Suspend start.
  # @ValidList  0x80000003 | 0x03078000
  gEfiMdeModulePkgTokenSpaceGuid.PcdProgressCodeS3SuspendStart|0x03078000|UINT32|0x30001032

  ## Progress Code for S3 Suspend end.<BR><BR>
  #  PROGRESS_CODE_S3_SUSPEND_END   = (EFI_SOFTWARE_SMM_DRIVER | (EFI_OEM_SPECIFIC | 0x00000001))    = 0x03078001<BR>
  # @Prompt Progress Code for S3 Suspend end.
  # @ValidList  0x80000003 | 0x03078001
  gEfiMdeModulePkgTokenSpaceGuid.PcdProgressCodeS3SuspendEnd|0x03078001|UINT32|0x30001033

  ## Error Code for SetVariable failure.<BR><BR>
  #  EDKII_ERROR_CODE_SET_VARIABLE  = (EFI_SOFTWARE_DXE_BS_DRIVER | (EFI_OEM_SPECIFIC | 0x00000002)) = 0x03058002<BR>
  # @Prompt Error Code for SetVariable failure.
  # @ValidList  0x80000006 | 0x03058002
  gEfiMdeModulePkgTokenSpaceGuid.PcdErrorCodeSetVariable|0x03058002|UINT32|0x30001040

  ## Mask to control the NULL address detection in code for different phases.
  #  If enabled, accessing NULL address in UEFI or SMM code can be caught.<BR><BR>
  #    BIT0    - Enable NULL pointer detection for UEFI.<BR>
  #    BIT1    - Enable NULL pointer detection for SMM.<BR>
  #    BIT2..5 - Reserved for future uses.<BR>
  #    BIT6    - Enable non-stop mode.<BR>
  #    BIT7    - Disable NULL pointer detection just after EndOfDxe. <BR>
  #              This is a workaround for those unsolvable NULL access issues in
  #              OptionROM, boot loader, etc. It can also help to avoid unnecessary
  #              exception caused by legacy memory (0-4095) access after EndOfDxe,
  #              such as Windows 7 boot on Qemu.<BR>
  # @Prompt Enable NULL address detection.
  gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask|0x0|UINT8|0x30001050

  ## Init Value in Temp Stack to be shared between SEC and PEI_CORE
  # SEC fills the full temp stack with this values. When switch stack, PeiCore can check
  # this value in the temp stack to know how many stack has been used.
  # @Prompt Init Value in Temp Stack
  gEfiMdeModulePkgTokenSpaceGuid.PcdInitValueInTempStack|0x5AA55AA5|UINT32|0x30001051

  ## Indicates which type allocation need guard page.
  #
  # If a bit is set, a head guard page and a tail guard page will be added just
  # before and after corresponding type of pages allocated if there's enough
  # free pages for all of them. The page allocation for the type related to
  # cleared bits keeps the same as ususal.
  #
  # This PCD is only valid if BIT0 and/or BIT2 are set in PcdHeapGuardPropertyMask.
  #
  # Below is bit mask for this PCD: (Order is same as UEFI spec)<BR>
  #  EfiReservedMemoryType             0x0000000000000001<BR>
  #  EfiLoaderCode                     0x0000000000000002<BR>
  #  EfiLoaderData                     0x0000000000000004<BR>
  #  EfiBootServicesCode               0x0000000000000008<BR>
  #  EfiBootServicesData               0x0000000000000010<BR>
  #  EfiRuntimeServicesCode            0x0000000000000020<BR>
  #  EfiRuntimeServicesData            0x0000000000000040<BR>
  #  EfiConventionalMemory             0x0000000000000080<BR>
  #  EfiUnusableMemory                 0x0000000000000100<BR>
  #  EfiACPIReclaimMemory              0x0000000000000200<BR>
  #  EfiACPIMemoryNVS                  0x0000000000000400<BR>
  #  EfiMemoryMappedIO                 0x0000000000000800<BR>
  #  EfiMemoryMappedIOPortSpace        0x0000000000001000<BR>
  #  EfiPalCode                        0x0000000000002000<BR>
  #  EfiPersistentMemory               0x0000000000004000<BR>
  #  OEM Reserved                      0x4000000000000000<BR>
  #  OS Reserved                       0x8000000000000000<BR>
  # e.g. LoaderCode+LoaderData+BootServicesCode+BootServicesData are needed, 0x1E should be used.<BR>
  # @Prompt The memory type mask for Page Guard.
  gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPageType|0x0|UINT64|0x30001052

  ## Indicates which type allocation need guard page.
  #
  # If a bit is set, a head guard page and a tail guard page will be added just
  # before and after corresponding type of pages which the allocated pool occupies,
  # if there's enough free memory for all of them. The pool allocation for the
  # type related to cleared bits keeps the same as ususal.
  #
  # This PCD is only valid if BIT1 and/or BIT3 are set in PcdHeapGuardPropertyMask.
  #
  # Below is bit mask for this PCD: (Order is same as UEFI spec)<BR>
  #  EfiReservedMemoryType             0x0000000000000001<BR>
  #  EfiLoaderCode                     0x0000000000000002<BR>
  #  EfiLoaderData                     0x0000000000000004<BR>
  #  EfiBootServicesCode               0x0000000000000008<BR>
  #  EfiBootServicesData               0x0000000000000010<BR>
  #  EfiRuntimeServicesCode            0x0000000000000020<BR>
  #  EfiRuntimeServicesData            0x0000000000000040<BR>
  #  EfiConventionalMemory             0x0000000000000080<BR>
  #  EfiUnusableMemory                 0x0000000000000100<BR>
  #  EfiACPIReclaimMemory              0x0000000000000200<BR>
  #  EfiACPIMemoryNVS                  0x0000000000000400<BR>
  #  EfiMemoryMappedIO                 0x0000000000000800<BR>
  #  EfiMemoryMappedIOPortSpace        0x0000000000001000<BR>
  #  EfiPalCode                        0x0000000000002000<BR>
  #  EfiPersistentMemory               0x0000000000004000<BR>
  #  OEM Reserved                      0x4000000000000000<BR>
  #  OS Reserved                       0x8000000000000000<BR>
  # e.g. LoaderCode+LoaderData+BootServicesCode+BootServicesData are needed, 0x1E should be used.<BR>
  # @Prompt The memory type mask for Pool Guard.
  gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPoolType|0x0|UINT64|0x30001053

  ## This mask is to control Heap Guard behavior.
  #
  # Note:
  #   a) Heap Guard is for debug purpose and should not be enabled in product
  #      BIOS.
  #   b) Due to the limit of pool memory implementation and the alignment
  #      requirement of UEFI spec, BIT7 is a try-best setting which cannot
  #      guarantee that the returned pool is exactly adjacent to head guard
  #      page or tail guard page.
  #   c) UEFI freed-memory guard and UEFI pool/page guard cannot be enabled
  #      at the same time.
  #
  #   BIT0 - Enable UEFI page guard.<BR>
  #   BIT1 - Enable UEFI pool guard.<BR>
  #   BIT2 - Enable SMM page guard.<BR>
  #   BIT3 - Enable SMM pool guard.<BR>
  #   BIT4 - Enable UEFI freed-memory guard (Use-After-Free memory detection).<BR>
  #   BIT6 - Enable non-stop mode.<BR>
  #   BIT7 - The direction of Guard Page for Pool Guard.
  #          0 - The returned pool is near the tail guard page.<BR>
  #          1 - The returned pool is near the head guard page.<BR>
  # @Prompt The Heap Guard feature mask
  gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPropertyMask|0x0|UINT8|0x30001054

  ## Indicates if UEFI Stack Guard will be enabled.
  #  If enabled, stack overflow in UEFI can be caught, preventing chaotic consequences.<BR><BR>
  #   TRUE  - UEFI Stack Guard will be enabled.<BR>
  #   FALSE - UEFI Stack Guard will be disabled.<BR>
  # @Prompt Enable UEFI Stack Guard.
  gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard|FALSE|BOOLEAN|0x30001055

[PcdsFixedAtBuild, PcdsPatchableInModule]
  ## Dynamic type PCD can be registered callback function for Pcd setting action.
  #  PcdMaxPeiPcdCallBackNumberPerPcdEntry indicates the maximum number of callback function
  #  for a dynamic PCD used in PEI phase.
  # @Prompt Max PEI PCD callback number per PCD entry.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPcdCallBackNumberPerPcdEntry|0x08|UINT32|0x0001000f

  ## VPD type PCD  allows a developer to point to an absolute physical address PcdVpdBaseAddress
  #  to store PCD value.
  # @Prompt VPD base address.
  gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress|0x0|UINT32|0x00010010

  ## Maximum stack size for PeiCore.
  # @Prompt Maximum stack size for PeiCore.
  gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreMaxPeiStackSize|0x20000|UINT32|0x00010032

  ## The maximum size of a single non-HwErr type variable.
  # @Prompt Maximum variable size.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x400|UINT32|0x30000003

  ## The maximum size of a single authenticated variable.
  # The value is 0 as default for compatibility that maximum authenticated variable size is specified by PcdMaxVariableSize.
  # @Prompt Maximum authenticated variable size.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x00|UINT32|0x30000009

  ## The maximum size of a single non-authenticated volatile variable.
  # The default value is 0 for compatibility: in that case, the maximum
  # non-authenticated volatile variable size remains specified by
  # PcdMaxVariableSize. Only the MdeModulePkg/Universal/Variable/RuntimeDxe
  # driver supports this PCD.
  # @Prompt Maximum non-authenticated volatile variable size.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVolatileVariableSize|0x00|UINT32|0x3000000a

  ## The maximum size of single hardware error record variable.<BR><BR>
  # In IA32/X64 platforms, this value should be larger than 1KB.<BR>
  # In IA64 platforms, this value should be larger than 128KB.<BR>
  # @Prompt Maximum HwErr variable size.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize|0x8000|UINT32|0x30000004

  ## The size of reserved HwErr variable space. Note that this value must be less than (PcdFlashNvStorageVariableSize - EFI_FIRMWARE_VOLUME_HEADER.HeaderLength - sizeof (VARIABLE_STORE_HEADER)).
  # In EdkII implementation, HwErr type variable is stored with common non-volatile variables in the same NV region.
  # so the platform integrator should ensure this value is less than (PcdFlashNvStorageVariableSize - EFI_FIRMWARE_VOLUME_HEADER.HeaderLength - sizeof (VARIABLE_STORE_HEADER)).
  # this value is used to guarantee the space of HwErr type variable and not populated by common variable.
  # @Prompt HwErr variable storage size.
  gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize|0x0000|UINT32|0x30000006

  ## The size of maximum user NV variable space.<BR><BR>
  # Note that this value must be less than (PcdFlashNvStorageVariableSize - EFI_FIRMWARE_VOLUME_HEADER.HeaderLength - sizeof (VARIABLE_STORE_HEADER) - PcdHwErrStorageSize).<BR>
  # If the value is 0, it means user variable share the same NV storage with system variable,
  # this is designed to keep the compatibility for the platform that does not allocate special region for user variable.<BR>
  # If the value is non-0, the below 4 types of variables will be regarded as System Variable after EndOfDxe, their property could be got by VarCheck protocol,
  # otherwise the variable will be regarded as user variable.<BR>
  #  1) UEFI defined variables (gEfiGlobalVariableGuid and gEfiImageSecurityDatabaseGuid(auth variable) variables at least).<BR>
  #  2) Variables managed by Variable driver internally.<BR>
  #  3) Variables need to be locked, they MUST be set by VariableLock protocol.<BR>
  #  4) Important variables during platform boot, their property SHOULD be set by VarCheck protocol.<BR>
  # The PCD is used to guarantee the space of system variable and not populated by user variable.<BR>
  # @Prompt Maximum user NV variable space size.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxUserNvVariableSpaceSize|0x00|UINT32|0x00000009

  ## The size of NV variable space reserved at UEFI boottime.<BR><BR>
  # Note that this value must be less than (PcdFlashNvStorageVariableSize - EFI_FIRMWARE_VOLUME_HEADER.HeaderLength - sizeof (VARIABLE_STORE_HEADER) - PcdHwErrStorageSize).<BR>
  # In EdkII implementation, variable driver can reserved some NV storage region for boottime settings.
  # So at UEFI runtime, the variable service consumer can not exhaust full NV storage region.<BR>
  # Then the common NV variable space size at boottime will be
  #  (PcdFlashNvStorageVariableSize - EFI_FIRMWARE_VOLUME_HEADER.HeaderLength - sizeof (VARIABLE_STORE_HEADER) - PcdHwErrStorageSize),<BR>
  # and the common NV variable space size at runtime will be
  #  (PcdFlashNvStorageVariableSize - EFI_FIRMWARE_VOLUME_HEADER.HeaderLength - sizeof (VARIABLE_STORE_HEADER) - PcdHwErrStorageSize) - PcdBoottimeReservedNvVariableSpaceSize.<BR>
  # @Prompt Boottime reserved NV variable space size.
  gEfiMdeModulePkgTokenSpaceGuid.PcdBoottimeReservedNvVariableSpaceSize|0x00|UINT32|0x30000007

  ## Reclaim variable space at EndOfDxe.<BR><BR>
  # The value is FALSE as default for compatibility that variable driver tries to reclaim variable space at ReadyToBoot event.<BR>
  # If the value is set to TRUE, variable driver tries to reclaim variable space at EndOfDxe event.<BR>
  # @Prompt Reclaim variable space at EndOfDxe.
  gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe|FALSE|BOOLEAN|0x30000008

  ## The size of volatile buffer. This buffer is used to store VOLATILE attribute variables.
  # @Prompt Variable storage size.
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x10000|UINT32|0x30000005

  ## Toggle for whether the VariablePolicy engine should allow disabling.
  # The engine is enabled at power-on, but the interface allows the platform to
  # disable enforcement for servicing flexibility. If this PCD is disabled, it will block the ability to
  # disable the enforcement and VariablePolicy enforcement will always be ON.
  #   TRUE - VariablePolicy can be disabled by request through the interface (until interface is locked)
  #   FALSE - VariablePolicy interface will not accept requests to disable and is ALWAYS ON
  # @Prompt Allow VariablePolicy enforcement to be disabled.
  gEfiMdeModulePkgTokenSpaceGuid.PcdAllowVariablePolicyEnforcementDisable|FALSE|BOOLEAN|0x30000020

  ## FFS filename to find the ACPI tables.
  # @Prompt FFS name of ACPI tables storage.
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiTableStorageFile|{ 0x25, 0x4e, 0x37, 0x7e, 0x01, 0x8e, 0xee, 0x4f, 0x87, 0xf2, 0x39, 0xc, 0x23, 0xc6, 0x6, 0xcd }|VOID*|0x30000016

  ## FFS filename to find the capsule coalesce image.
  # @Prompt FFS name of capsule coalesce image.
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleCoalesceFile|{ 0xA6, 0xE4, 0xFD, 0xF7, 0x4C, 0x29, 0x3c, 0x49, 0xB5, 0x0F, 0x97, 0x34, 0x55, 0x3B, 0xB7, 0x57 }|VOID*|0x30000017

  ## Maximum number of performance log entries during PEI phase.
  # Use PcdMaxPeiPerformanceLogEntries16 if the number of entries required is
  # more than 255.
  # @Prompt Maximum number of PEI performance log entries.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries|40|UINT8|0x0001002f

  ## Maximum number of performance log entries during PEI phase.
  # If set to 0, then PcdMaxPeiPerformanceLogEntries determines the number of
  # entries. If greater than 0, then this PCD determines the number of entries,
  # and PcdMaxPeiPerformanceLogEntries is ignored.
  # @Prompt Maximum number of PEI performance log entries.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries16|0|UINT16|0x00010035

  ## Indicates the 16550 serial port registers are in MMIO space, or in I/O space. Default is I/O space.<BR><BR>
  #   TRUE  - 16550 serial port registers are in MMIO space.<BR>
  #   FALSE - 16550 serial port registers are in I/O space.<BR>
  # @Prompt Serial port registers use MMIO.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseMmio|FALSE|BOOLEAN|0x00020000

  ## Indicates the access width for 16550 serial port registers.
  # Default is 8-bit access mode.<BR><BR>
  #    8  - 16550 serial port registers are accessed in 8-bit width.<BR>
  #   32 - 16550 serial port registers are accessed in 32-bit width.<BR>
  # @Prompt Serial port register access width.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterAccessWidth|8|UINT8|0x00020007

  ## Indicates if the 16550 serial port hardware flow control will be enabled. Default is FALSE.<BR><BR>
  #   TRUE  - 16550 serial port hardware flow control will be enabled.<BR>
  #   FALSE - 16550 serial port hardware flow control will be disabled.<BR>
  # @Prompt Enable serial port hardware flow control.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseHardwareFlowControl|FALSE|BOOLEAN|0x00020001

  ## Indicates if the 16550 serial Tx operations will be blocked if DSR is not asserted (no cable). Default is FALSE.
  #  This PCD is ignored if PcdSerialUseHardwareFlowControl is FALSE.<BR><BR>
  #   TRUE  - 16550 serial Tx operations will be blocked if DSR is not asserted.<BR>
  #   FALSE - 16550 serial Tx operations will not be blocked if DSR is not asserted.<BR>
  # @Prompt Enable serial port cable detetion.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialDetectCable|FALSE|BOOLEAN|0x00020006

  ## Base address of 16550 serial port registers in MMIO or I/O space. Default is 0x3F8.
  # @Prompt Base address of serial port registers.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x03F8|UINT64|0x00020002

  ## Baud rate for the 16550 serial port.  Default is 115200 baud.
  # @Prompt Baud rate for serial port.
  # @ValidList  0x80000001 | 921600, 460800, 230400, 115200, 57600, 38400, 19200, 9600, 7200, 4800, 3600, 2400, 2000, 1800, 1200, 600, 300, 150, 134, 110, 75, 50
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialBaudRate|115200|UINT32|0x00020003

  ## Line Control Register (LCR) for the 16550 serial port. This encodes data bits, parity, and stop bits.<BR><BR>
  #    BIT1..BIT0 - Data bits.  00b = 5 bits, 01b = 6 bits, 10b = 7 bits, 11b = 8 bits<BR>
  #    BIT2       - Stop Bits.  0 = 1 stop bit.  1 = 1.5 stop bits if 5 data bits selected, otherwise 2 stop bits.<BR>
  #    BIT5..BIT3 - Parity.  xx0b = No Parity, 001b = Odd Parity, 011b = Even Parity, 101b = Mark Parity, 111b=Stick Parity<BR>
  #    BIT7..BIT6 - Reserved.  Must be 0.<BR>
  #
  #  Default is No Parity, 8 Data Bits, 1 Stop Bit.<BR>
  # @Prompt Serial port Line Control settings.
  # @Expression 0x80000002 | (gEfiMdeModulePkgTokenSpaceGuid.PcdSerialLineControl & 0xC0) == 0
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialLineControl|0x03|UINT8|0x00020004

  ## FIFO Control Register (FCR) for the 16550 serial port.<BR><BR>
  #    BIT0       - FIFO Enable.  0 = Disable FIFOs.  1 = Enable FIFOs.<BR>
  #    BIT1       - Clear receive FIFO.  1 = Clear FIFO.<BR>
  #    BIT2       - Clear transmit FIFO.  1 = Clear FIFO.<BR>
  #    BIT4..BIT3 - Reserved.  Must be 0.<BR>
  #    BIT5       - Enable 64-byte FIFO.  0 = Disable 64-byte FIFO.  1 = Enable 64-byte FIFO<BR>
  #    BIT7..BIT6 - Reserved.  Must be 0.<BR>
  #
  #  Default is to enable and clear all FIFOs.<BR>
  # @Prompt Serial port FIFO Control settings.
  # @Expression 0x80000002 | (gEfiMdeModulePkgTokenSpaceGuid.PcdSerialFifoControl & 0xD8) == 0
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialFifoControl|0x07|UINT8|0x00020005

  ## Maximum address that the DXE Core will allocate the EFI_SYSTEM_TABLE_POINTER
  #  structure. The default value for this PCD is 0, which means that the DXE Core
  #  will allocate the buffer from the EFI_SYSTEM_TABLE_POINTER structure on a 4MB
  #  boundary as close to the top of memory as feasible.  If this PCD is set to a
  #  value other than 0, then the DXE Core will first attempt to allocate the
  #  EFI_SYSTEM_TABLE_POINTER structure on a 4MB boundary below the address specified
  #  by this PCD, and if that allocation fails, retry the allocation on a 4MB
  #  boundary as close to the top of memory as feasible.
  # @Prompt Maximum Efi System Table Pointer address.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxEfiSystemTablePointerAddress|0x0|UINT64|0x30001027

  ## Indicates if to shadow PEIM on S3 boot path after memory is ready.<BR><BR>
  #   TRUE  - Shadow PEIM on S3 boot path after memory is ready.<BR>
  #   FALSE - Not shadow PEIM on S3 boot path after memory is ready.<BR>
  # @Prompt Shadow Peim On S3 Boot.
  gEfiMdeModulePkgTokenSpaceGuid.PcdShadowPeimOnS3Boot|FALSE|BOOLEAN|0x30001028

  ## Indicates if to shadow PEIM and PeiCore after memory is ready.<BR><BR>
  #  This PCD is used on other boot path except for S3 boot.
  #   TRUE  - Shadow PEIM and PeiCore after memory is ready.<BR>
  #   FALSE - Not shadow PEIM after memory is ready.<BR>
  # @Prompt Shadow Peim and PeiCore on boot
  gEfiMdeModulePkgTokenSpaceGuid.PcdShadowPeimOnBoot|TRUE|BOOLEAN|0x30001029

  ## Enable the feature that evacuate temporary memory to permanent memory or not<BR><BR>
  #  Set FALSE as default, if the developer need this feature to avoid this vulnerability, please
  #  enable it to shadow all PEIMs no matter the behavior controled by PcdShadowPeimOnBoot or
  #  PcdShadowPeimOnS3Boot<BR>
  #  TRUE - Evacuate temporary memory, the actions include copy memory, convert PPI pointers and so on.<BR>
  #  FALSE - Do nothing, for example, no copy memory, no convert PPI pointers and so on.<BR>
  # @Prompt Evacuate temporary memory to permanent memory
  gEfiMdeModulePkgTokenSpaceGuid.PcdMigrateTemporaryRamFirmwareVolumes|FALSE|BOOLEAN|0x3000102A

  ## The mask is used to control memory profile behavior.<BR><BR>
  #  BIT0 - Enable UEFI memory profile.<BR>
  #  BIT1 - Enable SMRAM profile.<BR>
  #  BIT7 - Disable recording at the start.<BR>
  # @Prompt Memory Profile Property.
  # @Expression  0x80000002 | (gEfiMdeModulePkgTokenSpaceGuid.PcdMemoryProfilePropertyMask & 0x7C) == 0
  gEfiMdeModulePkgTokenSpaceGuid.PcdMemoryProfilePropertyMask|0x0|UINT8|0x30001041

  ## The mask is used to control SmiHandlerProfile behavior.<BR><BR>
  #  BIT0 - Enable SmiHandlerProfile.<BR>
  # @Prompt SmiHandlerProfile Property.
  # @Expression  0x80000002 | (gEfiMdeModulePkgTokenSpaceGuid.PcdSmiHandlerProfilePropertyMask & 0xFE) == 0
  gEfiMdeModulePkgTokenSpaceGuid.PcdSmiHandlerProfilePropertyMask|0|UINT8|0x00000108

  ## This flag is to control which memory types of alloc info will be recorded by DxeCore & SmmCore.<BR><BR>
  # For SmmCore, only EfiRuntimeServicesCode and EfiRuntimeServicesData are valid.<BR>
  #
  # Below is bit mask for this PCD: (Order is same as UEFI spec)<BR>
  #  EfiReservedMemoryType          0x0001<BR>
  #  EfiLoaderCode                  0x0002<BR>
  #  EfiLoaderData                  0x0004<BR>
  #  EfiBootServicesCode            0x0008<BR>
  #  EfiBootServicesData            0x0010<BR>
  #  EfiRuntimeServicesCode         0x0020<BR>
  #  EfiRuntimeServicesData         0x0040<BR>
  #  EfiConventionalMemory          0x0080<BR>
  #  EfiUnusableMemory              0x0100<BR>
  #  EfiACPIReclaimMemory           0x0200<BR>
  #  EfiACPIMemoryNVS               0x0400<BR>
  #  EfiMemoryMappedIO              0x0800<BR>
  #  EfiMemoryMappedIOPortSpace     0x1000<BR>
  #  EfiPalCode                     0x2000<BR>
  #  EfiPersistentMemory            0x4000<BR>
  #  OEM Reserved       0x4000000000000000<BR>
  #  OS Reserved        0x8000000000000000<BR>
  #
  # e.g. Reserved+ACPINvs+ACPIReclaim+RuntimeCode+RuntimeData are needed, 0x661 should be used.<BR>
  #
  # @Prompt Memory profile memory type.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMemoryProfileMemoryType|0x0|UINT64|0x30001042

  ## This PCD is to control which drivers need memory profile data.<BR><BR>
  # For example:<BR>
  # One image only (Shell):<BR>
  #     Header                    GUID<BR>
  #     {0x04, 0x06, 0x14, 0x00,  0x83, 0xA5, 0x04, 0x7C, 0x3E, 0x9E, 0x1C, 0x4F, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4, 0xD1,<BR>
  #      0x7F, 0xFF, 0x04, 0x00}<BR>
  # Two or more images (Shell + WinNtSimpleFileSystem):<BR>
  #     {0x04, 0x06, 0x14, 0x00,  0x83, 0xA5, 0x04, 0x7C, 0x3E, 0x9E, 0x1C, 0x4F, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4, 0xD1,<BR>
  #      0x7F, 0x01, 0x04, 0x00,<BR>
  #      0x04, 0x06, 0x14, 0x00,  0x8B, 0xE1, 0x25, 0x9C, 0xBA, 0x76, 0xDA, 0x43, 0xA1, 0x32, 0xDB, 0xB0, 0x99, 0x7C, 0xEF, 0xEF,<BR>
  #      0x7F, 0xFF, 0x04, 0x00}<BR>
  # @Prompt Memory profile driver path.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMemoryProfileDriverPath|{0x0}|VOID*|0x00001043

  ## Set image protection policy. The policy is bitwise.
  #  If a bit is set, the image will be protected by DxeCore if it is aligned.
  #   The code section becomes read-only, and the data section becomes non-executable.
  #  If a bit is clear, nothing will be done to image code/data sections.<BR><BR>
  #    BIT0       - Image from unknown device. <BR>
  #    BIT1       - Image from firmware volume.<BR>
  #  <BR>
  #  Note: If a bit is cleared, the data section could be still non-executable if
  #  PcdDxeNxMemoryProtectionPolicy is enabled for EfiLoaderData, EfiBootServicesData
  #  and/or EfiRuntimeServicesData.<BR>
  #  <BR>
  # @Prompt Set image protection policy.
  # @ValidRange 0x80000002 | 0x00000000 - 0x0000001F
  gEfiMdeModulePkgTokenSpaceGuid.PcdImageProtectionPolicy|0x00000002|UINT32|0x00001047

  ## Set DXE memory protection policy. The policy is bitwise.
  #  If a bit is set, memory regions of the associated type will be mapped
  #  non-executable.<BR>
  #  If a bit is cleared, nothing will be done to associated type of memory.<BR>
  #  <BR>
  # Below is bit mask for this PCD: (Order is same as UEFI spec)<BR>
  #  EfiReservedMemoryType          0x0001<BR>
  #  EfiLoaderCode                  0x0002<BR>
  #  EfiLoaderData                  0x0004<BR>
  #  EfiBootServicesCode            0x0008<BR>
  #  EfiBootServicesData            0x0010<BR>
  #  EfiRuntimeServicesCode         0x0020<BR>
  #  EfiRuntimeServicesData         0x0040<BR>
  #  EfiConventionalMemory          0x0080<BR>
  #  EfiUnusableMemory              0x0100<BR>
  #  EfiACPIReclaimMemory           0x0200<BR>
  #  EfiACPIMemoryNVS               0x0400<BR>
  #  EfiMemoryMappedIO              0x0800<BR>
  #  EfiMemoryMappedIOPortSpace     0x1000<BR>
  #  EfiPalCode                     0x2000<BR>
  #  EfiPersistentMemory            0x4000<BR>
  #  OEM Reserved       0x4000000000000000<BR>
  #  OS Reserved        0x8000000000000000<BR>
  #
  # NOTE: User must NOT set NX protection for EfiLoaderCode / EfiBootServicesCode / EfiRuntimeServicesCode. <BR>
  #       User MUST set the same NX protection for EfiBootServicesData and EfiConventionalMemory. <BR>
  #
  # e.g. 0x7FD5 can be used for all memory except Code. <BR>
  # e.g. 0x7BD4 can be used for all memory except Code and ACPINVS/Reserved. <BR>
  #
  # @Prompt Set DXE memory protection policy.
  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy|0x0000000|UINT64|0x00001048

  ## PCI Serial Device Info. It is an array of Device, Function, and Power Management
  #  information that describes the path that contains zero or more PCI to PCI bridges
  #  followed by a PCI serial device.  Each array entry is 4-bytes in length.  The
  #  first byte is the PCI Device Number, then second byte is the PCI Function Number,
  #  and the last two bytes are the offset to the PCI power management capabilities
  #  register used to manage the D0-D3 states.  If a PCI power management capabilities
  #  register is not present, then the last two bytes in the offset is set to 0.  The
  #  array is terminated by an array entry with a PCI Device Number of 0xFF.  For a
  #  non-PCI fixed address serial device, such as an ISA serial device, the value is 0xFF.
  # @Prompt Pci Serial Device Info
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialPciDeviceInfo|{0xFF}|VOID*|0x00010067

  ## PCI Serial Parameters. It is an array of VendorID, DeviceID, ClockRate, Offset,
  #  BarIndex, RegisterStride, ReceiveFifoDepth, TransmitFifoDepth information that
  #  describes the parameters of special PCI serial devices.
  #  Each array entry is 24-byte in length. The array is terminated
  #  by an array entry with a PCI Vendor ID of 0xFFFF. If a platform only contains a
  #  standard 16550 PCI serial device whose class code is 7/0/2, the value is 0xFFFF.
  #  The C style structure is defined as below:<BR>
  #  typedef struct {<BR>
  #    UINT16  VendorId;          ///< Vendor ID to match the PCI device. The value 0xFFFF terminates the list of entries.<BR>
  #    UINT16  DeviceId;          ///< Device ID to match the PCI device.<BR>
  #    UINT32  ClockRate;         ///< UART clock rate. Set to 0 for default clock rate of 1843200 Hz.<BR>
  #    UINT64  Offset;            ///< The byte offset into to the BAR.<BR>
  #    UINT8   BarIndex;          ///< Which BAR to get the UART base address.<BR>
  #    UINT8   RegisterStride;    ///< UART register stride in bytes. Set to 0 for default register stride of 1 byte.<BR>
  #    UINT16  ReceiveFifoDepth;  ///< UART receive FIFO depth in bytes. Set to 0 for a default FIFO depth of 16 bytes.<BR>
  #    UINT16  TransmitFifoDepth; ///< UART transmit FIFO depth in bytes. Set to 0 for a default FIFO depth of 16 bytes.<BR>
  #    UINT8   Reserved[2];<BR>
  #  } PCI_SERIAL_PARAMETER;<BR>
  #  It contains zero or more instances of the above structure.<BR>
  #  For example, if a PCI device contains two UARTs, PcdPciSerialParameters needs
  #  to contain  two instances of the above structure, with the VendorId and DeviceId
  #  equals to the Device ID and Vendor ID of the device; If the PCI device uses the
  #  first two BARs to support two UARTs, BarIndex of first instance equals to 0 and
  #  BarIndex of second one equals to 1; If the PCI device uses the first BAR to
  #  support both UARTs, BarIndex of both instance equals to 0, Offset of first
  #  instance equals to 0 and Offset of second one equals to a value bigger than or
  #  equal to 8.<BR>
  #  For certain UART whose register needs to be accessed in DWORD aligned address,
  #  RegisterStride equals to 4.
  # @Prompt Pci Serial Parameters
  gEfiMdeModulePkgTokenSpaceGuid.PcdPciSerialParameters|{0xFF, 0xFF}|VOID*|0x00010071

  ## Serial Port Extended Transmit FIFO Size.  The default is 64 bytes.
  # @Prompt Serial Port Extended Transmit FIFO Size in Bytes
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialExtendedTxFifoSize|64|UINT32|0x00010068

  ## This PCD points to the file name GUID of the BootManagerMenuApp
  #  Platform can customize the PCD to point to different application for Boot Manager Menu
  # @Prompt Boot Manager Menu File
  gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0xdc, 0x5b, 0xc2, 0xee, 0xf2, 0x67, 0x95, 0x4d, 0xb1, 0xd5, 0xf8, 0x1b, 0x20, 0x39, 0xd1, 0x1d }|VOID*|0x0001006b

  ## This PCD points to the formset GUID of the driver health management form
  #  The form will be popped up by BDS core when there are Configuration Required driver health instances.
  #  Platform can customize the PCD to point to different formset.
  # @Prompt Driver Health Management Form
  gEfiMdeModulePkgTokenSpaceGuid.PcdDriverHealthConfigureForm|{ 0xf4, 0xd9, 0x96, 0x42, 0xfc, 0xf6, 0xde, 0x4d, 0x86, 0x85, 0x8c, 0xe2, 0xd7, 0x9d, 0x90, 0xf0 }|VOID*|0x0001006c

  ## The number of bytes between registers in serial device.  The default is 1 byte.
  # @Prompt Serial Port Register Stride in Bytes
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterStride|1|UINT32|0x0001006d

  ## This PCD to include the driver guid of VFR drivers for VarCheckHiiBin generation.<BR><BR>
  # Default is gZeroGuid that means no VFR driver will be parsed for VarCheckHiiBin generation.<BR>
  # If it is set to an all FFs GUID, it means all modules in all FVs will be parsed for VarCheckHiiBin generation.<BR>
  # @Prompt Driver guid array of VFR drivers for VarCheckHiiBin generation.
  gEfiMdeModulePkgTokenSpaceGuid.PcdVarCheckVfrDriverGuidArray|{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }|VOID*|0x3000103A

  ## Indicates which ACPI versions are targeted by the ACPI tables exposed to the OS
  #  These values are aligned with the definitions in MdePkg/Include/Protocol/AcpiSystemDescriptionTable.h
  #   BIT 1 - EFI_ACPI_TABLE_VERSION_1_0B.<BR>
  #   BIT 2 - EFI_ACPI_TABLE_VERSION_2_0.<BR>
  #   BIT 3 - EFI_ACPI_TABLE_VERSION_3_0.<BR>
  #   BIT 4 - EFI_ACPI_TABLE_VERSION_4_0.<BR>
  #   BIT 5 - EFI_ACPI_TABLE_VERSION_5_0.<BR>
  # @Prompt Exposed ACPI table versions.
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x3E|UINT32|0x0001004c

  ## This PCD defines the MAX repair count.
  #  The default value is 0 that means infinite.
  # @Prompt MAX repair count
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxRepairCount|0x00|UINT32|0x00010076

  ## Status Code for Capsule subclass definitions.<BR><BR>
  #  EFI_OEM_SPECIFIC_SUBCLASS_CAPSULE  = 0x00810000<BR>
  #  NOTE: The default value of this PCD may collide with other OEM specific status codes.
  #        Override the value of this PCD in the platform DSC file as needed.
  # @Prompt Status Code for Capsule subclass definitions
  # @ValidList  0x80000003 | 0x00810000
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeSubClassCapsule|0x00810000|UINT32|0x00000100

  ## Status Code for Capsule Process Begin.<BR><BR>
  #  EFI_CAPSULE_PROCESS_CAPSULES_BEGIN  = (EFI_OEM_SPECIFIC | 0x00000001) = 0x00008001<BR>
  #  NOTE: The default value of this PCD may collide with other OEM specific status codes.
  #        Override the value of this PCD in the platform DSC file as needed.
  # @Prompt Status Code for Capsule Process Begin
  # @ValidList  0x80000003 | 0x00008001
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeProcessCapsulesBegin|0x00008001|UINT32|0x00000101

  ## Status Code for Capsule Process End.<BR><BR>
  #  EFI_CAPSULE_PROCESS_CAPSULES_END    = (EFI_OEM_SPECIFIC | 0x00000002) = 0x00008002<BR>
  #  NOTE: The default value of this PCD may collide with other OEM specific status codes.
  #        Override the value of this PCD in the platform DSC file as needed.
  # @Prompt Status Code for Capsule Process End
  # @ValidList  0x80000003 | 0x00008002
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeProcessCapsulesEnd|0x00008002|UINT32|0x00000102

  ## Status Code for Capsule Process Updating Firmware.<BR><BR>
  #  EFI_CAPSULE_UPDATING_FIRMWARE       = (EFI_OEM_SPECIFIC | 0x00000003) = 0x00008003<BR>
  #  NOTE: The default value of this PCD may collide with other OEM specific status codes.
  #        Override the value of this PCD in the platform DSC file as needed.
  # @Prompt Status Code for Capsule Process Updating Firmware
  # @ValidList  0x80000003 | 0x00008003
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeUpdatingFirmware|0x00008003|UINT32|0x00000103

  ## Status Code for Capsule Process Update Firmware Success.<BR><BR>
  #  EFI_CAPSULE_UPDATE_FIRMWARE_SUCCESS = (EFI_OEM_SPECIFIC | 0x00000004) = 0x00008004<BR>
  #  NOTE: The default value of this PCD may collide with other OEM specific status codes.
  #        Override the value of this PCD in the platform DSC file as needed.
  # @Prompt Status Code for Capsule Process Update Firmware Success
  # @ValidList  0x80000003 | 0x00008004
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeUpdateFirmwareSuccess|0x00008004|UINT32|0x00000104

  ## Status Code for Capsule Process Update Firmware Failed.<BR><BR>
  #  EFI_CAPSULE_UPDATE_FIRMWARE_FAILED  = (EFI_OEM_SPECIFIC | 0x00000005) = 0x00008005<BR>
  #  NOTE: The default value of this PCD may collide with other OEM specific status codes.
  #        Override the value of this PCD in the platform DSC file as needed.
  # @Prompt Status Code for Capsule Process Update Firmware Failed
  # @ValidList  0x80000003 | 0x00008005
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeUpdateFirmwareFailed|0x00008005|UINT32|0x00000105

  ## Status Code for Capsule Resetting System.<BR><BR>
  #  EFI_CAPSULE_RESETTING_SYSTEM        = (EFI_OEM_SPECIFIC | 0x00000006) = 0x00008006<BR>
  #  NOTE: The default value of this PCD may collide with other OEM specific status codes.
  #        Override the value of this PCD in the platform DSC file as needed.
  # @Prompt Status Code for Capsule Resetting System
  # @ValidList  0x80000003 | 0x00008006
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeResettingSystem|0x00008006|UINT32|0x00000106

  ## CapsuleMax value in capsule report variable.
  # @Prompt CapsuleMax value in capsule report variable.
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleMax|0xFFFF|UINT16|0x00000107

  ## Control which FPDT record format will be used to store the performance entry.
  # On TRUE, the string FPDT record will be used to store every performance entry.
  # On FALSE, the different FPDT record will be used to store the different performance entries.
  # @Prompt String FPDT Record Enable Only
  gEfiMdeModulePkgTokenSpaceGuid.PcdEdkiiFpdtStringRecordEnableOnly|FALSE|BOOLEAN|0x00000109

  ## Indicates the allowable maximum number of Reset Filters, Reset Notifications or Reset Handlers in PEI phase.
  # @Prompt Maximum Number of PEI Reset Filters, Reset Notifications or Reset Handlers.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaximumPeiResetNotifies|0x10|UINT32|0x0000010A

  ## Capsule On Disk is to deliver capsules via files on Mass Storage device.<BR><BR>
  #  This PCD indicates if the Capsule On Disk is supported.<BR>
  #   TRUE  - Capsule On Disk is supported.<BR>
  #   FALSE - Capsule On Disk is not supported.<BR>
  #  If platform does not use this feature, this PCD should be set to FALSE.<BR><BR>
  #  Two sulotions to deliver Capsule On Disk:<BR>
  #    a) If PcdCapsuleInRamSupport = TRUE, Load Capsule On Disk image out of TCB, and reuse
  #       Capsule In Ram to deliver capsule.<BR>
  #    b) If PcdCapsuleInRamSupport = FALSE, Relocate Capsule On Disk image to RootDir out
  #       of TCB, and reuse FatPei to load capsules from external storage.<BR>
  #  Note:<BR>
  #    If Both Capsule In Ram and Capsule On Disk are provisioned at the same time, the Capsule
  #  On Disk will be bypassed.
  # @Prompt Enable Capsule On Disk support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleOnDiskSupport|FALSE|BOOLEAN|0x0000002d

  ## Maximum permitted encapsulation levels of sections in a firmware volume,
  #  in the DXE phase. Minimum value is 1. Sections nested more deeply are
  #  rejected.
  # @Prompt Maximum permitted FwVol section nesting depth (exclusive).
  gEfiMdeModulePkgTokenSpaceGuid.PcdFwVolDxeMaxEncapsulationDepth|0x10|UINT32|0x00000030

  ## Indicates the default timeout value for SD/MMC Host Controller operations in microseconds.
  # @Prompt SD/MMC Host Controller Operations Timeout (us).
  gEfiMdeModulePkgTokenSpaceGuid.PcdSdMmcGenericTimeoutValue|1000000|UINT32|0x00000031

  ## The Retry Count of AHCI command if there is a failure
  # @Prompt The value of Retry Count,  Default value is 5.
  gEfiMdeModulePkgTokenSpaceGuid.PcdAhciCommandRetryCount|5|UINT32|0x00000032

[PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
  ## This PCD defines the Console output row. The default value is 25 according to UEFI spec.
  #  This PCD could be set to 0 then console output would be at max column and max row.
  # @Prompt Console output row.
  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow|25|UINT32|0x40000006

  ## This PCD defines the Console output column. The default value is 80 according to UEFI spec.
  #  This PCD could be set to 0 then console output would be at max column and max row.
  # @Prompt Console output column.
  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn|80|UINT32|0x40000007

  ## This PCD defines the video horizontal resolution.
  #  If this PCD is set to 0 then video resolution would be at highest resolution.
  # @Prompt Video horizontal resolution.
  gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800|UINT32|0x40000009

  ## This PCD defines the video vertical resolution.
  #  If this PCD is set to 0 then video resolution would be at highest resolution.
  # @Prompt Video vertical resolution.
  gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600|UINT32|0x4000000a

  #  The 4 PCDs below are used to specify the video resolution and text mode of text setup.
  #  To make text setup work in this resolution, PcdVideoHorizontalResolution, PcdVideoVerticalResolution,
  #  PcdConOutColumn and PcdConOutRow should be created as PcdsDynamic or PcdsDynamicEx in platform DSC file.
  #  Then BDS setup will update these PCDs defined in MdeModulePkg.dec and reconnect console drivers
  #  (GraphicsConsole, Terminal, Consplitter) to make the video resolution and text mode work
  #  for text setup.

  ## Specify the video horizontal resolution of text setup.
  # @Prompt Video Horizontal Resolution of Text Setup
  gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|800|UINT32|0x4000000b

  ## Specify the video vertical resolution of text setup.
  # @Prompt Video Vertical Resolution of Text Setup
  gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|600|UINT32|0x4000000c

  ## Specify the console output column of text setup.
  # @Prompt Console Output Column of Text Setup
  gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn|80|UINT32|0x4000000d

  ## Specify the console output row of text setup.
  # @Prompt Console Output Row of Text Setup
  gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow|25|UINT32|0x4000000e

  ## Specify the Boot Discovery Policy settings
  # To support configuring from setup page, this PCD should be overridden in DynamicHii type in its platform .dsc:
  # gEfiMdeModulePkgTokenSpaceGuid.PcdBootDiscoveryPolicy|L"BootDiscoveryPolicy"|gBootDiscoveryPolicyMgrFormsetGuid|0
  # @Prompt Boot Discovery Policy
  gEfiMdeModulePkgTokenSpaceGuid.PcdBootDiscoveryPolicy|2|UINT32|0x4000000f

[PcdsFixedAtBuild.AARCH64, PcdsPatchableInModule.AARCH64]
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x20|UINT32|0x0001004c

[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
  ## UART clock frequency is for the baud rate configuration.
  # @Prompt Serial Port Clock Rate.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialClockRate|1843200|UINT32|0x00010066

  ## This PCD points to the front page formset GUID
  #  Compare the FormsetGuid or ClassGuid with this PCD value can detect whether in front page
  # @Prompt Front Page Formset.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFrontPageFormSetGuid|{ 0xbc, 0x30, 0x0c, 0x9e,0x06, 0x3f, 0xa6, 0x4b, 0x82, 0x88, 0x9, 0x17, 0x9b, 0x85, 0x5d, 0xbe }|VOID*|0x0001006e

  ## Base address of the NV variable range in flash device.
  # @Prompt Base address of flash NV variable range.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0|UINT32|0x30000001

  ## Size of the NV variable range. Note that this value should less than or equal to PcdFlashNvStorageFtwSpareSize.
  #  The root cause is that variable driver will use FTW protocol to reclaim variable region.
  #  If the length of variable region is larger than FTW spare size, it means the whole variable region can not
  #  be reflushed through the manner of fault tolerant write.
  # @Prompt Size of flash NV variable range.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x0|UINT32|0x30000002

  ## Base address of the FTW spare block range in flash device. Note that this value should be block size aligned.
  # @Prompt Base address of flash FTW spare block range.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x0|UINT32|0x30000013

  ## Size of the FTW spare block range. Note that this value should larger than PcdFlashNvStorageVariableSize and block size aligned.
  # The root cause is that variable driver will use FTW protocol to reclaim variable region.
  # If the length of variable region is larger than FTW spare size, it means the whole variable region can not
  # be reflushed through the manner of fault tolerant write.
  # @Prompt Size of flash FTW spare block range.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x0|UINT32|0x30000014

  ## Base address of the FTW working block range in flash device.
  # If PcdFlashNvStorageFtwWorkingSize is larger than one block size, this value should be block size aligned.
  # @Prompt Base address of flash FTW working block range.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x0|UINT32|0x30000010

  ## Size of the FTW working block range.
  # If the value is less than one block size, the work space range should not span blocks.
  # If the value is larger than one block size, it should be block size aligned.
  # @Prompt Size of flash FTW working block range.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x0|UINT32|0x30000011

  ## 64-bit Base address of the NV variable range in flash device.
  # @Prompt 64-bit Base address of flash NV variable range.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0x0|UINT64|0x80000001

  ## 64-bit Base address of the FTW spare block range in flash device. Note that this value should be block size aligned.
  # @Prompt 64-bit Base address of flash FTW spare block range.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0x0|UINT64|0x80000013

  ## 64-bit Base address of the FTW working block range in flash device.
  # If PcdFlashNvStorageFtwWorkingSize is larger than one block size, this value should be block size aligned.
  # @Prompt 64-bit Base address of flash FTW working block range.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0x0|UINT64|0x80000010

  ## Indicates if Variable driver will enable emulated variable NV mode.<BR><BR>
  #  If this PCD is configured to dynamic, its value should be set before Variable driver starts to work,<BR>
  #  otherwise default value will take effect.<BR>
  #   TRUE  - An EMU variable NV storage will be allocated or reserved for NV variables.<BR>
  #   FALSE - No EMU variable NV storage will be allocated or reserved for NV variables.<BR>
  # @Prompt EMU variable NV mode enable.
  gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvModeEnable|FALSE|BOOLEAN|0x01100001

  ## This PCD defines the base address of reserved memory range for EMU variable NV storage.
  #  A non-ZERO value indicates a valid range reserved with size given by PcdVariableStoreSize.
  # @Prompt Base of reserved memory range for EMU variable NV storage.
  gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0|UINT64|0x40000008

  ## This PCD defines the times to print hello world string.
  #  This PCD is a sample to explain UINT32 PCD usage.
  # @Prompt HellowWorld print times.
  gEfiMdeModulePkgTokenSpaceGuid.PcdHelloWorldPrintTimes|1|UINT32|0x40000005

  ## This PCD defines the HelloWorld print string.
  #  This PCD is a sample to explain String typed PCD usage.
  # @Prompt HelloWorld print string.
  gEfiMdeModulePkgTokenSpaceGuid.PcdHelloWorldPrintString|L"UEFI Hello World!\n"|VOID*|0x40000004

  ## Indicates the maximum size of the capsule image with a reset flag that the platform can support.
  #  The default max size is 100MB (0x6400000) for more than one large capsule images.
  # @Prompt Max size of populated capsule.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizePopulateCapsule|0x6400000|UINT32|0x0001001e

  ## Indicates the maximum size of the capsule image without a reset flag that the platform can support.
  #  The default max size is 10MB (0xa00000) for the casule image without reset flag setting.
  # @Prompt Max size of non-populated capsule.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizeNonPopulateCapsule|0xa00000|UINT32|0x0001001f

  ## Null-terminated Unicode string of the firmware vendor name that is the default name filled into the EFI System Table.
  # @Prompt Firmware vendor.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVendor|L"EDK II"|VOID*|0x00010050

  ## Firmware revision that is the default revision filled into the EFI System Table.
  # @Prompt Firmware revision.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareRevision|0x00010000|UINT32|0x00010051

  ## Null-terminated Unicode string that describes the firmware version.
  # @Prompt Firmware version string.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L""|VOID*|0x00010052

  ## Null-terminated Unicode string that contains the date the firmware was released
  # @Prompt Firmware release data string.
  gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareReleaseDateString|L""|VOID*|0x00010053

  ## PcdStatusCodeMemorySize is used when PcdStatusCodeUseMemory is set to true.
  #  (PcdStatusCodeMemorySize * KBytes) is the total taken memory size.<BR><BR>
  #  The default value in PeiPhase is 1 KBytes.<BR>
  #  The default value in DxePhase is 128 KBytes.<BR>
  # @Prompt StatusCode memory size.
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize|1|UINT16|0x00010054

  ## Indicates if to reset system when memory type information changes.<BR><BR>
  #   TRUE  - Resets system when memory type information changes.<BR>
  #   FALSE - Does not reset system when memory type information changes.<BR>
  # @Prompt Reset on memory type information change.
  gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|TRUE|BOOLEAN|0x00010056

  ## Indicates if the BDS supports Platform Recovery.<BR><BR>
  #   TRUE  - BDS supports Platform Recovery.<BR>
  #   FALSE - BDS does not support Platform Recovery.<BR>
  # @Prompt Support Platform Recovery.
  gEfiMdeModulePkgTokenSpaceGuid.PcdPlatformRecoverySupport|TRUE|BOOLEAN|0x00010078

  ## Specify the foreground color for Subtile text in HII Form Browser. The default value is EFI_BLUE.
  #  Only following values defined in UEFI specification are valid:<BR><BR>
  #  0x00 (EFI_BLACK)<BR>
  #  0x01 (EFI_BLUE)<BR>
  #  0x02 (EFI_GREEN)<BR>
  #  0x03 (EFI_CYAN)<BR>
  #  0x04 (EFI_RED)<BR>
  #  0x05 (EFI_MAGENTA)<BR>
  #  0x06 (EFI_BROWN)<BR>
  #  0x07 (EFI_LIGHTGRAY)<BR>
  #  0x08 (EFI_DARKGRAY)<BR>
  #  0x09 (EFI_LIGHTBLUE)<BR>
  #  0x0A (EFI_LIGHTGREEN)<BR>
  #  0x0B (EFI_LIGHTCYAN)<BR>
  #  0x0C (EFI_LIGHTRED)<BR>
  #  0x0D (EFI_LIGHTMAGENTA)<BR>
  #  0x0E (EFI_YELLOW)<BR>
  #  0x0F (EFI_WHITE)<BR>
  # @Prompt Foreground color for browser subtile.
  # @ValidRange 0x80000004 | 0x00 - 0x0F
  gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserSubtitleTextColor|0x01|UINT8|0x00010057

  ## Specify the foreground color for prompt and Question value text in HII Form Browser. The default value is EFI_BLACK.
  #  Only following values defined in UEFI specification are valid:<BR><BR>
  #  0x00 (EFI_BLACK)<BR>
  #  0x01 (EFI_BLUE)<BR>
  #  0x02 (EFI_GREEN)<BR>
  #  0x03 (EFI_CYAN)<BR>
  #  0x04 (EFI_RED)<BR>
  #  0x05 (EFI_MAGENTA)<BR>
  #  0x06 (EFI_BROWN)<BR>
  #  0x07 (EFI_LIGHTGRAY)<BR>
  #  0x08 (EFI_DARKGRAY)<BR>
  #  0x09 (EFI_LIGHTBLUE)<BR>
  #  0x0A (EFI_LIGHTGREEN)<BR>
  #  0x0B (EFI_LIGHTCYAN)<BR>
  #  0x0C (EFI_LIGHTRED)<BR>
  #  0x0D (EFI_LIGHTMAGENTA)<BR>
  #  0x0E (EFI_YELLOW)<BR>
  #  0x0F (EFI_WHITE)<BR>
  # @Prompt Foreground color for browser field.
  # @ValidRange 0x80000004 | 0x00 - 0x0F
  gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextColor|0x00|UINT8|0x00010058

  ## Specify the foreground color for highlighted prompt and Question value text in HII Form Browser.
  #  The default value is EFI_LIGHTGRAY. Only following values defined in UEFI specification are valid:<BR><BR>
  #  0x00 (EFI_BLACK)<BR>
  #  0x01 (EFI_BLUE)<BR>
  #  0x02 (EFI_GREEN)<BR>
  #  0x03 (EFI_CYAN)<BR>
  #  0x04 (EFI_RED)<BR>
  #  0x05 (EFI_MAGENTA)<BR>
  #  0x06 (EFI_BROWN)<BR>
  #  0x07 (EFI_LIGHTGRAY)<BR>
  #  0x08 (EFI_DARKGRAY)<BR>
  #  0x09 (EFI_LIGHTBLUE)<BR>
  #  0x0A (EFI_LIGHTGREEN)<BR>
  #  0x0B (EFI_LIGHTCYAN)<BR>
  #  0x0C (EFI_LIGHTRED)<BR>
  #  0x0D (EFI_LIGHTMAGENTA)<BR>
  #  0x0E (EFI_YELLOW)<BR>
  #  0x0F (EFI_WHITE)<BR>
  # @Prompt Foreground color for highlighted browser field.
  # @ValidRange 0x80000004 | 0x00 - 0x0F
  gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextHighlightColor|0x07|UINT8|0x00010059

  ## Specify the background color for highlighted prompt and Question value text in HII Form Browser.
  #  The default value is EFI_BACKGROUND_BLACK. Only following values defined in UEFI specification are valid:<BR><BR>
  #  0x00 (EFI_BACKGROUND_BLACK)<BR>
  #  0x10 (EFI_BACKGROUND_BLUE)<BR>
  #  0x20 (EFI_BACKGROUND_GREEN)<BR>
  #  0x30 (EFI_BACKGROUND_CYAN)<BR>
  #  0x40 (EFI_BACKGROUND_RED)<BR>
  #  0x50 (EFI_BACKGROUND_MAGENTA)<BR>
  #  0x60 (EFI_BACKGROUND_BROWN)<BR>
  #  0x70 (EFI_BACKGROUND_LIGHTGRAY)<BR>
  # @Prompt Background color for highlighted browser field.
  # @ValidList  0x80000005 | 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70
  gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldBackgroundHighlightColor|0x00|UINT8|0x0001005A

  ## Time in second to delay for SATA devices to spin-up for recovery.
  # @Prompt SATA spin-up delay time in second for recovery path.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSataSpinUpDelayInSecForRecoveryPath|15|UINT16|0x0001005B

  ## This PCD is used to specify memory size with page number for a pre-allocated ACPI reserved memory
  #  to hold runtime(after SmmReadyToLock) created S3 boot script entries. The default page number is 2.
  #  When changing the value of this PCD, the platform developer should make sure the memory size is
  #  large enough to hold the S3 boot script node created in runtime(after SmmReadyToLock) phase.
  # @Prompt Reserved page number for S3 Boot Script Runtime Table.
  gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptRuntimeTableReservePageNumber|0x2|UINT16|0x0001005C

  ## The PCD is used to specify the stack size when capsule IA32 PEI transfers to long mode in PEI phase.
  #  The default size is 32K. When changing the value of this PCD, the platform developer should
  #  make sure the memory size is large enough to meet capsule PEI requirement in capsule update path.
  # @Prompt Stack size for CapsulePei transfer to long mode.
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsulePeiLongModeStackSize|0x8000|UINT32|0x0001005D

  ## Indicates if 1G page table will be enabled.<BR><BR>
  #   TRUE  - 1G page table will be enabled.<BR>
  #   FALSE - 1G page table will not be enabled.<BR>
  # @Prompt Enable 1G page table support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable|FALSE|BOOLEAN|0x0001005E

  ## Indicates if the Single Root I/O virtualization is supported.<BR><BR>
  #   TRUE  - Single Root I/O virtualization is supported.<BR>
  #   FALSE - Single Root I/O virtualization is not supported.<BR>
  # @Prompt Enable SRIOV support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSrIovSupport|TRUE|BOOLEAN|0x10000044

  ## Indicates if the Alternative Routing-ID is supported.<BR><BR>
  #   TRUE  - Alternative Routing-ID is supported.<BR>
  #   FALSE - Alternative Routing-ID is not supported.<BR>
  # @Prompt Enable ARI support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdAriSupport|TRUE|BOOLEAN|0x10000045

  ## Indicates if the Multi Root I/O virtualization is supported.<BR><BR>
  #   TRUE  - Multi Root I/O virtualization is supported.<BR>
  #   FALSE - Multi Root I/O virtualization is not supported.<BR>
  # @Prompt Enable MRIOV support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMrIovSupport|FALSE|BOOLEAN|0x10000046

  ## Single root I/O virtualization virtual function memory BAR alignment.<BR><BR>
  #  BITN set indicates 2 of n+12 power<BR>
  #  BIT0 set indicates 4KB alignment<BR>
  #  BIT1 set indicates 8KB alignment<BR>
  # @Prompt SRIOV system page size.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSrIovSystemPageSize|0x1|UINT32|0x10000047

  ## SMBIOS version.
  # @Prompt SMBIOS version.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0303|UINT16|0x00010055

  ## SMBIOS Docrev field in SMBIOS 3.0 (64-bit) Entry Point Structure.
  # @Prompt SMBIOS Docrev field in SMBIOS 3.0 (64-bit) Entry Point Structure.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosDocRev|0x0|UINT8|0x0001006A

  ## SMBIOS produce method.
  #  BIT0 set indicates 32-bit entry point and table are produced.<BR>
  #  BIT1 set indicates 64-bit entry point and table are produced.<BR>
  # @Prompt The policy to produce SMBIOS entry point and table.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosEntryPointProvideMethod|0x3|UINT32|0x00010069

  ## This PCD specifies the additional pad size in FPDT Basic Boot Performance Table for
  #  the extension FPDT boot records received after EndOfDxe and before ExitBootService.
  # @Prompt Pad size for extension FPDT boot records.
  gEfiMdeModulePkgTokenSpaceGuid.PcdExtFpdtBootRecordPadSize|0x30000|UINT32|0x0001005F

  ## Indicates if ConIn device are connected on demand.<BR><BR>
  #   TRUE  - ConIn device are not connected during BDS and ReadKeyStroke/ReadKeyStrokeEx produced
  #           by Consplitter should be called before any real key read operation.<BR>
  #   FALSE - ConIn device may be connected normally during BDS.<BR>
  # @Prompt ConIn connect on demand.
  gEfiMdeModulePkgTokenSpaceGuid.PcdConInConnectOnDemand|FALSE|BOOLEAN|0x10000060

  ## Indicates if the S.M.A.R.T feature of attached ATA hard disks will be enabled.<BR><BR>
  #   TRUE  - S.M.A.R.T feature of attached ATA hard disks will be enabled.<BR>
  #   FALSE - S.M.A.R.T feature of attached ATA hard disks will be default status.<BR>
  # @Prompt Enable ATA S.M.A.R.T feature.
  gEfiMdeModulePkgTokenSpaceGuid.PcdAtaSmartEnable|TRUE|BOOLEAN|0x00010065

  ## Indicates if full PCI enumeration is disabled.<BR><BR>
  #   TRUE  - Full PCI enumeration is disabled.<BR>
  #   FALSE - Full PCI enumeration is not disabled.<BR>
  # @Prompt Disable full PCI enumeration.
  gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|FALSE|BOOLEAN|0x10000048

  ## Disk I/O - Number of Data Buffer block.
  # Define the size in block of the pre-allocated buffer. It provide better
  # performance for large Disk I/O requests.
  # @Prompt Disk I/O - Number of Data Buffer block.
  gEfiMdeModulePkgTokenSpaceGuid.PcdDiskIoDataBufferBlockNum|64|UINT32|0x30001039

  ## This PCD specifies the PCI-based UFS host controller mmio base address.
  # Define the mmio base address of the pci-based UFS host controller. If there are multiple UFS
  # host controllers, their mmio base addresses are calculated one by one from this base address.
  # @Prompt Mmio base address of pci-based UFS host controller.
  gEfiMdeModulePkgTokenSpaceGuid.PcdUfsPciHostControllerMmioBase|0xd0000000|UINT32|0x10000061

  ## Specify Max ESRT cache entry number supported for FMP instances
  #
  # @Prompt Max FMP ESRT entry number to be synced & cached in repository.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxFmpEsrtCacheNum|32|UINT32|0x0000006b

  ## Specify Max ESRT cache entry number supported for Non FMP instances
  #
  # @Prompt Max Non-FMP ESRT entry number to be cached in repository.
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxNonFmpEsrtCacheNum|32|UINT32|0x0000006c

  ## Specify of Capsule Flag defined by CapsuleGuid to request system reboot after capsule process
  #
  # @Prompt Flag to request system reboot after processing capsule.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemRebootAfterCapsuleProcessFlag|0x0001|UINT16|0x0000006d

  ## Default OEM ID for ACPI table creation, its length must be 0x6 bytes to follow ACPI specification.
  # @Prompt Default OEM ID for ACPI table creation.
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId|"INTEL "|VOID*|0x30001034

  ## Default OEM Table ID for ACPI table creation, it is "EDK2    ".
  #  According to ACPI specification, this field is particularly useful when
  #  defining a definition block to distinguish definition block functions.
  #  The OEM assigns each dissimilar table a new OEM Table ID.
  #  This PCD is ignored for definition block.
  # @Prompt Default OEM Table ID for ACPI table creation.
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemTableId|0x20202020324B4445|UINT64|0x30001035

  ## Default OEM Revision for ACPI table creation.
  #  According to ACPI specification, for LoadTable() opcode, the OS can also
  #  check the OEM Table ID and Revision ID against a database for a newer
  #  revision Definition Block of the same OEM Table ID and load it instead.
  #  This PCD is ignored for definition block.
  # @Prompt Default OEM Revision for ACPI table creation.
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemRevision|0x00000002|UINT32|0x30001036

  ## Default Creator ID for ACPI table creation.
  #  According to ACPI specification, for tables containing Definition Blocks,
  #  this is the ID for the ASL Compiler.
  #  This PCD is ignored for definition block.
  # @Prompt Default Creator ID for ACPI table creation.
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorId|0x20202020|UINT32|0x30001037

  ## Default Creator Revision for ACPI table creation.
  #  According to ACPI specification, for tables containing Definition Blocks,
  #  this is the revision for the ASL Compiler.
  #  This PCD is ignored for definition block.
  # @Prompt Default Creator Revision for ACPI table creation.
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision|0x01000013|UINT32|0x30001038

  ## Indicates if to set NX for stack.<BR><BR>
  #  For the DxeIpl and the DxeCore are both X64, set NX for stack feature also require PcdDxeIplBuildPageTables be TRUE.<BR>
  #  For the DxeIpl and the DxeCore are both IA32 (PcdDxeIplSwitchToLongMode is FALSE), set NX for stack feature also require
  #  IA32 PAE is supported and Execute Disable Bit is available.<BR>
  #  <BR>
  #   TRUE  - Set NX for stack.<BR>
  #   FALSE - Do nothing for stack.<BR>
  #  <BR>
  #  Note: If this PCD is set to FALSE, NX could be still applied to stack due to PcdDxeNxMemoryProtectionPolicy enabled for
  #  EfiBootServicesData.<BR>
  #  <BR>
  # @Prompt Set NX for stack.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack|FALSE|BOOLEAN|0x0001006f

  ## This PCD specifies the PCI-based SD/MMC host controller mmio base address.
  # Define the mmio base address of the pci-based SD/MMC host controller. If there are multiple SD/MMC
  # host controllers, their mmio base addresses are calculated one by one from this base address.
  # @Prompt Mmio base address of pci-based SD/MMC host controller.
  gEfiMdeModulePkgTokenSpaceGuid.PcdSdMmcPciHostControllerMmioBase|0xd0000000|UINT32|0x30001043

  ## Indicates if ACPI S3 will be enabled.<BR><BR>
  #   TRUE  - ACPI S3 will be enabled.<BR>
  #   FALSE - ACPI S3 will be disabled.<BR>
  # @Prompt ACPI S3 Enable.
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable|TRUE|BOOLEAN|0x01100000

  ## Specify memory size for boot script executor stack usage in S3 phase.
  #  The default size 32K. When changing the value make sure the memory size is large enough
  #  to meet boot script executor requirement in the S3 phase.
  # @Prompt Reserved S3 Boot Script Stack ACPI Memory Size
  gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptStackSize|0x8000|UINT32|0x02000000

  ## Indicates if to use the optimized timing for best PS2 detection performance.
  #  Note this PCD could be set to TRUE for best boot performance and set to FALSE for best device compatibility.<BR><BR>
  #   TRUE  - Use the optimized timing for best PS2 detection performance.<BR>
  #   FALSE - Use the normal timing to detect PS2.<BR>
  # @Prompt Enable fast PS2 detection
  gEfiMdeModulePkgTokenSpaceGuid.PcdFastPS2Detection|FALSE|BOOLEAN|0x30001044

  ## This is recover file name in PEI phase.
  #  The file must be in the root directory.
  #  The file name must be the 8.3 format.
  #  The PCD data must be in UNICODE format.
  # @Prompt Recover file name in PEI phase
  gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName|L"FVMAIN.FV"|VOID*|0x30001045

  ## This is Capsule Temp Relocation file name in PEI phase.
  #  The file must be in the root directory.
  #  The file name must be the 8.3 format.
  #  The PCD data must be in UNICODE format.
  #  CapsuleOnDiskLoadPei PEI module will set value of this PCD to PcdRecoveryFileName, then
  #  leverage recovery to get Capsule On Disk Temp Relocation file.
  #  Note: The file name must be shorter than PcdRecoveryFileName, otherwise CapsuleOnDiskLoadPei
  #  PEI module will fail to get Capsule On Disk Temp Relocation file.
  # @Prompt Capsule On Disk Temp Relocation file name in PEI phase
  gEfiMdeModulePkgTokenSpaceGuid.PcdCoDRelocationFileName|L"Cod.tmp"|VOID*|0x30001048

  ## This PCD hold a list GUIDs for the ImageTypeId to indicate the
  #  FMP capsule is a system FMP.
  # @Prompt A list of system FMP ImageTypeId GUIDs
  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{0x0}|VOID*|0x30001046

  ## This PCD holds the address mask for page table entries when memory encryption is
  #  enabled on AMD processors supporting the Secure Encrypted Virtualization (SEV) feature.
  #  This mask should be applied when creating 1:1 virtual to physical mapping tables.
  # @Prompt The address mask when memory encryption is enabled.
  gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask|0x0|UINT64|0x30001047

  ## Indicates if 5-Level Paging will be enabled in long mode. 5-Level Paging will not be enabled
  #  when the PCD is TRUE but CPU doesn't support 5-Level Paging.
  #   TRUE  - 5-Level Paging will be enabled.<BR>
  #   FALSE - 5-Level Paging will not be enabled.<BR>
  # @Prompt Enable 5-Level Paging support in long mode.
  gEfiMdeModulePkgTokenSpaceGuid.PcdUse5LevelPageTable|FALSE|BOOLEAN|0x0001105F

  ## Capsule In Ram is to use memory to deliver the capsules that will be processed after system
  #  reset.<BR><BR>
  #  This PCD indicates if the Capsule In Ram is supported.<BR>
  #   TRUE  - Capsule In Ram is supported.<BR>
  #   FALSE - Capsule In Ram is not supported.
  # @Prompt Enable Capsule In Ram support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleInRamSupport|TRUE|BOOLEAN|0x0000002e

  ## Full device path of platform specific device to store Capsule On Disk temp relocation file.<BR>
  #  If this PCD is set, Capsule On Disk temp relocation file will be stored in the device specified
  #  by this PCD, instead of the EFI System Partition that stores capsule image file.
  # @Prompt Capsule On Disk relocation device path.
  gEfiMdeModulePkgTokenSpaceGuid.PcdCodRelocationDevPath|{0xFF}|VOID*|0x0000002f

  ## Indicates which TCG Platform Firmware Profile revision the EDKII firmware follows.
  #  The revision number is defined in MdePkg/Include/IndustryStandard/UefiTcgPlatform.h
  #  0:   This is for compatiblity support.
  #  105: This is the first revision to support 800-155 is related event, such as
  #       EV_EFI_PLATFORM_FIRMWARE_BLOB2 and EV_EFI_HANDOFF_TABLES2.
  # @Prompt TCG Platform Firmware Profile revision.
  gEfiMdeModulePkgTokenSpaceGuid.PcdTcgPfpMeasurementRevision|0|UINT32|0x00010077

  ## Indicates if StatusCode is reported via Serial port.<BR><BR>
  #   TRUE  - Reports StatusCode via Serial port.<BR>
  #   FALSE - Does not report StatusCode via Serial port.<BR>
  # @Prompt Enable StatusCode via Serial port.
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|TRUE|BOOLEAN|0x00010022

  ## Indicates if StatusCode is stored in memory.
  #  The memory is boot time memory in PEI Phase and is runtime memory in DXE Phase.<BR><BR>
  #   TRUE  - Stores StatusCode in memory.<BR>
  #   FALSE - Does not store StatusCode in memory.<BR>
  # @Prompt Enable StatusCode via memory.
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|FALSE|BOOLEAN|0x00010023

  ## Indicates if the PCIe Resizable BAR Capability Supported.<BR><BR>
  #   TRUE  - PCIe Resizable BAR Capability is supported.<BR>
  #   FALSE - PCIe Resizable BAR Capability is not supported.<BR>
  # @Prompt Enable PCIe Resizable BAR Capability support.
  gEfiMdeModulePkgTokenSpaceGuid.PcdPcieResizableBarSupport|FALSE|BOOLEAN|0x10000024

  ## This PCD holds the shared bit mask for page table entries when Tdx is enabled.
  # @Prompt The shared bit mask when Intel Tdx is enabled.
  gEfiMdeModulePkgTokenSpaceGuid.PcdTdxSharedBitMask|0x0|UINT64|0x10000025

[PcdsPatchableInModule]
  ## Specify memory size with page number for PEI code when
  #  Loading Module at Fixed Address feature is enabled.
  #  The value will be set by the build tool.
  # @Prompt LMFA PEI code page number.
  # @ValidList  0x80000001 | 0
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressPeiCodePageNumber|0|UINT32|0x00000029

  ## Specify memory size with page number for DXE boot time code when
  #  Loading Module at Fixed Address feature is enabled.
  #  The value will be set by the build tool.
  # @Prompt LMFA DXE boot code page number.
  # @ValidList  0x80000001 | 0
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressBootTimeCodePageNumber|0|UINT32|0x0000002a

  ## Specify memory size with page number for DXE runtime code when
  #  Loading Module at Fixed Address feature is enabled.
  #  The value will be set by the build tool.
  # @Prompt LMFA DXE runtime code page number.
  # @ValidList  0x80000001 | 0
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressRuntimeCodePageNumber|0|UINT32|0x0000002b

  ## Specify memory size with page number for SMM code when
  #  Loading Module at Fixed Address feature is enabled.
  #  The value will be set by the build tool.
  # @Prompt LMFA SMM code page number.
  # @ValidList  0x80000001 | 0
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressSmmCodePageNumber|0|UINT32|0x0000002c

[PcdsDynamic, PcdsDynamicEx]
  ## This dynamic PCD hold an address to point to private data structure used in DxeS3BootScriptLib library
  #  instance which records the S3 boot script table start address, length, etc. To introduce this PCD is
  #  only for DxeS3BootScriptLib instance implementation purpose. The platform developer should make sure the
  #  default value is set to Zero. And the PCD is assumed ONLY to be accessed in DxeS3BootScriptLib Library.
  # @Prompt S3 Boot Script Table Private Data pointer.
  # @ValidList  0x80000001 | 0x0
  gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateDataPtr|0x0|UINT64|0x00030000

  ## This dynamic PCD hold an address to point to private data structure SMM copy used in DxeS3BootScriptLib library
  #  instance which records the S3 boot script table start address, length, etc. To introduce this PCD is
  #  only for DxeS3BootScriptLib instance implementation purpose. The platform developer should make sure the
  #  default value is set to Zero. And the PCD is assumed ONLY to be accessed in DxeS3BootScriptLib Library.
  # @Prompt S3 Boot Script Table Private Smm Data pointer.
  # @ValidList  0x80000001 | 0x0
  gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateSmmDataPtr|0x0|UINT64|0x00030001

  ## This dynamic PCD holds the information if there is any test key used by the platform.
  # @Prompt If there is any test key used by the platform.
  gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed|FALSE|BOOLEAN|0x00030003

  ## This dynamic PCD holds the base address of the Guest-Hypervisor Communication Block (GHCB) pool allocation.
  # @Prompt GHCB Pool Base Address
  gEfiMdeModulePkgTokenSpaceGuid.PcdGhcbBase|0|UINT64|0x00030007

  ## This dynamic PCD holds the total size of the Guest-Hypervisor Communication Block (GHCB) pool allocation.
  #  The amount of memory allocated for GHCBs is dependent on the number of APs.
  # @Prompt GHCB Pool Size
  gEfiMdeModulePkgTokenSpaceGuid.PcdGhcbSize|0|UINT64|0x00030008

[PcdsDynamicEx]
  ## This dynamic PCD enables the default variable setting.
  #  Its value is the default store ID value. The default value is zero as Standard default.
  #  When its value is set in PEI, it will trig the default setting to be applied as the default EFI variable.
  # @Prompt NV Storage DefaultId
  gEfiMdeModulePkgTokenSpaceGuid.PcdSetNvStoreDefaultId|0x0|UINT16|0x00030004

  ## This dynamic PCD holds the DynamicHii PCD value. Its value is the auto generated.
  # @Prompt NV Storage Default Value Buffer
  gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|{0x0}|VOID*|0x00030005

  ## VPD type PCD allows a developer to point to an absolute physical address PcdVpdBaseAddress64
  #  to store PCD value. It will be DynamicExDefault only.
  #  It is used to set VPD region base address. So, it can't be DynamicExVpd PCD. Its value is
  #  required to be accessed in PcdDxe driver entry point. So, its value must be set in PEI phase.
  #  It can't depend on EFI variable service, and can't be DynamicExHii PCD.
  # @Prompt 64bit VPD base address.
  gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress64|0x0|UINT64|0x00030006

[UserExtensions.TianoCore."ExtraFiles"]
  MdeModulePkgExtra.uni
