[PATCH v1 0/8] Cleanup the LMB subsystem

Sam Protsenko semen.protsenko at linaro.org
Thu Dec 12 22:30:51 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(-)
>
> --

Hi Ilias,

This series doesn't apply as is on current master (tried MBOX file
from lore). I'll still try to review it by merging conflicts locally,
but please double check it on your side, and re-submit in case of
actual conflicts.

> 2.45.2
>


More information about the U-Boot mailing list