Hi Ard, I got this error when running SCT against QEMU AARCH64 UEFI. I think it will only happen for aarch64 runtime services allocation, because only this type of memory requires more than 4 pages alignment, which will trigger the bug. If we use the same alignment (e.g. 64KB) for both boot and runtime memory, it just avoid the bug indirectly, as each descriptor would be kept naturally aligned with 64KB.
Thanks. On 06/05/2015 12:08 AM, Ard Biesheuvel wrote: > On 4 June 2015 at 17:55, Heyi Guo <heyi....@linaro.org> wrote: >> DescEnd will be clipped for alignment in CoreFindFreePagesI, and it >> may fall below DescStart, when alignment is more than 16KB (included) >> and both DescStart and original DescEnd fall into a single range of >> such alignment. This results in a huge size (Negative number in >> unsigned type) for this descriptor, fulfilling the allocation >> requirement but failing to run ConvertPages; at last it causes > at least > >> occasional failure of AllocatePages. >> >> A simple comparison is added to ensure we would never get a negative >> number. >> >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Heyi Guo <heyi....@linaro.org> > Acked-by: Ard Biesheuvel <ard.biesheu...@linaro.org> > > So is this only happening because we use different granularities for > boottime and runtime allocations on AArch64? > > >> --- >> MdeModulePkg/Core/Dxe/Mem/Page.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/MdeModulePkg/Core/Dxe/Mem/Page.c >> b/MdeModulePkg/Core/Dxe/Mem/Page.c >> index a92c865..f2efaf1 100644 >> --- a/MdeModulePkg/Core/Dxe/Mem/Page.c >> +++ b/MdeModulePkg/Core/Dxe/Mem/Page.c >> @@ -1051,6 +1051,11 @@ CoreFindFreePagesI ( >> >> DescEnd = ((DescEnd + 1) & (~(Alignment - 1))) - 1; >> >> + // Skip if DescEnd is less than DescStart after alignment clipping >> + if (DescEnd < DescStart) { >> + continue; >> + } >> + >> // >> // Compute the number of bytes we can used from this >> // descriptor, and see it's enough to satisfy the request >> -- >> 2.1.4 >> ------------------------------------------------------------------------------ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel