public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Guo Dong" <guo.dong@intel.com>
To: "Liu, Zhiguang" <zhiguang.liu@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Ma, Maurice" <maurice.ma@intel.com>,
	"You, Benjamin" <benjamin.you@intel.com>,
	"Ni, Ray" <ray.ni@intel.com>
Subject: Re: [Patch V2 01/12] UefiPayloadPkg: Add HobLib for UniversalPayload
Date: Wed, 23 Jun 2021 23:45:51 +0000	[thread overview]
Message-ID: <BYAPR11MB36224F1F5DDB6ACBEC1698E99E089@BYAPR11MB3622.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20210623025235.3311-2-zhiguang.liu@intel.com>


Reviewed-by: Guo Dong <guo.dong@intel.com>

> -----Original Message-----
> From: Liu, Zhiguang <zhiguang.liu@intel.com>
> Sent: Tuesday, June 22, 2021 7:52 PM
> To: devel@edk2.groups.io
> Cc: Ma, Maurice <maurice.ma@intel.com>; Dong, Guo
> <guo.dong@intel.com>; You, Benjamin <benjamin.you@intel.com>; Ni, Ray
> <ray.ni@intel.com>
> Subject: [Patch V2 01/12] UefiPayloadPkg: Add HobLib for UniversalPayload
> 
> V1:
> For payload entry, use PayloadEntryHobLib as HobLib and payload entry
> should initialize hob base.
> For DxeCore, use new added DxeHobLib as HobLib, and DxeCore will
> initialize hob base.
> For Dxe Driver, use new added DxeHobLib as HobLib, and use DxeHobListLib
> to initialize hob base.
> 
> V2:
> Remove the UefiLib since it won't be needed.
> Adding a new library DxeHobLib + DxeHobListLib instead of using the
> DxeHobLib.inf in MdePkg is because the constructor needed be separated
> from DxeHobLib.
> If not, when building UefiPayloadPkg, the dependency chain is as below:
> DebugLib -> SerialPortLib -> PlatformHookLib -> HobLib -> DebugLib
> Each library has a constructor, and this becomes a constructor circle.
> To break the circle, separate the constructor from the HobLib as a new
> DxeHobListLib, which won't depend on DebugLib.
> 
> Cc: Maurice Ma <maurice.ma@intel.com>
> Cc: Guo Dong <guo.dong@intel.com>
> Cc: Benjamin You <benjamin.you@intel.com>
> Signed-off-by: Ray Ni <ray.ni@intel.com>
> Signed-off-by: Zhiguang Liu <zhiguang.liu@intel.com>
> ---
>  UefiPayloadPkg/Include/Library/DxeHobListLib.h                   |  27
> +++++++++++++++++++++++++++
>  UefiPayloadPkg/Library/DxeHobLib/DxeHobLib.inf                   |  36
> ++++++++++++++++++++++++++++++++++++
>  UefiPayloadPkg/Library/DxeHobLib/DxeHobLib.uni                   |  16
> ++++++++++++++++
>  UefiPayloadPkg/Library/DxeHobLib/HobLib.c                        | 597
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++
>  UefiPayloadPkg/Library/DxeHobListLib/DxeHobListLib.c             |  66
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++
>  UefiPayloadPkg/Library/DxeHobListLib/DxeHobListLib.inf           |  35
> +++++++++++++++++++++++++++++++++++
>  UefiPayloadPkg/Library/DxeHobListLibNull/DxeHobListLibNull.c     |  20
> ++++++++++++++++++++
>  UefiPayloadPkg/Library/DxeHobListLibNull/DxeHobListLibNull.inf   |  28
> ++++++++++++++++++++++++++++
>  UefiPayloadPkg/Library/{HobLib => PayloadEntryHobLib}/Hob.c      |   2 +-
>  UefiPayloadPkg/Library/{HobLib => PayloadEntryHobLib}/HobLib.inf |   2 +-
>  UefiPayloadPkg/UefiPayloadPkg.dsc                                |  15 +++++++++++----
>  11 files changed, 838 insertions(+), 6 deletions(-)
> 
> diff --git a/UefiPayloadPkg/Include/Library/DxeHobListLib.h
> b/UefiPayloadPkg/Include/Library/DxeHobListLib.h
> new file mode 100644
> index 0000000000..7e9b23f6d7
> --- /dev/null
> +++ b/UefiPayloadPkg/Include/Library/DxeHobListLib.h
> @@ -0,0 +1,27 @@
> +/** @file
> 
> +  Provides a service to retrieve a pointer to the start of HOB list.
> 
> +  Only available to DXE module types.
> 
> +
> 
> +  This library does not contain any functions or macros.  It simply exports a
> global
> 
> +  pointer to the start of HOB list as defined in the Platform Initialization
> Driver
> 
> +  Execution Environment Core Interface Specification.  The library
> constructor must
> 
> +  initialize this global pointer to the start of HOB list, so it is available at the
> 
> +  module's entry point.  Since there is overhead in looking up the pointer to
> the start
> 
> +  of HOB list, only those modules that actually require access to the HOB list
> 
> +  should use this library.
> 
> +
> 
> +Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#ifndef __DXE_HOB_LIST_LIB_H__
> 
> +#define __DXE_HOB_LIST_LIB_H__
> 
> +
> 
> +///
> 
> +/// Cache copy of the start of HOB list
> 
> +///
> 
> +extern VOID  *gHobList;
> 
> +
> 
> +#endif
> 
> +
> 
> diff --git a/UefiPayloadPkg/Library/DxeHobLib/DxeHobLib.inf
> b/UefiPayloadPkg/Library/DxeHobLib/DxeHobLib.inf
> new file mode 100644
> index 0000000000..ff334a0d41
> --- /dev/null
> +++ b/UefiPayloadPkg/Library/DxeHobLib/DxeHobLib.inf
> @@ -0,0 +1,36 @@
> +## @file
> 
> +# HOB Library implementation for Payload Phase.
> 
> +#
> 
> +# Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
> 
> +#
> 
> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +#
> 
> +#
> 
> +##
> 
> +
> 
> +[Defines]
> 
> +  INF_VERSION                    = 0x00010005
> 
> +  BASE_NAME                      = DxeHobLib
> 
> +  MODULE_UNI_FILE                = DxeHobLib.uni
> 
> +  FILE_GUID                      = 1a15b8b3-3e8a-4698-87b9-65aad9993b52
> 
> +  MODULE_TYPE                    = DXE_DRIVER
> 
> +  VERSION_STRING                 = 1.0
> 
> +  LIBRARY_CLASS                  = HobLib|DXE_DRIVER DXE_RUNTIME_DRIVER
> SMM_CORE DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
> 
> +
> 
> +#
> 
> +#  VALID_ARCHITECTURES           = IA32 X64 EBC
> 
> +#
> 
> +
> 
> +[Sources]
> 
> +  HobLib.c
> 
> +
> 
> +
> 
> +[Packages]
> 
> +  MdePkg/MdePkg.dec
> 
> +  UefiPayloadPkg/UefiPayloadPkg.dec
> 
> +
> 
> +
> 
> +[LibraryClasses]
> 
> +  BaseMemoryLib
> 
> +  DebugLib
> 
> +  DxeHobListLib
> 
> diff --git a/UefiPayloadPkg/Library/DxeHobLib/DxeHobLib.uni
> b/UefiPayloadPkg/Library/DxeHobLib/DxeHobLib.uni
> new file mode 100644
> index 0000000000..4e02e9c2ae
> --- /dev/null
> +++ b/UefiPayloadPkg/Library/DxeHobLib/DxeHobLib.uni
> @@ -0,0 +1,16 @@
> +// /** @file
> 
> +// HOB Library implementation for Payload Phase.
> 
> +//
> 
> +// The Hoblist will be set by DxeHobListLib or other modules.
> 
> +//
> 
> +// Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
> 
> +//
> 
> +// SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +//
> 
> +// **/
> 
> +
> 
> +
> 
> +#string STR_MODULE_ABSTRACT             #language en-US "HOB Library
> implementation for Payload Phase."
> 
> +
> 
> +#string STR_MODULE_DESCRIPTION          #language en-US "The HOB Library
> implementation for Payload Phase that doesn't contain HobLibConstructor"
> 
> +
> 
> diff --git a/UefiPayloadPkg/Library/DxeHobLib/HobLib.c
> b/UefiPayloadPkg/Library/DxeHobLib/HobLib.c
> new file mode 100644
> index 0000000000..5d5ede0c17
> --- /dev/null
> +++ b/UefiPayloadPkg/Library/DxeHobLib/HobLib.c
> @@ -0,0 +1,597 @@
> +/** @file
> 
> +  HOB Library implementation for Payload Phase.
> 
> +
> 
> +Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include <PiDxe.h>
> 
> +
> 
> +#include <Library/HobLib.h>
> 
> +#include <Library/DebugLib.h>
> 
> +#include <Library/BaseMemoryLib.h>
> 
> +#include <Library/DxeHobListLib.h>
> 
> +
> 
> +/**
> 
> +  Returns the pointer to the HOB list.
> 
> +
> 
> +  This function returns the pointer to first HOB in the list.
> 
> +  For PEI phase, the PEI service GetHobList() can be used to retrieve the
> pointer
> 
> +  to the HOB list.  For the DXE phase, the HOB list pointer can be retrieved
> through
> 
> +  the EFI System Table by looking up theHOB list GUID in the System
> Configuration Table.
> 
> +  Since the System Configuration Table does not exist that the time the DXE
> Core is
> 
> +  launched, the DXE Core uses a global variable from the DXE Core Entry
> Point Library
> 
> +  to manage the pointer to the HOB list.
> 
> +
> 
> +  If the pointer to the HOB list is NULL, then ASSERT().
> 
> +
> 
> +  @return The pointer to the HOB list.
> 
> +
> 
> +**/
> 
> +VOID *
> 
> +EFIAPI
> 
> +GetHobList (
> 
> +  VOID
> 
> +  )
> 
> +{
> 
> +  ASSERT (gHobList != NULL);
> 
> +  return gHobList;
> 
> +}
> 
> +
> 
> +/**
> 
> +  Returns the next instance of a HOB type from the starting HOB.
> 
> +
> 
> +  This function searches the first instance of a HOB type from the starting
> HOB pointer.
> 
> +  If there does not exist such HOB type from the starting HOB pointer, it will
> return NULL.
> 
> +  In contrast with macro GET_NEXT_HOB(), this function does not skip the
> starting HOB pointer
> 
> +  unconditionally: it returns HobStart back if HobStart itself meets the
> requirement;
> 
> +  caller is required to use GET_NEXT_HOB() if it wishes to skip current
> HobStart.
> 
> +
> 
> +  If HobStart is NULL, then ASSERT().
> 
> +
> 
> +  @param  Type          The HOB type to return.
> 
> +  @param  HobStart      The starting HOB pointer to search from.
> 
> +
> 
> +  @return The next instance of a HOB type from the starting HOB.
> 
> +
> 
> +**/
> 
> +VOID *
> 
> +EFIAPI
> 
> +GetNextHob (
> 
> +  IN UINT16                 Type,
> 
> +  IN CONST VOID             *HobStart
> 
> +  )
> 
> +{
> 
> +  EFI_PEI_HOB_POINTERS  Hob;
> 
> +
> 
> +  ASSERT (HobStart != NULL);
> 
> +
> 
> +  Hob.Raw = (UINT8 *) HobStart;
> 
> +  //
> 
> +  // Parse the HOB list until end of list or matching type is found.
> 
> +  //
> 
> +  while (!END_OF_HOB_LIST (Hob)) {
> 
> +    if (Hob.Header->HobType == Type) {
> 
> +      return Hob.Raw;
> 
> +    }
> 
> +    Hob.Raw = GET_NEXT_HOB (Hob);
> 
> +  }
> 
> +  return NULL;
> 
> +}
> 
> +
> 
> +/**
> 
> +  Returns the first instance of a HOB type among the whole HOB list.
> 
> +
> 
> +  This function searches the first instance of a HOB type among the whole
> HOB list.
> 
> +  If there does not exist such HOB type in the HOB list, it will return NULL.
> 
> +
> 
> +  If the pointer to the HOB list is NULL, then ASSERT().
> 
> +
> 
> +  @param  Type          The HOB type to return.
> 
> +
> 
> +  @return The next instance of a HOB type from the starting HOB.
> 
> +
> 
> +**/
> 
> +VOID *
> 
> +EFIAPI
> 
> +GetFirstHob (
> 
> +  IN UINT16                 Type
> 
> +  )
> 
> +{
> 
> +  VOID      *HobList;
> 
> +
> 
> +  HobList = GetHobList ();
> 
> +  return GetNextHob (Type, HobList);
> 
> +}
> 
> +
> 
> +/**
> 
> +  Returns the next instance of the matched GUID HOB from the starting HOB.
> 
> +
> 
> +  This function searches the first instance of a HOB from the starting HOB
> pointer.
> 
> +  Such HOB should satisfy two conditions:
> 
> +  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name
> equals to the input Guid.
> 
> +  If there does not exist such HOB from the starting HOB pointer, it will
> return NULL.
> 
> +  Caller is required to apply GET_GUID_HOB_DATA () and
> GET_GUID_HOB_DATA_SIZE ()
> 
> +  to extract the data section and its size information, respectively.
> 
> +  In contrast with macro GET_NEXT_HOB(), this function does not skip the
> starting HOB pointer
> 
> +  unconditionally: it returns HobStart back if HobStart itself meets the
> requirement;
> 
> +  caller is required to use GET_NEXT_HOB() if it wishes to skip current
> HobStart.
> 
> +
> 
> +  If Guid is NULL, then ASSERT().
> 
> +  If HobStart is NULL, then ASSERT().
> 
> +
> 
> +  @param  Guid          The GUID to match with in the HOB list.
> 
> +  @param  HobStart      A pointer to a Guid.
> 
> +
> 
> +  @return The next instance of the matched GUID HOB from the starting
> HOB.
> 
> +
> 
> +**/
> 
> +VOID *
> 
> +EFIAPI
> 
> +GetNextGuidHob (
> 
> +  IN CONST EFI_GUID         *Guid,
> 
> +  IN CONST VOID             *HobStart
> 
> +  )
> 
> +{
> 
> +  EFI_PEI_HOB_POINTERS  GuidHob;
> 
> +
> 
> +  GuidHob.Raw = (UINT8 *) HobStart;
> 
> +  while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION,
> GuidHob.Raw)) != NULL) {
> 
> +    if (CompareGuid (Guid, &GuidHob.Guid->Name)) {
> 
> +      break;
> 
> +    }
> 
> +    GuidHob.Raw = GET_NEXT_HOB (GuidHob);
> 
> +  }
> 
> +  return GuidHob.Raw;
> 
> +}
> 
> +
> 
> +/**
> 
> +  Returns the first instance of the matched GUID HOB among the whole HOB
> list.
> 
> +
> 
> +  This function searches the first instance of a HOB among the whole HOB list.
> 
> +  Such HOB should satisfy two conditions:
> 
> +  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name
> equals to the input Guid.
> 
> +  If there does not exist such HOB from the starting HOB pointer, it will
> return NULL.
> 
> +  Caller is required to apply GET_GUID_HOB_DATA () and
> GET_GUID_HOB_DATA_SIZE ()
> 
> +  to extract the data section and its size information, respectively.
> 
> +
> 
> +  If the pointer to the HOB list is NULL, then ASSERT().
> 
> +  If Guid is NULL, then ASSERT().
> 
> +
> 
> +  @param  Guid          The GUID to match with in the HOB list.
> 
> +
> 
> +  @return The first instance of the matched GUID HOB among the whole
> HOB list.
> 
> +
> 
> +**/
> 
> +VOID *
> 
> +EFIAPI
> 
> +GetFirstGuidHob (
> 
> +  IN CONST EFI_GUID         *Guid
> 
> +  )
> 
> +{
> 
> +  VOID      *HobList;
> 
> +
> 
> +  HobList = GetHobList ();
> 
> +  return GetNextGuidHob (Guid, HobList);
> 
> +}
> 
> +
> 
> +/**
> 
> +  Get the system boot mode from the HOB list.
> 
> +
> 
> +  This function returns the system boot mode information from the
> 
> +  PHIT HOB in HOB list.
> 
> +
> 
> +  If the pointer to the HOB list is NULL, then ASSERT().
> 
> +
> 
> +  @param  VOID
> 
> +
> 
> +  @return The Boot Mode.
> 
> +
> 
> +**/
> 
> +EFI_BOOT_MODE
> 
> +EFIAPI
> 
> +GetBootModeHob (
> 
> +  VOID
> 
> +  )
> 
> +{
> 
> +  EFI_HOB_HANDOFF_INFO_TABLE    *HandOffHob;
> 
> +
> 
> +  HandOffHob = (EFI_HOB_HANDOFF_INFO_TABLE *) GetHobList ();
> 
> +
> 
> +  return  HandOffHob->BootMode;
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a HOB for a loaded PE32 module.
> 
> +
> 
> +  This function builds a HOB for a loaded PE32 module.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If ModuleName is NULL, then ASSERT().
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +
> 
> +  @param  ModuleName              The GUID File Name of the module.
> 
> +  @param  MemoryAllocationModule  The 64 bit physical address of the
> module.
> 
> +  @param  ModuleLength            The length of the module in bytes.
> 
> +  @param  EntryPoint              The 64 bit physical address of the module entry
> point.
> 
> +
> 
> +**/
> 
> +VOID
> 
> +EFIAPI
> 
> +BuildModuleHob (
> 
> +  IN CONST EFI_GUID         *ModuleName,
> 
> +  IN EFI_PHYSICAL_ADDRESS   MemoryAllocationModule,
> 
> +  IN UINT64                 ModuleLength,
> 
> +  IN EFI_PHYSICAL_ADDRESS   EntryPoint
> 
> +  )
> 
> +{
> 
> +  //
> 
> +  // PEI HOB is read only for DXE phase
> 
> +  //
> 
> +  ASSERT (FALSE);
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a HOB that describes a chunk of system memory with Owner GUID.
> 
> +
> 
> +  This function builds a HOB that describes a chunk of system memory.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +
> 
> +  @param  ResourceType        The type of resource described by this HOB.
> 
> +  @param  ResourceAttribute   The resource attributes of the memory
> described by this HOB.
> 
> +  @param  PhysicalStart       The 64 bit physical address of memory described
> by this HOB.
> 
> +  @param  NumberOfBytes       The length of the memory described by this
> HOB in bytes.
> 
> +  @param  OwnerGUID           GUID for the owner of this resource.
> 
> +
> 
> +**/
> 
> +VOID
> 
> +EFIAPI
> 
> +BuildResourceDescriptorWithOwnerHob (
> 
> +  IN EFI_RESOURCE_TYPE            ResourceType,
> 
> +  IN EFI_RESOURCE_ATTRIBUTE_TYPE  ResourceAttribute,
> 
> +  IN EFI_PHYSICAL_ADDRESS         PhysicalStart,
> 
> +  IN UINT64                       NumberOfBytes,
> 
> +  IN EFI_GUID                     *OwnerGUID
> 
> +  )
> 
> +{
> 
> +  //
> 
> +  // PEI HOB is read only for DXE phase
> 
> +  //
> 
> +  ASSERT (FALSE);
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a HOB that describes a chunk of system memory.
> 
> +
> 
> +  This function builds a HOB that describes a chunk of system memory.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +
> 
> +  @param  ResourceType        The type of resource described by this HOB.
> 
> +  @param  ResourceAttribute   The resource attributes of the memory
> described by this HOB.
> 
> +  @param  PhysicalStart       The 64 bit physical address of memory described
> by this HOB.
> 
> +  @param  NumberOfBytes       The length of the memory described by this
> HOB in bytes.
> 
> +
> 
> +**/
> 
> +VOID
> 
> +EFIAPI
> 
> +BuildResourceDescriptorHob (
> 
> +  IN EFI_RESOURCE_TYPE            ResourceType,
> 
> +  IN EFI_RESOURCE_ATTRIBUTE_TYPE  ResourceAttribute,
> 
> +  IN EFI_PHYSICAL_ADDRESS         PhysicalStart,
> 
> +  IN UINT64                       NumberOfBytes
> 
> +  )
> 
> +{
> 
> +  //
> 
> +  // PEI HOB is read only for DXE phase
> 
> +  //
> 
> +  ASSERT (FALSE);
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a customized HOB tagged with a GUID for identification and returns
> 
> +  the start address of GUID HOB data.
> 
> +
> 
> +  This function builds a customized HOB tagged with a GUID for identification
> 
> +  and returns the start address of GUID HOB data so that caller can fill the
> customized data.
> 
> +  The HOB Header and Name field is already stripped.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If Guid is NULL, then ASSERT().
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +  If DataLength > (0xFFF8 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
> 
> +  HobLength is UINT16 and multiples of 8 bytes, so the max HobLength is
> 0xFFF8.
> 
> +
> 
> +  @param  Guid          The GUID to tag the customized HOB.
> 
> +  @param  DataLength    The size of the data payload for the GUID HOB.
> 
> +
> 
> +  @retval  NULL         The GUID HOB could not be allocated.
> 
> +  @retval  others       The start address of GUID HOB data.
> 
> +
> 
> +**/
> 
> +VOID *
> 
> +EFIAPI
> 
> +BuildGuidHob (
> 
> +  IN CONST EFI_GUID              *Guid,
> 
> +  IN UINTN                       DataLength
> 
> +  )
> 
> +{
> 
> +  //
> 
> +  // PEI HOB is read only for DXE phase
> 
> +  //
> 
> +  ASSERT (FALSE);
> 
> +  return NULL;
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a customized HOB tagged with a GUID for identification, copies the
> input data to the HOB
> 
> +  data field, and returns the start address of the GUID HOB data.
> 
> +
> 
> +  This function builds a customized HOB tagged with a GUID for identification
> and copies the input
> 
> +  data to the HOB data field and returns the start address of the GUID HOB
> data.  It can only be
> 
> +  invoked during PEI phase; for DXE phase, it will ASSERT() since PEI HOB is
> read-only for DXE phase.
> 
> +  The HOB Header and Name field is already stripped.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If Guid is NULL, then ASSERT().
> 
> +  If Data is NULL and DataLength > 0, then ASSERT().
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +  If DataLength > (0xFFF8 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
> 
> +  HobLength is UINT16 and multiples of 8 bytes, so the max HobLength is
> 0xFFF8.
> 
> +
> 
> +  @param  Guid          The GUID to tag the customized HOB.
> 
> +  @param  Data          The data to be copied into the data field of the GUID
> HOB.
> 
> +  @param  DataLength    The size of the data payload for the GUID HOB.
> 
> +
> 
> +  @retval  NULL         The GUID HOB could not be allocated.
> 
> +  @retval  others       The start address of GUID HOB data.
> 
> +
> 
> +**/
> 
> +VOID *
> 
> +EFIAPI
> 
> +BuildGuidDataHob (
> 
> +  IN CONST EFI_GUID              *Guid,
> 
> +  IN VOID                        *Data,
> 
> +  IN UINTN                       DataLength
> 
> +  )
> 
> +{
> 
> +  //
> 
> +  // PEI HOB is read only for DXE phase
> 
> +  //
> 
> +  ASSERT (FALSE);
> 
> +  return NULL;
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a Firmware Volume HOB.
> 
> +
> 
> +  This function builds a Firmware Volume HOB.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +  If the FvImage buffer is not at its required alignment, then ASSERT().
> 
> +
> 
> +  @param  BaseAddress   The base address of the Firmware Volume.
> 
> +  @param  Length        The size of the Firmware Volume in bytes.
> 
> +
> 
> +**/
> 
> +VOID
> 
> +EFIAPI
> 
> +BuildFvHob (
> 
> +  IN EFI_PHYSICAL_ADDRESS        BaseAddress,
> 
> +  IN UINT64                      Length
> 
> +  )
> 
> +{
> 
> +  //
> 
> +  // PEI HOB is read only for DXE phase
> 
> +  //
> 
> +  ASSERT (FALSE);
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a EFI_HOB_TYPE_FV2 HOB.
> 
> +
> 
> +  This function builds a EFI_HOB_TYPE_FV2 HOB.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +  If the FvImage buffer is not at its required alignment, then ASSERT().
> 
> +
> 
> +  @param  BaseAddress   The base address of the Firmware Volume.
> 
> +  @param  Length        The size of the Firmware Volume in bytes.
> 
> +  @param  FvName        The name of the Firmware Volume.
> 
> +  @param  FileName      The name of the file.
> 
> +
> 
> +**/
> 
> +VOID
> 
> +EFIAPI
> 
> +BuildFv2Hob (
> 
> +  IN          EFI_PHYSICAL_ADDRESS        BaseAddress,
> 
> +  IN          UINT64                      Length,
> 
> +  IN CONST    EFI_GUID                    *FvName,
> 
> +  IN CONST    EFI_GUID                    *FileName
> 
> +  )
> 
> +{
> 
> +  ASSERT (FALSE);
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a EFI_HOB_TYPE_FV3 HOB.
> 
> +
> 
> +  This function builds a EFI_HOB_TYPE_FV3 HOB.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +  If the FvImage buffer is not at its required alignment, then ASSERT().
> 
> +
> 
> +  @param BaseAddress            The base address of the Firmware Volume.
> 
> +  @param Length                 The size of the Firmware Volume in bytes.
> 
> +  @param AuthenticationStatus   The authentication status.
> 
> +  @param ExtractedFv            TRUE if the FV was extracted as a file within
> 
> +                                another firmware volume. FALSE otherwise.
> 
> +  @param FvName                 The name of the Firmware Volume.
> 
> +                                Valid only if IsExtractedFv is TRUE.
> 
> +  @param FileName               The name of the file.
> 
> +                                Valid only if IsExtractedFv is TRUE.
> 
> +
> 
> +**/
> 
> +VOID
> 
> +EFIAPI
> 
> +BuildFv3Hob (
> 
> +  IN          EFI_PHYSICAL_ADDRESS        BaseAddress,
> 
> +  IN          UINT64                      Length,
> 
> +  IN          UINT32                      AuthenticationStatus,
> 
> +  IN          BOOLEAN                     ExtractedFv,
> 
> +  IN CONST    EFI_GUID                    *FvName, OPTIONAL
> 
> +  IN CONST    EFI_GUID                    *FileName OPTIONAL
> 
> +  )
> 
> +{
> 
> +  ASSERT (FALSE);
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a Capsule Volume HOB.
> 
> +
> 
> +  This function builds a Capsule Volume HOB.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If the platform does not support Capsule Volume HOBs, then ASSERT().
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +
> 
> +  @param  BaseAddress   The base address of the Capsule Volume.
> 
> +  @param  Length        The size of the Capsule Volume in bytes.
> 
> +
> 
> +**/
> 
> +VOID
> 
> +EFIAPI
> 
> +BuildCvHob (
> 
> +  IN EFI_PHYSICAL_ADDRESS        BaseAddress,
> 
> +  IN UINT64                      Length
> 
> +  )
> 
> +{
> 
> +  //
> 
> +  // PEI HOB is read only for DXE phase
> 
> +  //
> 
> +  ASSERT (FALSE);
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a HOB for the CPU.
> 
> +
> 
> +  This function builds a HOB for the CPU.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +
> 
> +  @param  SizeOfMemorySpace   The maximum physical memory
> addressability of the processor.
> 
> +  @param  SizeOfIoSpace       The maximum physical I/O addressability of the
> processor.
> 
> +
> 
> +**/
> 
> +VOID
> 
> +EFIAPI
> 
> +BuildCpuHob (
> 
> +  IN UINT8                       SizeOfMemorySpace,
> 
> +  IN UINT8                       SizeOfIoSpace
> 
> +  )
> 
> +{
> 
> +  //
> 
> +  // PEI HOB is read only for DXE phase
> 
> +  //
> 
> +  ASSERT (FALSE);
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a HOB for the Stack.
> 
> +
> 
> +  This function builds a HOB for the stack.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +
> 
> +  @param  BaseAddress   The 64 bit physical address of the Stack.
> 
> +  @param  Length        The length of the stack in bytes.
> 
> +
> 
> +**/
> 
> +VOID
> 
> +EFIAPI
> 
> +BuildStackHob (
> 
> +  IN EFI_PHYSICAL_ADDRESS        BaseAddress,
> 
> +  IN UINT64                      Length
> 
> +  )
> 
> +{
> 
> +  //
> 
> +  // PEI HOB is read only for DXE phase
> 
> +  //
> 
> +  ASSERT (FALSE);
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a HOB for the BSP store.
> 
> +
> 
> +  This function builds a HOB for BSP store.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +
> 
> +  @param  BaseAddress   The 64 bit physical address of the BSP.
> 
> +  @param  Length        The length of the BSP store in bytes.
> 
> +  @param  MemoryType    Type of memory allocated by this HOB.
> 
> +
> 
> +**/
> 
> +VOID
> 
> +EFIAPI
> 
> +BuildBspStoreHob (
> 
> +  IN EFI_PHYSICAL_ADDRESS        BaseAddress,
> 
> +  IN UINT64                      Length,
> 
> +  IN EFI_MEMORY_TYPE             MemoryType
> 
> +  )
> 
> +{
> 
> +  //
> 
> +  // PEI HOB is read only for DXE phase
> 
> +  //
> 
> +  ASSERT (FALSE);
> 
> +}
> 
> +
> 
> +/**
> 
> +  Builds a HOB for the memory allocation.
> 
> +
> 
> +  This function builds a HOB for the memory allocation.
> 
> +  It can only be invoked during PEI phase;
> 
> +  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
> 
> +
> 
> +  If there is no additional space for HOB creation, then ASSERT().
> 
> +
> 
> +  @param  BaseAddress   The 64 bit physical address of the memory.
> 
> +  @param  Length        The length of the memory allocation in bytes.
> 
> +  @param  MemoryType    Type of memory allocated by this HOB.
> 
> +
> 
> +**/
> 
> +VOID
> 
> +EFIAPI
> 
> +BuildMemoryAllocationHob (
> 
> +  IN EFI_PHYSICAL_ADDRESS        BaseAddress,
> 
> +  IN UINT64                      Length,
> 
> +  IN EFI_MEMORY_TYPE             MemoryType
> 
> +  )
> 
> +{
> 
> +  //
> 
> +  // PEI HOB is read only for DXE phase
> 
> +  //
> 
> +  ASSERT (FALSE);
> 
> +}
> 
> diff --git a/UefiPayloadPkg/Library/DxeHobListLib/DxeHobListLib.c
> b/UefiPayloadPkg/Library/DxeHobListLib/DxeHobListLib.c
> new file mode 100644
> index 0000000000..8bb31b3f9c
> --- /dev/null
> +++ b/UefiPayloadPkg/Library/DxeHobListLib/DxeHobListLib.c
> @@ -0,0 +1,66 @@
> +/** @file
> 
> +  This library retrieve the EFI_BOOT_SERVICES pointer from EFI system table
> in
> 
> +  library's constructor.
> 
> +
> 
> +  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
> 
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +
> 
> +#include <Uefi.h>
> 
> +
> 
> +VOID  *gHobList = NULL;
> 
> +
> 
> +/**
> 
> +  Local implementation of GUID comparasion that doesn't depend on
> DebugLib::ASSERT().
> 
> +
> 
> +  This function compares Guid1 to Guid2.  If the GUIDs are identical then
> TRUE is returned.
> 
> +  If there are any bit differences in the two GUIDs, then FALSE is returned.
> 
> +
> 
> +  @param  Guid1       A pointer to a 128 bit GUID.
> 
> +  @param  Guid2       A pointer to a 128 bit GUID.
> 
> +
> 
> +  @retval TRUE        Guid1 and Guid2 are identical.
> 
> +  @retval FALSE       Guid1 and Guid2 are not identical.
> 
> +**/
> 
> +BOOLEAN
> 
> +LocalCompareGuid (
> 
> +  IN CONST GUID  *Guid1,
> 
> +  IN CONST GUID  *Guid2
> 
> +  )
> 
> +{
> 
> +  UINT64  *Left;
> 
> +  UINT64  *Right;
> 
> +
> 
> +  Left  = (UINT64 *) Guid1;
> 
> +  Right = (UINT64 *) Guid2;
> 
> +
> 
> +  return (BOOLEAN) (Left[0] == Right[0] && Left[1] == Right[1]);
> 
> +}
> 
> +
> 
> +/**
> 
> +  @param  ImageHandle   The firmware allocated handle for the EFI image.
> 
> +  @param  SystemTable   A pointer to the EFI System Table.
> 
> +
> 
> +  @retval EFI_SUCCESS   The constructor always returns EFI_SUCCESS.
> 
> +
> 
> +**/
> 
> +EFI_STATUS
> 
> +EFIAPI
> 
> +DxeHobListLibConstructor (
> 
> +  IN EFI_HANDLE        ImageHandle,
> 
> +  IN EFI_SYSTEM_TABLE  *SystemTable
> 
> +  )
> 
> +{
> 
> +  UINTN             Index;
> 
> +
> 
> +  for (Index = 0; Index < SystemTable->NumberOfTableEntries; Index++) {
> 
> +    if (LocalCompareGuid (&gEfiHobListGuid, &SystemTable-
> >ConfigurationTable[Index].VendorGuid)) {
> 
> +      gHobList = SystemTable->ConfigurationTable[Index].VendorTable;
> 
> +      return EFI_SUCCESS;
> 
> +    }
> 
> +  }
> 
> +
> 
> +  return EFI_NOT_FOUND;
> 
> +}
> 
> diff --git a/UefiPayloadPkg/Library/DxeHobListLib/DxeHobListLib.inf
> b/UefiPayloadPkg/Library/DxeHobListLib/DxeHobListLib.inf
> new file mode 100644
> index 0000000000..1115949556
> --- /dev/null
> +++ b/UefiPayloadPkg/Library/DxeHobListLib/DxeHobListLib.inf
> @@ -0,0 +1,35 @@
> +## @file
> 
> +# UEFI Boot Services Table Library implementation.
> 
> +#
> 
> +# Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
> 
> +#
> 
> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +#
> 
> +#
> 
> +##
> 
> +
> 
> +[Defines]
> 
> +  INF_VERSION                    = 0x00010005
> 
> +  BASE_NAME                      = UefiPayloadInitHobLib
> 
> +  FILE_GUID                      = ff5c7a21-ab7a-4366-8616-11c6e53247b6
> 
> +  MODULE_TYPE                    = UEFI_DRIVER
> 
> +  VERSION_STRING                 = 1.0
> 
> +  LIBRARY_CLASS                  = DxeHobListLib|DXE_DRIVER
> DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION
> UEFI_DRIVER SMM_CORE
> 
> +
> 
> +  CONSTRUCTOR                    = DxeHobListLibConstructor
> 
> +
> 
> +#
> 
> +#  VALID_ARCHITECTURES           = IA32 X64 EBC
> 
> +#
> 
> +
> 
> +[Sources]
> 
> +  DxeHobListLib.c
> 
> +
> 
> +[Packages]
> 
> +  MdePkg/MdePkg.dec
> 
> +  UefiPayloadPkg/UefiPayloadPkg.dec
> 
> +
> 
> +[Guids]
> 
> +  gEfiHobListGuid                               ## CONSUMES
> 
> +
> 
> +
> 
> diff --git a/UefiPayloadPkg/Library/DxeHobListLibNull/DxeHobListLibNull.c
> b/UefiPayloadPkg/Library/DxeHobListLibNull/DxeHobListLibNull.c
> new file mode 100644
> index 0000000000..92d3e17ef0
> --- /dev/null
> +++ b/UefiPayloadPkg/Library/DxeHobListLibNull/DxeHobListLibNull.c
> @@ -0,0 +1,20 @@
> +/** @file
> 
> +  This library retrieve the EFI_BOOT_SERVICES pointer from EFI system table
> in
> 
> +  library's constructor.
> 
> +
> 
> +  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
> 
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +
> 
> +#include <Uefi.h>
> 
> +
> 
> +EFI_STATUS
> 
> +EFIAPI
> 
> +DxeHobListLibNullConstructor (
> 
> +  VOID
> 
> +  )
> 
> +{
> 
> +  return EFI_SUCCESS;
> 
> +}
> 
> diff --git a/UefiPayloadPkg/Library/DxeHobListLibNull/DxeHobListLibNull.inf
> b/UefiPayloadPkg/Library/DxeHobListLibNull/DxeHobListLibNull.inf
> new file mode 100644
> index 0000000000..f17e5ebdbd
> --- /dev/null
> +++ b/UefiPayloadPkg/Library/DxeHobListLibNull/DxeHobListLibNull.inf
> @@ -0,0 +1,28 @@
> +## @file
> 
> +# UEFI Boot Services Table Library implementation.
> 
> +#
> 
> +# Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
> 
> +#
> 
> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +#
> 
> +#
> 
> +##
> 
> +
> 
> +[Defines]
> 
> +  INF_VERSION                    = 0x00010005
> 
> +  BASE_NAME                      = DxeHobListLibNull
> 
> +  MODULE_TYPE                    = BASE
> 
> +  FILE_GUID                      = 060876c2-0e4e-4c63-8996-6af3710cfa64
> 
> +  VERSION_STRING                 = 1.0
> 
> +  LIBRARY_CLASS                  = DxeHobListLib
> 
> +  CONSTRUCTOR                    = DxeHobListLibNullConstructor
> 
> +
> 
> +#
> 
> +#  VALID_ARCHITECTURES           = IA32 X64 EBC
> 
> +#
> 
> +
> 
> +[Packages]
> 
> +  MdePkg/MdePkg.dec
> 
> +
> 
> +[Sources]
> 
> +  DxeHobListLibNull.c
> 
> diff --git a/UefiPayloadPkg/Library/HobLib/Hob.c
> b/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c
> similarity index 96%
> rename from UefiPayloadPkg/Library/HobLib/Hob.c
> rename to UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c
> index c0b4cc0b0f..23a749edf1 100644
> --- a/UefiPayloadPkg/Library/HobLib/Hob.c
> +++ b/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c
> @@ -1,7 +1,7 @@
>  /** @file
> 
> 
> 
>    Copyright (c) 2010, Apple Inc. All rights reserved.<BR>
> 
> -  Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>
> 
> +  Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.<BR>
> 
> 
> 
>    SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> 
> 
> diff --git a/UefiPayloadPkg/Library/HobLib/HobLib.inf
> b/UefiPayloadPkg/Library/PayloadEntryHobLib/HobLib.inf
> similarity index 87%
> rename from UefiPayloadPkg/Library/HobLib/HobLib.inf
> rename to UefiPayloadPkg/Library/PayloadEntryHobLib/HobLib.inf
> index 030e22a810..cbb4f02efc 100644
> --- a/UefiPayloadPkg/Library/HobLib/HobLib.inf
> +++ b/UefiPayloadPkg/Library/PayloadEntryHobLib/HobLib.inf
> @@ -1,6 +1,6 @@
>  #/** @file
> 
>  #
> 
> -#  Copyright (c) 2018 - 2020, Intel Corporation. All rights reserved.<BR>
> 
> +#  Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR>
> 
>  #  Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
> 
>  #
> 
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc
> b/UefiPayloadPkg/UefiPayloadPkg.dsc
> index 21b360256b..d8277efccd 100644
> --- a/UefiPayloadPkg/UefiPayloadPkg.dsc
> +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
> @@ -27,6 +27,7 @@
> 
> 
>    DEFINE SOURCE_DEBUG_ENABLE          = FALSE
> 
>    DEFINE PS2_KEYBOARD_ENABLE          = FALSE
> 
> +  DEFINE UNIVERSAL_PAYLOAD            = FALSE
> 
> 
> 
>    #
> 
>    # SBL:      UEFI payload for Slim Bootloader
> 
> @@ -146,6 +147,13 @@
> 
> PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/Base
> PeCoffGetEntryPointLib.inf
> 
> 
> CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCac
> heMaintenanceLib.inf
> 
>    SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf
> 
> +  DxeHobListLib|UefiPayloadPkg/Library/DxeHobListLib/DxeHobListLib.inf
> 
> +
> 
> +!if $(UNIVERSAL_PAYLOAD) == TRUE
> 
> +  HobLib|UefiPayloadPkg/Library/DxeHobLib/DxeHobLib.inf
> 
> +!else
> 
> +  HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
> 
> +!endif
> 
> 
> 
>    #
> 
>    # UEFI & PI
> 
> @@ -221,10 +229,12 @@
> 
> VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/Va
> riablePolicyHelperLib.inf
> 
> 
> 
>  [LibraryClasses.common.SEC]
> 
> -  HobLib|UefiPayloadPkg/Library/HobLib/HobLib.inf
> 
> +  HobLib|UefiPayloadPkg/Library/PayloadEntryHobLib/HobLib.inf
> 
>    PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
> 
> +
> DxeHobListLib|UefiPayloadPkg/Library/DxeHobListLibNull/DxeHobListLibNull
> .inf
> 
> 
> 
>  [LibraryClasses.common.DXE_CORE]
> 
> +
> DxeHobListLib|UefiPayloadPkg/Library/DxeHobListLibNull/DxeHobListLibNull
> .inf
> 
>    PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
> 
>    HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf
> 
> 
> MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLi
> b/DxeCoreMemoryAllocationLib.inf
> 
> @@ -238,7 +248,6 @@
> 
> 
>  [LibraryClasses.common.DXE_DRIVER]
> 
>    PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
> 
> -  HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
> 
> 
> MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemo
> ryAllocationLib.inf
> 
> 
> ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeE
> xtractGuidedSectionLib.inf
> 
> 
> ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/Dx
> eReportStatusCodeLib.inf
> 
> @@ -251,7 +260,6 @@
> 
> 
>  [LibraryClasses.common.DXE_RUNTIME_DRIVER]
> 
>    PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
> 
> -  HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
> 
> 
> MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemo
> ryAllocationLib.inf
> 
> 
> ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCod
> eLib/RuntimeDxeReportStatusCodeLib.inf
> 
> 
> VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLi
> bRuntimeDxe.inf
> 
> @@ -260,7 +268,6 @@
>    PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
> 
> 
> MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemo
> ryAllocationLib.inf
> 
> 
> ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/Dx
> eReportStatusCodeLib.inf
> 
> -  HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
> 
> 
> 
> 
> ##########################################################
> ######################
> 
>  #
> 
> --
> 2.30.0.windows.2


  reply	other threads:[~2021-06-23 23:45 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-23  2:52 [Patch V2 00/12] Enable Universal Payload in UefiPayloadPkg Zhiguang Liu
2021-06-23  2:52 ` [Patch V2 01/12] UefiPayloadPkg: Add HobLib for UniversalPayload Zhiguang Liu
2021-06-23 23:45   ` Guo Dong [this message]
2021-06-23  2:52 ` [Patch V2 02/12] MdeModulePkg: Add new structure for the Universal Payload Serial Port Info Zhiguang Liu
2021-06-23  2:52 ` [Patch V2 03/12] UefiPayloadPkg: Add a separate PlatformHookLib for Universal Payload Zhiguang Liu
2021-06-23  2:52 ` [Patch V2 04/12] UefiPayloadPkg: Update the function definition of HobConstructor Zhiguang Liu
2021-06-23  2:52 ` [Patch V2 05/12] UefiPayloadPkg: Create separate Payload Entry for UniversalPayload Zhiguang Liu
2021-06-23  2:52 ` [Patch V2 06/12] UefiPayloadPkg: Get and enter DxeCore for Universal Payload Zhiguang Liu
2021-06-23  2:52 ` [Patch V2 07/12] UefiPayloadPkg: Fix up UPL Pcd database Zhiguang Liu
2021-06-23 23:45   ` Guo Dong
2021-06-23  2:52 ` [Patch V2 08/12] UefiPayloadPkg: Include UniversalPayLoad modules in UefiPayloadPkg.dsc Zhiguang Liu
2021-06-23  2:52 ` [Patch V2 09/12] UefiPayloadPkg: Remove assert when reserve MMIO/IO resource for devices Zhiguang Liu
2021-06-23  2:52 ` [Patch V2 10/12] UefiPayloadPkg: Add macro to disable some drivers Zhiguang Liu
2021-06-23 23:48   ` Guo Dong
2021-06-23  2:52 ` [Patch V2 11/12] UefiPayloadPkg: Add PcdInstallAcpiSdtProtocol feature in UefiPayloadPkg Zhiguang Liu
2021-06-23  2:52 ` [Patch V2 12/12] UefiPayloadPkg: Add PcdResetOnMemoryTypeInformationChange " Zhiguang Liu
     [not found] ` <168B167444E9F647.3239@groups.io>
2021-06-23  8:50   ` [edk2-devel] [Patch V2 10/12] UefiPayloadPkg: Add macro to disable some drivers Zhiguang Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BYAPR11MB36224F1F5DDB6ACBEC1698E99E089@BYAPR11MB3622.namprd11.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox