[PATCH] imx: hab: fix size of IVT+CSF blob tacked on to u-boot.itb

Fabio Estevam festevam at gmail.com
Thu Oct 24 16:15:39 CEST 2024


Adding Simon.

On Thu, Oct 24, 2024 at 11:14 AM Marek Vasut <marex at denx.de> wrote:
>
> On 10/24/24 2:27 PM, Rasmus Villemoes wrote:
> > Loading flash.bin using uuu fails when flash.bin does not have the
> > right size.
> >
> > When flash.bin is loaded from some storage medium (sd card/emmc), SPL
> > just loads some random garbage bytes from beyond what has been
> > populated when flash.bin was written, but when loaded via uuu, SPL
> > hangs waiting for the host to send the expected number of bytes. Which
> > is (size of FIT image aligned to 0x1000)+CONFIG_CSF_SIZE. The
> > alignment to 0x1000 is already done and is necessary in all cases
> > because that's the exact expected location of the 32 byte IVT
> > header. But the IVT+CSF blob tacked onto the end must be a total of
> > CONFIG_CSF_SIZE.
> >
> > This is exactly the same fix as 89f19f45d650, except that this time
> > around I don't know how to cleanly get CONFIG_CSF_SIZE.
> >
> > Fixes: bc6beae7c55f (binman: Add nxp_imx8mcst etype for i.MX8M flash.bin signing)
> > Signed-off-by: Rasmus Villemoes <ravi at prevas.dk>
> > ---
> > Heiko, can you check if this works for you?
> >
> > And if somebody wants to pick this up and knows how to get at CONFIG_
> > values, feel free to fix up and take authorship. But perhaps it's not
> > really configurable at all; imx8mimage.c has the value 0x2000
> > hard-coded, so I don't think anything good could ever come from
> > modifying CONFIG_CSF_SIZE. If so, the right fix is probably just to
> > make that knob non-settable.
> >
> >   tools/binman/etype/nxp_imx8mcst.py | 2 ++
> >   1 file changed, 2 insertions(+)
> >
> > diff --git a/tools/binman/etype/nxp_imx8mcst.py b/tools/binman/etype/nxp_imx8mcst.py
> > index 8221517b0c4..9a1974cc522 100644
> > --- a/tools/binman/etype/nxp_imx8mcst.py
> > +++ b/tools/binman/etype/nxp_imx8mcst.py
> > @@ -137,6 +137,8 @@ class Entry_nxp_imx8mcst(Entry_mkimage):
> >           args = ['-i', cfg_fname, '-o', output_fname]
> >           if self.cst.run_cmd(*args) is not None:
> >               outdata = tools.read_file(output_fname)
> > +            # fixme: 0x2000 should be CONFIG_CSF_SIZE
> > +            outdata += tools.get_bytes(0, 0x2000 - 0x20 - len(outdata))
> >               return data + outdata
> >           else:
> >               # Bintool is missing; just use the input data as the output
>
> I have to admit, I never really figured out this binman stuff, but
> shouldn't the fix be also in tools/binman/etype/nxp_imx8mimage.py ? And
> ... shouldn't it somehow use SetImagePos() ?


More information about the U-Boot mailing list