The EDKII UEFI bios flow is: 1. platform PEI creates a default memory type information HOB 2. DXE CORE reserves the memory according to the HOB for allocation 3. BDS checks whether the pre-reserved memory meets the needs and saves the real needs to a NV variable if the pre-reserved is not enough 4. Next time boot, platform PEI loads the NV variable to create the memory type information HOB
But this patch only creates a default HOB and don't provides a mechanism to consume the NV and create the HOB. > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Park, Aiden > Sent: Friday, January 29, 2021 10:00 AM > To: Dong, Guo <guo.d...@intel.com>; Ma, Maurice <maurice...@intel.com>; > devel@edk2.groups.io > Cc: Park, Aiden <aiden.p...@intel.com> > Subject: [edk2-devel] [PATCH] UefiPayloadPkg: Update EFI Memory Service > conditions > > From: Aiden Park <aiden.p...@intel.com> > > The CoreInitializeMemoryServices() looks for a suitable memory region > for EFI Memory Service from the ResourceDescriptor Hob. > This patch does not allow legacy memory region for the Memory Service > and provides default memory type information to calculate minimal > required memory size properly for the Memory Service. > > Signed-off-by: Aiden Park <aiden.p...@intel.com> > --- > .../UefiPayloadEntry/UefiPayloadEntry.c | 20 +++++++++++++++++++ > .../UefiPayloadEntry/UefiPayloadEntry.inf | 5 +++++ > 2 files changed, 25 insertions(+) > > diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c > b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c > index 805f5448d9..d2e6f962cd 100644 > --- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c > +++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c > @@ -6,6 +6,16 @@ > **/ > > #include "UefiPayloadEntry.h" > +#include <Guid/MemoryTypeInformation.h> > + > +EFI_MEMORY_TYPE_INFORMATION mDefaultMemoryTypeInformation[] = { > + { EfiACPIReclaimMemory, FixedPcdGet32 > (PcdMemoryTypeEfiACPIReclaimMemory) }, > + { EfiACPIMemoryNVS, FixedPcdGet32 (PcdMemoryTypeEfiACPIMemoryNVS) }, > + { EfiReservedMemoryType, FixedPcdGet32 > (PcdMemoryTypeEfiReservedMemoryType) }, > + { EfiRuntimeServicesData, FixedPcdGet32 > (PcdMemoryTypeEfiRuntimeServicesData) }, > + { EfiRuntimeServicesCode, FixedPcdGet32 > (PcdMemoryTypeEfiRuntimeServicesCode) }, > + { EfiMaxMemoryType, 0 } > +}; > > /** > Callback function to build resource descriptor HOB > @@ -44,6 +54,9 @@ MemInfoCallback ( > // Remove tested attribute to avoid DXE core to dispatch driver to > memory above 4GB > Attribue &= ~EFI_RESOURCE_ATTRIBUTE_TESTED; > } > + if (Base == 0x00) { > + Attribue &= ~EFI_RESOURCE_ATTRIBUTE_TESTED; > + } > > BuildResourceDescriptorHob (Type, Attribue, (EFI_PHYSICAL_ADDRESS)Base, > Size); > DEBUG ((DEBUG_INFO , "buildhob: base = 0x%lx, size = 0x%lx, type = > 0x%x\n", Base, Size, Type)); > @@ -315,6 +328,13 @@ BuildGenericHob ( > UINT8 PhysicalAddressBits; > EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute; > > + // > + // Create Memory Type Information HOB > + // > + BuildGuidDataHob (&gEfiMemoryTypeInformationGuid, > + mDefaultMemoryTypeInformation, > + sizeof (mDefaultMemoryTypeInformation)); > + > // The UEFI payload FV > BuildMemoryAllocationHob (PcdGet32 (PcdPayloadFdMemBase), PcdGet32 > (PcdPayloadFdMemSize), EfiBootServicesData); > > diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf > b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf > index cc59f1903b..5cb084ca51 100644 > --- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf > +++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf > @@ -86,6 +86,11 @@ > gUefiPayloadPkgTokenSpaceGuid.PcdPayloadFdMemSize > gUefiPayloadPkgTokenSpaceGuid.PcdPayloadStackTop > gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize > + gUefiPayloadPkgTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory > + gUefiPayloadPkgTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS > + gUefiPayloadPkgTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType > + gUefiPayloadPkgTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData > + gUefiPayloadPkgTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode > > gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack ## > SOMETIMES_CONSUMES > gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy ## > SOMETIMES_CONSUMES > -- > 2.20.1 > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#70883): https://edk2.groups.io/g/devel/message/70883 Mute This Topic: https://groups.io/mt/80200968/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-