I did a search on current MdeModulePkg. I found there are more modules allocating Below4G memory. Besides BDS, we have BootGraphicsResourceTableDxe, BootScriptExecutorDxe, FirmwarePerformanceDataTableDxe, PiDxeS3BootScriptLib, CapsuleRuntimeDxe.
BootGraphicsResourceTableDxe - I am not clear. CapsuleRuntimeDxe - Below4G is designed for PEI capsule. Or we do not need such capability. BootScriptExecutorDxe, FirmwarePerformanceDataTableDxe, PiDxeS3BootScriptLib - data need to be access in PEI phase. I think we might need more clean up for 32bit PEI. I am still thinking if we can reuse old Pcd - we can clarify in PCD description - it is only for 32bit PEI and 64bit DXE. Or a new PCD, and name to Pcd32BitPei? Please allow me collect more feedback on that. In order to separate 32bit PEI issue from ACPI issue, I think we can check in ACPI patch at first, if you want. Thank you Yao Jiewen From: Ni, Ruiyu Sent: Monday, February 22, 2016 11:36 AM To: Laszlo Ersek; Ard Biesheuvel; [email protected]; Tian, Feng; Zeng, Star; [email protected]; [email protected]; Fan, Jeff; Yao, Jiewen Cc: Gao, Liming Subject: RE: [edk2] [PATCH v3 2/4] IntelFrameworkModulePkg: BdsDxe: only allocate below 4 GB if needed Ard, So the final decision between you and Jiewen is a new PCD is still needed? If so, could you move the PCD to MdeModulePkg? because the MdeModulePkg/BDS actually may also need this change if it's used in ARM64 platform and MdeModulePkg shouldn't depend on a PCD defined in IntelFrameworkModulePkg. Thanks, Ray ________________________________________ From: edk2-devel [[email protected]] on behalf of Laszlo Ersek [[email protected]] Sent: Friday, February 19, 2016 21:40 To: Ard Biesheuvel; [email protected]<mailto:[email protected]>; Tian, Feng; Zeng, Star; [email protected]<mailto:[email protected]>; [email protected]<mailto:[email protected]>; Fan, Jeff; Yao, Jiewen Cc: Gao, Liming Subject: Re: [edk2] [PATCH v3 2/4] IntelFrameworkModulePkg: BdsDxe: only allocate below 4 GB if needed On 02/19/16 14:15, Ard Biesheuvel wrote: > The reserved region for storing performance data is allocated below 4 > GB, so that its contents are accessible from PEI upon S3 resume. > However, this is a X64 pecularity, and on AARCH64 systems, which does > not have this restriction (nor does it have S3, btw), this limit may > cause the allocation to fail (if the platform does not have memory > below 4 GB) or needlessly fragment the memory map if it does succeed. > > So make this behavior conditional, based on the new > PcdPeiAllocMemLimit4GB PCD, which defaults to TRUE, but can be > overridden by platforms if they prefer allocations of PEI accessible memory > to be served from anywhere. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel > --- > IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec | 6 ++++++ > IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf | 7 ++++--- > IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c | 13 +++++++++++-- > 3 files changed, 21 insertions(+), 5 deletions(-) > > diff --git a/IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec > b/IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec > index 8bbde8e2c9c8..005d356f5938 100644 > --- a/IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec > +++ b/IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec > @@ -161,6 +161,12 @@ [PcdsFeatureFlag] > # @Prompt Enable Boot Logo only > > gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBootlogoOnlyEnable|FALSE| > BOOLEAN|0x00010048 > > + ## Indicates whether allocations for PEI accessible memory should be below > the 4 GB mark > + # TRUE - PEI accessible memory should be allocated below 4 GB. > + # FALSE - PEI accessible memory may be allocated anywhere. > + # @Prompt Allocated PEI accessible memory below 4 GB > + > + gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPeiAllocMemLimit4GB|TRU > + E|BOOLEAN|0x00010049 > + > [PcdsFixedAtBuild, PcdsPatchableInModule] > ## FFS filename to find the default BMP Logo file. > # @Prompt FFS Name of Boot Logo File diff --git > a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf > b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf > index 6afb8a09df9c..fa210836f410 100644 > --- a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf > +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf > @@ -181,9 +181,10 @@ [Protocols] > gEdkiiVariableLockProtocolGuid ## SOMETIMES_CONSUMES > > [FeaturePcd] > - gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate ## CONSUMES > - gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport ## CONSUMES > - gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBootlogoOnlyEnable ## > CONSUMES > + gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate ## CONSUMES > + gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport ## CONSUMES > + gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBootlogoOnlyEnable ## CONSUMES > + gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPeiAllocMemLimit4GB > + ## CONSUMES > > [Pcd] > gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangCodes ## SOMETIMES_CONSUMES > diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c > b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c > index ae7ad2153c51..3b524db94b3d 100644 > --- a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c > +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c > @@ -474,14 +474,23 @@ BdsAllocateMemoryForPerformanceData ( > EFI_STATUS Status; > EFI_PHYSICAL_ADDRESS AcpiLowMemoryBase; > EDKII_VARIABLE_LOCK_PROTOCOL *VariableLock; > + EFI_ALLOCATE_TYPE AllocType; > > - AcpiLowMemoryBase = 0x0FFFFFFFFULL; > + // > + // The memory we allocate here must be accessible from PEI at resume. > + // > + if (FeaturePcdGet (PcdPeiAllocMemLimit4GB)) { > + AcpiLowMemoryBase = 0x0FFFFFFFFULL; > + AllocType = AllocateMaxAddress; > + } else { > + AllocType = AllocateAnyPages; > + } > > // > // Allocate a block of memory that will contain performance data to OS. > // > Status = gBS->AllocatePages ( > - AllocateMaxAddress, > + AllocType, > EfiReservedMemoryType, > EFI_SIZE_TO_PAGES (PERF_DATA_MAX_LENGTH), > &AcpiLowMemoryBase > My review is of course not authoritative for this package, but still: Reviewed-by: Laszlo Ersek _______________________________________________ edk2-devel mailing list [email protected]<mailto:[email protected]> https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

