[PATCH v1 0/8] Cleanup the LMB subsystem
Sam Protsenko
semen.protsenko at linaro.org
Fri Dec 13 00:41:54 CET 2024
On Wed, Dec 11, 2024 at 4:55 AM Ilias Apalodimas
<ilias.apalodimas at linaro.org> wrote:
>
> Hi all,
>
> This is v1 of the rfc [0]
>
> The LMB subsystem was used opportunistically for a number of years.
> A while back Sughosh merged it with the EFI subsystem in order to have a
> common allocator and avoid subsystems overwriting memory they shouldn't.
>
> This is an initial cleanup of all the crud we gathered over the years.
> There's no functional change expected from the patches as they just cleanup
> some abstraction functions and rename a few variables to make more
> sense.
>
> I plan to make even bigger changes -- e.g I don't see the point of
> having *_alloc() and *_reserve() versions of the functions since they mostly
> do the same thing and just cause confusion. lmb_alloc_addr_flags()
> returning the base address on success makes little sense since we
> already *request* the address on the function arguments, etc.
> Since this patchset grew enough already, I'd like to get it in
> before more refactoring happens.
>
> It's worth noting that although some patches slightly increase the code
> size due to an extra flags argument being carried around, the final
> result is eventually smaller.
>
> # qemu_arm64_lwip_defconfig (version string adds another 20b)
> add/remove: 0/5 grow/shrink: 15/1 up/down: 568/-628 (-60)
> Function old new delta
> lmb_alloc_base 80 324 +244
> lmb_alloc_addr 8 144 +136
> lmb_reserve 8 96 +88
> version_string 50 70 +20
> boot_relocate_fdt 488 508 +20
> boot_ramdisk_high 268 284 +16
> lmb_add_region_flags 696 704 +8
> boot_fdt_reserve_region 100 108 +8
> load_serial 548 552 +4
> lmb_alloc 8 12 +4
> image_setup_libfdt 368 372 +4
> do_load 728 732 +4
> do_bootz 332 336 +4
> do_booti 520 524 +4
> bootm_run_states 2176 2180 +4
> lmb_alloc_addr_flags 4 - -4
> boot_fdt_add_mem_rsv_regions 284 280 -4
> lmb_alloc_base_flags 76 - -76
> lmb_reserve_flags 96 - -96
> _lmb_alloc_addr 144 - -144
> _lmb_alloc_base 304 - -304
> Total: Before=1020102, After=1020042, chg -0.01%
>
> # sandbox_defconfig (version string adds another 20b)
> add/remove: 0/3 grow/shrink: 24/3 up/down: 523/-501 (22)
> Function old new delta
> lmb_alloc_base 48 299 +251
> lmb_alloc_addr 4 92 +88
> lmb_reserve 4 58 +54
> test_alloc_addr 2933 2963 +30
> version_string 50 70 +20
> lib_test_lmb_overlapping_reserve 1018 1030 +12
> lmb_add_region_flags 600 610 +10
> test_multi_alloc.constprop 3034 3042 +8
> test_get_unreserved_size 1032 1038 +6
> boot_relocate_fdt 599 605 +6
> boot_fdt_reserve_region 67 73 +6
> lmb_alloc 4 9 +5
> lmb_free_flags 190 194 +4
> wget_handler 1530 1533 +3
> tftp_handler 1190 1192 +2
> test_noreserved 1207 1209 +2
> test_bigblock 911 913 +2
> load_serial 946 948 +2
> lib_test_lmb_flags 2101 2103 +2
> do_spi_flash 3150 3152 +2
> do_bootz 526 528 +2
> do_bootm_linux 2067 2069 +2
> bootm_run_states 5275 5277 +2
> _fs_read.lto_priv 331 333 +2
> lmb_dump_region.lto_priv 356 353 -3
> lmb_add 59 52 -7
> efi_allocate_pages.part 303 249 -54
> lmb_reserve_flags 65 - -65
> _lmb_alloc_addr.lto_priv 92 - -92
> _lmb_alloc_base.lto_priv 280 - -280
> Total: Before=2492722, After=2492744, chg +0.00%
>
> [0] https://lore.kernel.org/u-boot/20241208105223.2821049-1-ilias.apalodimas@linaro.org/T/#m43927af3f758f8d0be897a8a6c77b4325546afd5
>
> Changes since v1:
> - Rebased on top of
> https://lore.kernel.org/u-boot/20241211021703.2333-1-semen.protsenko@linaro.org/
> https://lore.kernel.org/u-boot/20241211022550.2995-1-semen.protsenko@linaro.org/
> - Converted enum lmb_flags to a u32
> - Removed the _flags from all the functions
> - Added a patch that removes lmb_align_down()
> - Picked up r-b tags. Tom I kept your on patch #3 since I only changed the name
> of the function and assumed you are ok with it.
>
> Ilias Apalodimas (8):
> lmb: Remove lmb_align_down()
> lmb: Move enum lmb_flags to a u32
> lmb: Remove lmb_reserve_flags()
> lmb: Rename free_mem to available_mem
> lmb: Remove lmb_add_region()
> lmb: Remove lmb_alloc_addr_flags()
> lmb: Remove lmb_alloc_base_flags()
> lmb: Rename _lmb_alloc_addr() to lmb_alloc_addr_flags()
>
> arch/powerpc/cpu/mpc85xx/mp.c | 2 +-
> arch/powerpc/lib/misc.c | 2 +-
> boot/bootm.c | 3 +-
> boot/image-board.c | 20 +++--
> boot/image-fdt.c | 15 ++--
> cmd/booti.c | 2 +-
> cmd/bootz.c | 2 +-
> cmd/load.c | 2 +-
> fs/fs.c | 2 +-
> include/lmb.h | 58 ++++++---------
> lib/efi_loader/efi_memory.c | 6 +-
> lib/lmb.c | 136 +++++++++++-----------------------
> test/cmd/bdinfo.c | 4 +-
> test/lib/lmb.c | 92 +++++++++++------------
> 14 files changed, 145 insertions(+), 201 deletions(-)
>
> --
For all patches in the series:
Tested-by: Sam Protsenko <semen.protsenko at linaro.org>
Tested on the E850-96 board. Didn't notice any changes. 'bdinfo'
output is good, Debian is booting just fine, as before this series.
The U-Boot output is good too (nothing changed). No regressions found.
> 2.45.2
>
More information about the U-Boot
mailing list