Hi Sughosh,

On Sun, 28 Jul 2024 at 12:07, Sughosh Ganu <sughosh.g...@linaro.org> wrote:
>
> On Thu, 25 Jul 2024 at 18:24, Sughosh Ganu <sughosh.g...@linaro.org> wrote:
> >
> > On Thu, 25 Jul 2024 at 02:24, Tom Rini <tr...@konsulko.com> wrote:
> > >
> > > On Wed, Jul 24, 2024 at 11:31:48AM +0530, Sughosh Ganu wrote:
> > >
> > > > From: Simon Glass <s...@chromium.org>
> > > >
> > > > Use this new data structure in the utility function.
> > > >
> > > > Signed-off-by: Simon Glass <s...@chromium.org>
> > > > Signed-off-by: Sughosh Ganu <sughosh.g...@linaro.org>
> > > > ---
> > > >  lib/strto.c | 35 +++++++++++++++++++----------------
> > > >  1 file changed, 19 insertions(+), 16 deletions(-)
> > >
> > > This is rather big growth when we didn't already have realloc:
> > > 05: lib: Convert str_to_list() to use alist
> > >    aarch64: (for 1/1 boards) all +1765.0 rodata +37.0 text +1728.0
> > >             xilinx_versal_mini_emmc0: all +1765 rodata +37 text +1728
> > >                u-boot: add: 7/0, grow: 1/0 bytes: 1728/0 (1728)
> > >                  function                                   old     new   
> > > delta
> > >                  realloc                                      -    1120   
> > > +1120
> > >                  alist_ensure_ptr                             -     140   
> > >  +140
> > >                  alist_expand_to                              -     136   
> > >  +136
> > >                  alist_init                                   -     108   
> > >  +108
> > >                  alist_uninit_move_ptr                        -      76   
> > >   +76
> > >                  alist_add_ptr                                -      72   
> > >   +72
> > >                  alist_uninit                                 -      48   
> > >   +48
> > >                  str_to_list                                204     232   
> > >   +28
> > >
> >
> > I am working on an implementation of lmb maps using lists. The list
> > nodes are then allocated with calloc, which I believe is included in
> > most of the board images. We can then compare the size impact with the
> > two implementations (alist vs list). Thanks.
>
> I have worked on implementing the LMB maps using simple lists, and we
> do get a good size benefit with the list based implementation. I have
> used the script that was shared by Tom some time back to get the size
> impact [1]. The readings are with 1) alists with realloc 2) alist with
> malloc and 3) using linked list. These are on a RPI4 build, which has
> LMB enabled. I have checked the impact on a xilinx_versal_mini config
> as well, which does not have LMB enabled, and the size impact result
> is best with lists. The list based changes can be checked on my github
> [2].

Thanks for doing that. It is quite hard to read with the LTO enabled.
You can try with the -L flag and should get a cleaner result. Also see
my comment about how you are using alist directly instead of going
through the API...that might affect things.

Anyway (once you are using the API), my assumption from my previous
refactor attempt was that lmb would be easier to deal with with simple
arrays, which I why I wrote alist. Is that true, or not?

>
> -sughosh
>
> [1] - https://gist.github.com/sughoshg/d4f9bda8d8a33f715dab892738d192ba
> [2] - https://github.com/sughoshg/u-boot/tree/lmb_only_linked_lists_v3

Regards,
Simon

Reply via email to