Message ID | 20180528144024.10809-1-ard.biesheuvel@linaro.org |
---|---|
Headers | show |
Series | Abstract allocation of PEI accessible memory | expand |
On 28 May 2018 at 16:40, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > At the moment, FirmwarePerformanceTableDataDxe or DxeCorePerformanceLib > are unusable on systems such as AMD Seattle, because they unconditionally > attempt to allocate memory below 4 GB, and ASSERT() if this fails. On AMD > Seattle, no 32-bit addressable DRAM exists, and so the driver will always > assert, and crash a running DEBUG build. > > The reason for this is that some platforms (i.e., X64 builds consisting of > a 32-bit PEI stage and 64-bit remaining stages) require these allocations > to be below 4 GB, and for some reason, open coding this practice throughout > the code without regard for other architectures has been regarded as an > acceptable approach. > > Instead, I would like to propose the approach implemented in this series: > - create an abstracted AllocatePeiAccessiblePages() routine in DxeServicesLib > that simply allocates pages from any region on all architectures except X64, > and allocate below 4 GB for X64 > - update the various call sites with calls to this new function. > > The above is implemented in patches #3 - #6. Patches #1 and #2 are fixes > for issues that I observed in ArmVirtPkg and OvmfPkg while working on > these patches. > > Code can be found here: > https://github.com/ardbiesheuvel/edk2/tree/allocate-pei-v3 > > Changes since v2: > - move AllocatePeiAccessiblePages() to a separate .c file, and create a special > X64 version (#3) > - add back ZeroMem() call to #4 > - add Laszlo's ack to #4 - #5 (but not to #3 since it has been updated) > > Changes since v1: > - add Laszlo's ack to #1 - #2 > - move EfiAllocatePeiPages() to DxeServicesLib and drop Efi prefix > - update implementation to take EfiFreeMemoryTop into account when built > for X64 > > Ard Biesheuvel (5): > OvmfPkg/PlatformBootManagerLib: add missing report status code call > ArmVirtPkg/PlatformBootManagerLib: add missing report status code call > MdePkg/DxeServicesLib: introduce AllocatePeiAccessiblePages routine > MdeModulePkg/DxeCorePerformanceLib: use AllocatePeiAccessiblePages > MdeModulePkg/FirmwarePerformanceDataTableDxe: use > AllocatePeiAccessiblePages > Pushed as 2d0c6692eee4..65e984cd8ad8 Thanks all. _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel