[PATCH 1/2] lmb: Fix lmb_add_region_flags() return codes and testing
Caleb Connolly
caleb.connolly at linaro.org
Fri Oct 25 21:06:02 CEST 2024
Hi Ilias,
On 23/10/2024 17:22, Ilias Apalodimas wrote:
> The function description says this should return 0 or -1 on failures.
> When regions coalesce though this returns the number of coalescedregions
* coalesced regions
> which is confusing and requires special handling of the return code.
> On top of that no one is using the number of coalesced regions.
>
> So let's just return 0 on success and adjust our selftests accordingly
>
> Signed-off-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
Thanks for following up on this!
Reviewed-by: Caleb Connolly <caleb.connolly at linaro.org>
> ---
> boot/image-fdt.c | 2 +-
> lib/lmb.c | 10 +++++-----
> test/lib/lmb.c | 10 +++++-----
> 3 files changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/boot/image-fdt.c b/boot/image-fdt.c
> index 8eda521693dc..eac09059d955 100644
> --- a/boot/image-fdt.c
> +++ b/boot/image-fdt.c
> @@ -73,7 +73,7 @@ static void boot_fdt_reserve_region(u64 addr, u64 size, enum lmb_flags flags)
> long ret;
>
> ret = lmb_reserve_flags(addr, size, flags);
> - if (ret >= 0) {
> + if (!ret) {
> debug(" reserving fdt memory region: addr=%llx size=%llx flags=%x\n",
> (unsigned long long)addr,
> (unsigned long long)size, flags);
> diff --git a/lib/lmb.c b/lib/lmb.c
> index 7e90f178763b..8ce58fcb9224 100644
> --- a/lib/lmb.c
> +++ b/lib/lmb.c
> @@ -450,7 +450,7 @@ static long lmb_add_region_flags(struct alist *lmb_rgn_lst, phys_addr_t base,
> }
>
> if (coalesced)
> - return coalesced;
> + return 0;
>
> if (alist_full(lmb_rgn_lst) &&
> !alist_expand_by(lmb_rgn_lst, lmb_rgn_lst->alloc))
> @@ -487,7 +487,7 @@ long lmb_add(phys_addr_t base, phys_size_t size)
> struct alist *lmb_rgn_lst = &lmb.free_mem;
>
> ret = lmb_add_region(lmb_rgn_lst, base, size);
> - if (ret < 0)
> + if (ret)
> return ret;
>
> if (lmb_should_notify(LMB_NONE))
> @@ -583,8 +583,8 @@ long lmb_reserve_flags(phys_addr_t base, phys_size_t size, enum lmb_flags flags)
> struct alist *lmb_rgn_lst = &lmb.used_mem;
>
> ret = lmb_add_region_flags(lmb_rgn_lst, base, size, flags);
> - if (ret < 0)
> - return -1;
> + if (ret)
> + return ret;
>
> if (lmb_should_notify(flags))
> return lmb_map_update_notify(base, size, MAP_OP_RESERVE);
> @@ -651,7 +651,7 @@ static phys_addr_t _lmb_alloc_base(phys_size_t size, ulong align,
> if (rgn < 0) {
> /* This area isn't reserved, take it */
> if (lmb_add_region_flags(&lmb.used_mem, base,
> - size, flags) < 0)
> + size, flags))
> return 0;
>
> if (lmb_should_notify(flags)) {
> diff --git a/test/lib/lmb.c b/test/lib/lmb.c
> index b2c54fb4bcb8..c917115b7b66 100644
> --- a/test/lib/lmb.c
> +++ b/test/lib/lmb.c
> @@ -473,7 +473,7 @@ static int lib_test_lmb_overlapping_reserve(struct unit_test_state *uts)
>
> /* allocate overlapping region should return the coalesced count */
> ret = lmb_reserve(0x40011000, 0x10000);
> - ut_asserteq(ret, 1);
> + ut_asserteq(ret, 0);
> ASSERT_LMB(mem_lst, used_lst, ram, ram_size, 1, 0x40010000, 0x11000,
> 0, 0, 0, 0);
> /* allocate 3nd region */
> @@ -748,13 +748,13 @@ static int lib_test_lmb_flags(struct unit_test_state *uts)
>
> /* merge after */
> ret = lmb_reserve_flags(0x40020000, 0x10000, LMB_NOMAP);
> - ut_asserteq(ret, 1);
> + ut_asserteq(ret, 0);
> ASSERT_LMB(mem_lst, used_lst, ram, ram_size, 1, 0x40010000, 0x20000,
> 0, 0, 0, 0);
>
> /* merge before */
> ret = lmb_reserve_flags(0x40000000, 0x10000, LMB_NOMAP);
> - ut_asserteq(ret, 1);
> + ut_asserteq(ret, 0);
> ASSERT_LMB(mem_lst, used_lst, ram, ram_size, 1, 0x40000000, 0x30000,
> 0, 0, 0, 0);
>
> @@ -770,7 +770,7 @@ static int lib_test_lmb_flags(struct unit_test_state *uts)
>
> /* test that old API use LMB_NONE */
> ret = lmb_reserve(0x40040000, 0x10000);
> - ut_asserteq(ret, 1);
> + ut_asserteq(ret, 0);
> ASSERT_LMB(mem_lst, used_lst, ram, ram_size, 2, 0x40000000, 0x30000,
> 0x40030000, 0x20000, 0, 0);
>
> @@ -789,7 +789,7 @@ static int lib_test_lmb_flags(struct unit_test_state *uts)
>
> /* merge with 2 adjacent regions */
> ret = lmb_reserve_flags(0x40060000, 0x10000, LMB_NOMAP);
> - ut_asserteq(ret, 2);
> + ut_asserteq(ret, 0);
> ASSERT_LMB(mem_lst, used_lst, ram, ram_size, 3, 0x40000000, 0x30000,
> 0x40030000, 0x20000, 0x40050000, 0x30000);
>
--
// Caleb (they/them)
More information about the U-Boot
mailing list