Message ID | 20241008181435.1753814-1-sughosh.ganu@linaro.org |
---|---|
Headers | show |
Series | Make EFI memory allocations synchronous with LMB | expand |
On 10/8/24 20:14, Sughosh Ganu wrote: > This is part two of the series to have the EFI and LMB modules have a > coherent view of memory. Part one of this goal was to change the LMB > module to have a global and persistent memory map. Those patches have > now been applied to the next branch. > > These patches are changing the EFI memory allocation API's such that > they rely on the LMB module to allocate RAM memory. This fixes the > current scenario where the EFI memory module has no visibility of the > allocations/reservations made by the LMB module. One thing to note > here is that this is limited to the RAM memory region, i.e. the > EFI_CONVENTIONAL_MEMORY type. Any other memory type that is to be > added to the EFI memory map, still gets handled by the EFI memory > module. LMB seems to have restrictions that EFI does not have: __lmb_free() fails if the freed memory range extends over multiple adjacent allocated regions. FreePages() in the EFI specification does not require that all freed pages have the same properties. I don't think this will hit us with this series as we currently always pass the same flags to LMB when allocating and LMB should be coalescing adjacent allocations. But if we will go forward and move the EFI memory map into LMB to avoid double accounting we will have to rework __lmb_free(). Best regards Heinrich
On 10/8/24 20:14, Sughosh Ganu wrote: > This is part two of the series to have the EFI and LMB modules have a > coherent view of memory. Part one of this goal was to change the LMB > module to have a global and persistent memory map. Those patches have > now been applied to the next branch. > > These patches are changing the EFI memory allocation API's such that > they rely on the LMB module to allocate RAM memory. This fixes the > current scenario where the EFI memory module has no visibility of the > allocations/reservations made by the LMB module. One thing to note > here is that this is limited to the RAM memory region, i.e. the > EFI_CONVENTIONAL_MEMORY type. Any other memory type that is to be > added to the EFI memory map, still gets handled by the EFI memory > module. With this series the UEFI SCT fails in the MemoryAllocationServicesTest on arm64 when running on sandbox64_defconfig: UEFI image [0x00000000182e5000:0x00000000183b7fff] pc=0x99d4out of memory 'c=0x99d4 UEFI image [0x0000000014139000:0x000000001416dfff]out of memory '0x0000000014139000:0x000000001416dfff] UEFI image [0x00000000140fc000:0x0000000014100fff]out of memory '0x00000000140fc000:0x0000000014100fff] Without this series the test runs fine. Some guidance for running the SCT is provided in https://github.com/U-Boot-EFI/u-boot-sct-results. Best regards Heinrich