[PATCH v3 2/6] lmb: replace the lmb_alloc() and lmb_alloc_base() API's
Ilias Apalodimas
ilias.apalodimas at linaro.org
Fri May 30 09:46:38 CEST 2025
> +static phys_addr_t lmb_alloc(phys_size_t size)
> +{
> + int ret;
> + phys_addr_t addr;
> +
> + /* All memory regions allocated with a 2MiB alignment */
> + ret = lmb_alloc_mem(LMB_MEM_ALLOC_ANY, SZ_2M, &addr, size, LMB_NONE);
> + if (ret)
> + return 0;
> +
> + return addr;
> +}
> +
I think we need a better naming for these. Right now we have
lmb_alloc() here and in tests, addr_alloc() in snapdragon code.
I'd say either export them as API if you think they would be useful,
or get rid of the wrappers.
[...]
> +static phys_addr_t lmb_alloc(phys_size_t size, ulong align)
> +{
> + int err;
> + phys_addr_t addr;
> +
> + err = lmb_alloc_mem(LMB_MEM_ALLOC_ANY, align, &addr, size, LMB_NONE);
> + if (err)
> + return 0;
This tends to blow up in random ways. See
commit 67be24906fe. TL;DR 0 is a valid address in some systems.
> +
> + return addr;
> +}
> +
> +static phys_addr_t lmb_alloc_base(phys_size_t size, ulong align,
> + phys_addr_t max_addr, u32 flags)
> +{
> + int err;
> + phys_addr_t addr;
> +
> + addr = max_addr;
> + err = lmb_alloc_mem(LMB_MEM_ALLOC_MAX, align, &addr, size, flags);
> + if (err)
> + return 0;
> +
> + return addr;
> +}
> +
> #define lmb_alloc_addr(addr, size, flags) lmb_reserve(addr, size, flags)
>
> static int test_multi_alloc(struct unit_test_state *uts, const phys_addr_t ram,
> --
> 2.34.1
>
Cheers
/Ilias
More information about the U-Boot
mailing list