Reviewed-by: Sean Rhodes <sean@starlabs.systems> On Sat, 1 Apr 2023 at 00:58, Benjamin Doron <benjamin.doro...@gmail.com> wrote:
> MemoryType information assists GCD with defragmenting the memory map. > When the DXE core starts, GCD adds memory descriptors for the resource > descriptors HOBs. This allocates heap space which can be reused later > as the bins by memory type. It seems memory allocation prefers low > ranges. > > It seems "below 4G" is an artifact of this heap reuse. However, the > memory type information determines the DXE core's > `MinimalMemorySizeNeeded`, determining which system memory descriptor > HOB may be used by DXE. Furthermore, it's important that the memory > type information be correct, for an S4 memory map. > > Therefore, follow other bootloaders, such as [MinPlatform][1], and do > this unconditionally. As of [edk2-stable202011][2], it was. > > [1]: > https://github.com/tianocore/edk2-platforms/blob/b6f96743891be51541184bf61dd2970c008e2c43/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.c#L164-L201 > [2]: > https://github.com/tianocore/edk2/blob/edk2-stable202011/UefiPayloadPkg/BlSupportPei/BlSupportPei.c#L462-L466 > > Cc: Guo Dong <guo.d...@intel.com> > Cc: Ray Ni <ray...@intel.com> > Cc: Sean Rhodes <sean@starlabs.systems> > Cc: James Lu <james...@intel.com> > Cc: Gua Guo <gua....@intel.com> > Signed-off-by: Benjamin Doron <benjamin.doro...@gmail.com> > --- > .../UefiPayloadEntry/UefiPayloadEntry.c | 36 +++++-------------- > .../UefiPayloadEntry/UefiPayloadEntry.inf | 2 -- > UefiPayloadPkg/UefiPayloadPkg.dec | 3 -- > UefiPayloadPkg/UefiPayloadPkg.dsc | 2 -- > 4 files changed, 8 insertions(+), 35 deletions(-) > > diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c > b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c > index 780348eadfa8..030a5baed914 100644 > --- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c > +++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c > @@ -19,30 +19,6 @@ EFI_MEMORY_TYPE_INFORMATION > mDefaultMemoryTypeInformation[] = { > { EfiMaxMemoryType, 0 > } > }; > > -/** > - Function to reserve memory below 4GB for EDKII Modules. > - > - This causes the DXE to dispatch everything under 4GB and allows > Operating > - System's that require EFI_LOADED_IMAGE to be under 4GB to start. > - e.g. Xen hypervisor used in Qubes. > -**/ > -VOID > -ForceModulesBelow4G ( > - VOID > - ) > -{ > - DEBUG ((DEBUG_INFO, "Building hob to restrict memory resorces to below > 4G.\n")); > - > - // > - // Create Memory Type Information HOB > - // > - BuildGuidDataHob ( > - &gEfiMemoryTypeInformationGuid, > - mDefaultMemoryTypeInformation, > - sizeof (mDefaultMemoryTypeInformation) > - ); > -} > - > /** > Callback function to build resource descriptor HOB > > @@ -472,10 +448,14 @@ _ModuleEntryPoint ( > // Build other HOBs required by DXE > BuildGenericHob (); > > - // Create a HOB to make resources for EDKII modules below 4G > - if (!FixedPcdGetBool (PcdDispatchModuleAbove4GMemory)) { > - ForceModulesBelow4G (); > - } > + // > + // Create Memory Type Information HOB > + // > + BuildGuidDataHob ( > + &gEfiMemoryTypeInformationGuid, > + mDefaultMemoryTypeInformation, > + sizeof (mDefaultMemoryTypeInformation) > + ); > > // Load the DXE Core > Status = LoadDxeCore (&DxeCoreEntryPoint); > diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf > b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf > index d47e8e76cf4c..e2af8a4b7c1b 100644 > --- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf > +++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf > @@ -96,5 +96,3 @@ > gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy ## > SOMETIMES_CONSUMES > gEfiMdeModulePkgTokenSpaceGuid.PcdImageProtectionPolicy ## > SOMETIMES_CONSUMES > > - gUefiPayloadPkgTokenSpaceGuid.PcdDispatchModuleAbove4GMemory > - > diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec > b/UefiPayloadPkg/UefiPayloadPkg.dec > index 7d61d6eeae6c..2ed73513700d 100644 > --- a/UefiPayloadPkg/UefiPayloadPkg.dec > +++ b/UefiPayloadPkg/UefiPayloadPkg.dec > @@ -82,9 +82,6 @@ > gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x > > gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, > 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41 > }|VOID*|0x00000018 > > -# Above 4G Memory > > -gUefiPayloadPkgTokenSpaceGuid.PcdDispatchModuleAbove4GMemory|TRUE|BOOLEAN|0x00000019 > - > # Boot Manager Key > > gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020 > > diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc > b/UefiPayloadPkg/UefiPayloadPkg.dsc > index bca5d3f335bc..9847f189fff5 100644 > --- a/UefiPayloadPkg/UefiPayloadPkg.dsc > +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc > @@ -34,7 +34,6 @@ > DEFINE SECURITY_STUB_ENABLE = TRUE > DEFINE SMM_SUPPORT = FALSE > DEFINE PLATFORM_BOOT_TIMEOUT = 3 > - DEFINE ABOVE_4G_MEMORY = TRUE > DEFINE BOOT_MANAGER_ESCAPE = FALSE > DEFINE ATA_ENABLE = TRUE > DEFINE SD_ENABLE = TRUE > @@ -442,7 +441,6 @@ > !endif > > gEfiMdeModulePkgTokenSpaceGuid.PcdSdMmcGenericTimeoutValue|$(SD_MMC_TIMEOUT) > > - > gUefiPayloadPkgTokenSpaceGuid.PcdDispatchModuleAbove4GMemory|$(ABOVE_4G_MEMORY) > > gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE) > > gEfiMdePkgTokenSpaceGuid.PcdMaximumUnicodeStringLength|1800000 > -- > 2.39.1 > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#102373): https://edk2.groups.io/g/devel/message/102373 Mute This Topic: https://groups.io/mt/97985491/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-