binman warning/failure when blobs are missing

Tim Harvey tharvey at gateworks.com
Thu Aug 11 18:59:05 CEST 2022


On Thu, Aug 11, 2022 at 9:48 AM Tom Rini <trini at konsulko.com> wrote:
>
> On Thu, Aug 11, 2022 at 09:27:44AM -0700, Tim Harvey wrote:
>
> > Greetings,
> >
> > After a couple of hours troubleshooting a bad boot image today I
> > realized the issue was that I had some 0 byte files for the lpddr4
> > training blobs that are part of the imx8mp binman created image.
> >
> > Digging in I found that if a blob referenced in the binman node is
> > missing a warning will be output but the missing files will be
> > 'created' as 0 byte files such that the next time you build you will
> > get no warning (but will have a non-working image). Additionally the
> > error does not cause a non-zero exit code.
> >
> > I'm not that fluent in python these days, and don't have the time for
> > a while to try and fix this but I figured I would at least send this
> > email in case someone else does.
> >
> > Example:
> > # rm *lpddr4*.bin # make sure lpddr4*.bin files referenced in binman
> > nodes are missing
> > # make distclean imx8mp_venice_defconfig flash.bin && echo "build ok"
> > ...
> >   BINMAN  flash.bin
> > Image 'main-section' is missing external blobs and is non-functional: ddr-1d-ime
> > m-fw ddr-1d-dmem-fw ddr-2d-imem-fw ddr-2d-dmem-fw
> > Image 'main-section' has faked external blobs and is non-functional: lpddr4_pmu_
> > train_1d_imem_202006.bin lpddr4_pmu_train_1d_dmem_202006.bin lpddr4_pmu_train_2d
> > _imem_202006.bin lpddr4_pmu_train_2d_dmem_202006.bin
> >
> > Some images are invalid
> > ^^^ excellent warning
> > build ok
> > ^^^ not so great that there is a successful exit code
> > # make flash.bin && echo "build ok"
> > ...
> >   BINMAN  flash.bin
> > build ok
> > ^^^ absolutely horrible that 0 byte files were created and thus
> > everything looks good this time around!
> > # stat -c "%s %n" lpddr4*.bin
> > 0 lpddr4_pmu_train_1d_dmem_202006.bin
> > 0 lpddr4_pmu_train_1d_imem_202006.bin
> > 0 lpddr4_pmu_train_2d_dmem_202006.bin
> > 0 lpddr4_pmu_train_2d_imem_202006.bin
>
> So, this isn't the first time someone has had this problem. On the one
> hand, we need CI to pass, and not require fetching of arbitrary further
> images to assemble the binary. On the other hand, we don't want users
> spending a bunch of time because something didn't work and the normal
> way of conveying THIS WON'T WORK is a non-zero exit status. Can we
> easily make some flag for buildman or binman that we do set in CI but
> won't be set by users?
>

Tom,

Ok - that makes sense as far as the exit status goes. It would be MUCH
easier to catch an error like this if binman didn't create 0 byte
files for missing files so that you at least get the (ascii colored)
message indicating the image is wrong.

I do love the idea of a flag for CI also!

Best Regards,

Tim


More information about the U-Boot mailing list