On 26 May 2015 at 11:40, Laszlo Ersek <[email protected]> wrote:
> Ard,
>
> On 05/25/15 05:27, Heyi Guo wrote:
>> Hi folks,
>>
>> I noticed that the number of pages will be extended to 64KB aligned for
>> AARCH64 runtime services memory, like EfiRuntimeServicesCode/Data,
>> AcpiReclaimMemory, etc. However, the caller does not know the real page
>> number that was allocated; if some error occurs and the caller wants to
>> free the runtime memory which was allocated earlier, he can only use
>> EFI_SIZE_TO_PAGES to get the page number of 4KB aligned and up to 15
>> pages (60KB) memory might be leaked.
>>
>> This is not a critical issue for it is not common to free runtime type
>> memory. But I think it will be better to fix it in some way, e.g. using
>> another macro to calculate page number for runtime memory, documented in
>> UEFI spec, etc.
>>
>> Please let me know your comments, thanks!
>
> is this perhaps related to the recent-ish patches that adapt allocations
> to the 64KB page size?
>
Yes, it looks that way. But the relevant free path in
MdeModulePkg/Core/Dxe/Mem/Page.c is
"""
Alignment = EFI_DEFAULT_PAGE_ALLOCATION_ALIGNMENT;
ASSERT (Entry != NULL);
if (Entry->Type == EfiACPIReclaimMemory ||
Entry->Type == EfiACPIMemoryNVS ||
Entry->Type == EfiRuntimeServicesCode ||
Entry->Type == EfiRuntimeServicesData) {
Alignment = EFI_ACPI_RUNTIME_PAGE_ALLOCATION_ALIGNMENT;
}
if ((Memory & (Alignment - 1)) != 0) {
Status = EFI_INVALID_PARAMETER;
goto Done;
}
NumberOfPages += EFI_SIZE_TO_PAGES (Alignment) - 1;
NumberOfPages &= ~(EFI_SIZE_TO_PAGES (Alignment) - 1);
Status = CoreConvertPages (Memory, NumberOfPages, EfiConventionalMemory);
"""
so the number of pages being freed is internally rounded up to the
same granularity that was used to do the allocation.
@Heyi: can you confirm that the FreePages() call returns without an
error in your case?
--
Ard.
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel