binman warning/failure when blobs are missing

Tom Rini trini at konsulko.com
Thu Aug 11 18:48:50 CEST 2022


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20220811/e78f813f/attachment.sig>


More information about the U-Boot mailing list