Any thoughts/feedback on this patch? Thanks, Jeff
> -----Original Message----- > From: Jeff Brasen <jbra...@nvidia.com> > Sent: Monday, May 15, 2023 5:49 PM > To: devel@edk2.groups.io > Cc: jian.j.w...@intel.com; gaolim...@byosoft.com.cn; dandan...@intel.com; > Jeff Brasen <jbra...@nvidia.com>; Ashish Singhal > <ashishsin...@nvidia.com> > Subject: [PATCH] MdeModulePkg/DxeCore: Allow relocation of images with > large address > > Add PCD to control if modules with start addresses in PE/COFF > 0x100000 > attempt to load at specified address. > If a module has an address in this range and there is untested memory > DxeCore will attempt to promote all memory to tested which bypasses any > memory testing that would occur later in boot. > > There are several existing AARCH64 option roms that have base addresses of > 0x180000000. > > Signed-off-by: Jeff Brasen <jbra...@nvidia.com> > Reviewed-by: Ashish Singhal <ashishsin...@nvidia.com> > --- > MdeModulePkg/Core/Dxe/DxeMain.inf | 1 + > MdeModulePkg/Core/Dxe/Image/Image.c | 4 +++- > MdeModulePkg/MdeModulePkg.dec | 7 +++++++ > 3 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/MdeModulePkg/Core/Dxe/DxeMain.inf > b/MdeModulePkg/Core/Dxe/DxeMain.inf > index 35d5bf0dee..16871f2021 100644 > --- a/MdeModulePkg/Core/Dxe/DxeMain.inf > +++ b/MdeModulePkg/Core/Dxe/DxeMain.inf > @@ -187,6 +187,7 @@ > gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPropertyMask > ## CONSUMES > gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard > ## > CONSUMES > gEfiMdeModulePkgTokenSpaceGuid.PcdFwVolDxeMaxEncapsulationDepth > ## CONSUMES > + gEfiMdeModulePkgTokenSpaceGuid.PcdImageLargeAddressLoad > ## CONSUMES > > # [Hob] > # RESOURCE_DESCRIPTOR ## CONSUMES > diff --git a/MdeModulePkg/Core/Dxe/Image/Image.c > b/MdeModulePkg/Core/Dxe/Image/Image.c > index 9dbfb2a1fa..6bc3a549ae 100644 > --- a/MdeModulePkg/Core/Dxe/Image/Image.c > +++ b/MdeModulePkg/Core/Dxe/Image/Image.c > @@ -680,7 +680,9 @@ CoreLoadPeImage ( > ); > } > } else { > - if ((Image->ImageContext.ImageAddress >= 0x100000) || Image- > >ImageContext.RelocationsStripped) { > + if ((PcdGetBool (PcdImageLargeAddressLoad) && ((Image- > >ImageContext.ImageAddress) >= 0x100000)) || > + Image->ImageContext.RelocationsStripped) > + { > Status = CoreAllocatePages ( > AllocateAddress, > (EFI_MEMORY_TYPE)(Image- > >ImageContext.ImageCodeMemoryType), > diff --git a/MdeModulePkg/MdeModulePkg.dec > b/MdeModulePkg/MdeModulePkg.dec index 95dd077e19..6fd1bd7b8f > 100644 > --- a/MdeModulePkg/MdeModulePkg.dec > +++ b/MdeModulePkg/MdeModulePkg.dec > @@ -1116,6 +1116,13 @@ > # @Prompt Output MMIO address of Trace Hub message. > > gEfiMdeModulePkgTokenSpaceGuid.PcdTraceHubDebugMmioAddress|0|UIN > T64|0x30001058 > > + ## Indicates if images with large load address (>0x100000) should > attempted to load at specified location. > + # If enabled, attempt to allocate at specfied location will be attempted > with > a fall back to any address. > + # TRUE - UEFI will attempt to load at specified location.<BR> > + # FALSE - UEFI will load at any address<BR> > + # @Prompt Enable large address image loading. > + > + > gEfiMdeModulePkgTokenSpaceGuid.PcdImageLargeAddressLoad|TRUE|BOOL > EAN|0 > + x30001059 > + > [PcdsFixedAtBuild, PcdsPatchableInModule] > ## Dynamic type PCD can be registered callback function for Pcd setting > action. > # PcdMaxPeiPcdCallBackNumberPerPcdEntry indicates the maximum > number of callback function > -- > 2.25.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#108497): https://edk2.groups.io/g/devel/message/108497 Mute This Topic: https://groups.io/mt/98916659/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-