]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
lmb: Fix lmb_add_region_flags() return codes and testing
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Wed, 23 Oct 2024 15:22:00 +0000 (18:22 +0300)
committerTom Rini <trini@konsulko.com>
Tue, 29 Oct 2024 22:17:47 +0000 (16:17 -0600)
The function description says this should return 0 or -1 on failures.
When regions coalesce though this returns the number of coalescedregions
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@linaro.org>
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
boot/image-fdt.c
lib/lmb.c
test/lib/lmb.c

index 9a1fa8840d7bc82df7d1185012dae664b03fe52d..3d5b6f9e2dc72e5ac73a188401eb207e791785e7 100644 (file)
@@ -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);
index bf261db999eed9f36f7987e8dae6e7ade831a5fc..24d1ebe586b34754522d6a1135d584c0a92adb1c 100644 (file)
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -451,7 +451,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))
@@ -488,7 +488,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))
@@ -584,8 +584,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);
@@ -652,7 +652,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)) {
index b2c54fb4bcb8f0d0e8c356420bfd1d7f79ea40de..c917115b7b663dda9d5beb99a0457aa7f6a62b95 100644 (file)
@@ -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);