On Fri, 30 May 2025 at 13:17, Ilias Apalodimas
<ilias.apalodi...@linaro.org> wrote:
>
> > +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.

I kept these functions as is to reduce the amount of change resulting
from introducing the API. Also, the newly introduced API has
parameters which are common across all the callers, which also was why
I kept a wrapper. This is especially true in the tests, where it would
be required to change the function names in a bunch of places without
much benefit.

>
> [...]
>
> > +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.

Yes, I see your point. I think the calling function will have to be
re-written such that the env variables get stored only when the API
returns successfully. Then at least the platform will not have an env
variable with some junk value.

-sughosh

>
> > +
> > +       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

Reply via email to