[PATCH 04/40] lib: Convert str_to_list() to use alist

Simon Glass sjg at chromium.org
Tue Jul 30 16:37:54 CEST 2024


Hi Sughosh,

On Mon, 29 Jul 2024 at 19:49, Sughosh Ganu <sughosh.ganu at linaro.org> wrote:
>
> On Mon, 29 Jul 2024 at 23:46, Tom Rini <trini at konsulko.com> wrote:
> >
> > On Mon, Jul 29, 2024 at 09:28:57AM -0600, Simon Glass wrote:
> > > Hi Sughosh,
> > >
> > > On Sun, 28 Jul 2024 at 12:07, Sughosh Ganu <sughosh.ganu at linaro.org> wrote:
> > > >
> > > > On Thu, 25 Jul 2024 at 18:24, Sughosh Ganu <sughosh.ganu at linaro.org> wrote:
> > > > >
> > > > > On Thu, 25 Jul 2024 at 02:24, Tom Rini <trini at konsulko.com> wrote:
> > > > > >
> > > > > > On Wed, Jul 24, 2024 at 11:31:48AM +0530, Sughosh Ganu wrote:
> > > > > >
> > > > > > > From: Simon Glass <sjg at chromium.org>
> > > > > > >
> > > > > > > Use this new data structure in the utility function.
> > > > > > >
> > > > > > > Signed-off-by: Simon Glass <sjg at chromium.org>
> > > > > > > Signed-off-by: Sughosh Ganu <sughosh.ganu at 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.
> >
> > I don't think LTO is enabled there?
>
> I ran the size checks with -L flag [1]. Do not see any difference.\

OK, thanks, as Tom says probably not actually enabled. It's just hard
to compare two branches!

I took a look at the lmb thing and decided to write a few patches to
show what I am getting at, particularly with the testing side. I will
send those as an RFC...

Regards,
Simon


>
> -sughosh
>
> [1] - https://gist.github.com/sughoshg/8a82946727904944601021a7ee732661


More information about the U-Boot mailing list