[U-Boot] [PATCH v2] spl: add overall SPL size check

Simon Goldschmidt simon.k.r.goldschmidt at gmail.com
Tue Apr 23 05:47:25 UTC 2019


On Mon, Apr 22, 2019 at 11:10 PM Tom Rini <trini at konsulko.com> wrote:
>
> On Mon, Apr 22, 2019 at 10:27:21PM +0200, Simon Goldschmidt wrote:
> > This adds a size check for SPL that can dynamically check generated
> > SPL binaries (including devicetree) for a size limit that ensures
> > this image plus global data, heap and stack fit in initial SRAM.
> >
> > Since some of these sizes are not available to make, a new host tool
> > 'spl_size_limit' is added that dumps the resulting maximum size for
> > an SPL binary to stdout. This tool is used in toplevel Makefile to
> > implement the size check on SPL binaries.
> >
> > Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>
> > ---
> >
> > Changes in v2:
> > - added missing tools/spl_size_limit.c
> >
> >  Kconfig                |  8 --------
> >  Makefile               |  2 +-
> >  common/spl/Kconfig     | 36 ++++++++++++++++++++++++++++++++++++
> >  tools/Makefile         |  2 ++
> >  tools/spl_size_limit.c | 30 ++++++++++++++++++++++++++++++
>
> Ah, now I get it, and why you said you depend on Heinrich's series now,
> OK.  This isn't quite what I envisioned, but, maybe that's OK.  I was
> thinking we could drop the whole of the shell function, stat() the file
> and return 0/error.  But I guess on the whole we've got the shell
> function portable and not too fragile looking, so maybe it's not worth
> the extra work there.

I also thought in your direction first. But then I figured with the current way
of doing the size check, showing the current vs. maximum would be easier.
If the Makefile didn't know the size, the new tool would have to print it to
show the difference...

> I do have one problem I'd like to discuss, which is that to replicate
> this for a TPL size limit (which we totally have and need to deal with),
> we cp and sed spl_size_limit.c to tpl_size_limit.c.
>
> I don't however see a clever way to avoid that.  CONFIG_IS_ENABLED()
> would let us have the same #if test, but doing
> size_limit -= CONFIG_SPL_FOO CONFIG_TPL_FOO;
> is probably getting too clever.

Hmm, let me think about that.

Regards,
Simon


More information about the U-Boot mailing list