[PATCH] Revert "tree: imx: remove old fit generator script"

Tim Harvey tharvey at gateworks.com
Fri Jan 7 18:27:05 CET 2022


On Thu, Jan 6, 2022 at 12:27 PM Tim Harvey <tharvey at gateworks.com> wrote:
>
> On Thu, Jan 6, 2022 at 11:18 AM ZHIZHIKIN Andrey
> <andrey.zhizhikin at leica-geosystems.com> wrote:
> >
> > Hello Tom,
> >
> > > -----Original Message-----
> > > From: U-Boot <u-boot-bounces at lists.denx.de> On Behalf Of Tom Rini
> > > Sent: Thursday, January 6, 2022 7:52 PM
> > > To: u-boot at lists.denx.de
> > > Cc: Tim Harvey <tharvey at gateworks.com>
> > > Subject: [PATCH] Revert "tree: imx: remove old fit generator script"
> > >
> > > This reverts commit d9a6f0eed66a39206b13513ec914f14084c3bb73.
> > >
> > > For right now, it's too close to the release to merge the series that
> > > allows for binman to be used to generate the final images, and also not
> > > break CI, and then also merge all of the series that convert currently
> > > broken platforms to use binman instead.  So, bring back this script now
> > > and remove it again for real after the release.
> >
> > Please note that this might not work, as the FIT generator script would
> > generate ITS with '@' symbols which are not compatible with mkimage due
> > to CVE-2021-27138. This revert should be complemented with the fix to
> > remove those '@' symbols as well.
>
> Correct, the revert is not enough anymore:
>   MKIMAGE u-boot.itb
> u-boot.its:7.11-15.5: Warning (unit_address_vs_reg): /images/uboot at 1:
> node has a unit name, but no reg property
> u-boot.its:16.9-21.5: Warning (unit_address_vs_reg): /images/fdt at 1:
> node has a unit name, but no reg property
> u-boot.its:22.9-27.5: Warning (unit_address_vs_reg): /images/fdt at 2:
> node has a unit name, but no reg property
> u-boot.its:28.9-33.5: Warning (unit_address_vs_reg): /images/fdt at 3:
> node has a unit name, but no reg property
> u-boot.its:34.9-39.5: Warning (unit_address_vs_reg): /images/fdt at 4:
> node has a unit name, but no reg property
> u-boot.its:40.9-45.5: Warning (unit_address_vs_reg): /images/fdt at 5:
> node has a unit name, but no reg property
> u-boot.its:46.9-55.5: Warning (unit_address_vs_reg): /images/atf at 1:
> node has a unit name, but no reg property
> u-boot.its:60.12-65.5: Warning (unit_address_vs_reg):
> /configurations/config at 1: node has a unit name, but no reg property
> u-boot.its:66.12-71.5: Warning (unit_address_vs_reg):
> /configurations/config at 2: node has a unit name, but no reg property
> u-boot.its:72.12-77.5: Warning (unit_address_vs_reg):
> /configurations/config at 3: node has a unit name, but no reg property
> u-boot.its:78.12-83.5: Warning (unit_address_vs_reg):
> /configurations/config at 4: node has a unit name, but no reg property
> u-boot.its:84.12-89.5: Warning (unit_address_vs_reg):
> /configurations/config at 5: node has a unit name, but no reg property
> ./tools/mkimage: verify_header failed for FIT Image support with exit code 1
> Makefile:1433: recipe for target 'u-boot.itb' failed
> make: *** [u-boot.itb] Error 1
> make: *** Deleting file 'u-boot.itb'
> make: *** Waiting for unfinished jobs....
>
> I don't know what had changed to cause this or when (again, I stopped
> worrying about it because I thought we were moving to binman for this
> release). There was a patch that resolved this from Oliver at
> https://lists.denx.de/pipermail/u-boot/2021-August/457997.html but I
> don't think that fully solves anything 'at this point' either.
>
> Even with that applied to current master I then end up with:
>   MKIMAGE flash.bin
> ./tools/mkimage: Can't open spl/u-boot-spl-ddr.bin: No such file or directory
> arch/arm/mach-imx/Makefile:167: recipe for target 'flash.bin' failed
> make[1]: *** [flash.bin] Error 1
> make[1]: *** Deleting file 'flash.bin'
> Makefile:1526: recipe for target 'flash.bin' failed
>
> At some point over the past couple of months that patch resolved the
> building issue when using the FIT generator but I also don't know what
> else has changed that now causes that to not work.
>
> As Tom pointed out in another thread these build failures did not get
> caught by CI apparently because CI does a 'make all' which did not
> include the FIT images (that was accomplished with the 'flash.bin'
> target prior to binman conversion).
>
> Is it too late to apply the CI fix and the pending binman conversions?
>
> I know that my series has been reviewed by Marcel [1] and as far as I
> know didn't get merged simply because of the CI issue. It still
> applies and produces a valid flash.bin image.
> I was also able to merge Peng's series [2] which converts
> imx8mq_evk/imx8mq_phanbell/pico-imx8mq to binman and was able to build
> flash.bin images for them
>
> I tried to merge Adam's series that moves imx8mm_beacon to binman [3]
> and imx8mn_beacon to binman [4] but they no longer apply due to
> defconfig/Kconfig changes
>
> That still leaves the following unbuildable with
> CONFIG_SPL_FIT_GENERATOR = "arch/arm/mach-imx/mkimage_fit_atf.sh":
> configs/cgtqmx8_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
> configs/imx8mm-icore-mx8mm-ctouch2_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
> configs/imx8mm-icore-mx8mm-edimm2.2_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
> configs/imx8mm_beacon_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
> configs/imx8mn_beacon_2g_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
> configs/imx8mn_beacon_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
> configs/imx8qm_rom7720_a1_4G_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
>
> Tim
> [1] https://patchwork.ozlabs.org/project/uboot/list/?series=265765
> [2] https://patchwork.ozlabs.org/project/uboot/list/?series=268380
> [3] https://patchwork.ozlabs.org/project/uboot/list/?series=261640
> [4] https://patchwork.ozlabs.org/project/uboot/list/?series=261822
>

Tom,

I'm not familiar with the U-boot CI tool. Is it a show-stopper that it
does not build for boards using binman for release? From what you
mentioned in another thread it was never building the flash.bin target
for the boards using the FIT generator anyway.

Best regards,

Tim

> >
> > >
> > > Suggested-by: Tim Harvey <tharvey at gateworks.com>
> > > Signed-off-by: Tom Rini <trini at konsulko.com>
> > > ---
> > >  Makefile                             |   3 +
> > >  arch/arm/mach-imx/mkimage_fit_atf.sh | 143 +++++++++++++++++++++++++++
> > >  2 files changed, 146 insertions(+)
> > >  create mode 100755 arch/arm/mach-imx/mkimage_fit_atf.sh
> > >
> > > diff --git a/Makefile b/Makefile
> > > index ae9bfab91acf..0c478645c3a7 100644
> > > --- a/Makefile
> > > +++ b/Makefile
> > > @@ -1343,6 +1343,9 @@ $(U_BOOT_ITS): $(subst ",,$(CONFIG_SPL_FIT_SOURCE))
> > >  else
> > >  ifneq ($(CONFIG_USE_SPL_FIT_GENERATOR),)
> > >  U_BOOT_ITS := u-boot.its
> > > +ifeq ($(CONFIG_SPL_FIT_GENERATOR),"arch/arm/mach-imx/mkimage_fit_atf.sh")
> > > +U_BOOT_ITS_DEPS += u-boot-nodtb.bin
> > > +endif
> > >  ifeq ($(CONFIG_SPL_FIT_GENERATOR),"arch/arm/mach-rockchip/make_fit_atf.py")
> > >  U_BOOT_ITS_DEPS += u-boot
> > >  endif
> > > diff --git a/arch/arm/mach-imx/mkimage_fit_atf.sh b/arch/arm/mach-
> > > imx/mkimage_fit_atf.sh
> > > new file mode 100755
> > > index 000000000000..2a17968794c1
> > > --- /dev/null
> > > +++ b/arch/arm/mach-imx/mkimage_fit_atf.sh
> > > @@ -0,0 +1,143 @@
> > > +#!/bin/sh
> > > +# SPDX-License-Identifier: GPL-2.0+
> > > +#
> > > +# script to generate FIT image source for i.MX8MQ boards with
> > > +# ARM Trusted Firmware and multiple device trees (given on the command line)
> > > +#
> > > +# usage: $0 <dt_name> [<dt_name> [<dt_name] ...]
> > > +
> > > +[ -z "$BL31" ] && BL31="bl31.bin"
> > > +[ -z "$TEE_LOAD_ADDR" ] && TEE_LOAD_ADDR="0xfe000000"
> > > +[ -z "$ATF_LOAD_ADDR" ] && ATF_LOAD_ADDR="0x00910000"
> > > +[ -z "$BL33_LOAD_ADDR" ] && BL33_LOAD_ADDR="0x40200000"
> > > +
> > > +if [ ! -f $BL31 ]; then
> > > +     echo "ERROR: BL31 file $BL31 NOT found" >&2
> > > +     exit 0
> > > +else
> > > +     echo "$BL31 size: " >&2
> > > +     stat -c %s $BL31 >&2
> > > +fi
> > > +
> > > +BL32="tee.bin"
> > > +
> > > +if [ ! -f $BL32 ]; then
> > > +     BL32=/dev/null
> > > +else
> > > +     echo "Building with TEE support, make sure your $BL31 is compiled with
> > > spd. If you do not want tee, please delete $BL31" >&2
> > > +     echo "$BL32 size: " >&2
> > > +     stat -c %s $BL32 >&2
> > > +fi
> > > +
> > > +BL33="u-boot-nodtb.bin"
> > > +
> > > +if [ ! -f $BL33 ]; then
> > > +     echo "ERROR: $BL33 file NOT found" >&2
> > > +     exit 0
> > > +else
> > > +     echo "u-boot-nodtb.bin size: " >&2
> > > +     stat -c %s u-boot-nodtb.bin >&2
> > > +fi
> > > +
> > > +for dtname in $*
> > > +do
> > > +     echo "$dtname size: " >&2
> > > +     stat -c %s $dtname >&2
> > > +done
> > > +
> > > +
> > > +cat << __HEADER_EOF
> > > +/dts-v1/;
> > > +
> > > +/ {
> > > +     description = "Configuration to load ATF before U-Boot";
> > > +
> > > +     images {
> > > +             uboot at 1 {
> >
> > This (and all other similar places) would be rejected by mkimage... :(
> >
> > > +                     description = "U-Boot (64-bit)";
> > > +                     os = "u-boot";
> > > +                     data = /incbin/("$BL33");
> > > +                     type = "standalone";
> > > +                     arch = "arm64";
> > > +                     compression = "none";
> > > +                     load = <$BL33_LOAD_ADDR>;
> > > +             };
> > > +__HEADER_EOF
> > > +
> > > +cnt=1
> > > +for dtname in $*
> > > +do
> > > +     cat << __FDT_IMAGE_EOF
> > > +             fdt@$cnt {
> > > +                     description = "$(basename $dtname .dtb)";
> > > +                     data = /incbin/("$dtname");
> > > +                     type = "flat_dt";
> > > +                     compression = "none";
> > > +             };
> > > +__FDT_IMAGE_EOF
> > > +cnt=$((cnt+1))
> > > +done
> > > +
> > > +cat << __HEADER_EOF
> > > +             atf at 1 {
> > > +                     description = "ARM Trusted Firmware";
> > > +                     os = "arm-trusted-firmware";
> > > +                     data = /incbin/("$BL31");
> > > +                     type = "firmware";
> > > +                     arch = "arm64";
> > > +                     compression = "none";
> > > +                     load = <$ATF_LOAD_ADDR>;
> > > +                     entry = <$ATF_LOAD_ADDR>;
> > > +             };
> > > +__HEADER_EOF
> > > +
> > > +if [ -f $BL32 ]; then
> > > +cat << __HEADER_EOF
> > > +             tee at 1 {
> > > +                     description = "TEE firmware";
> > > +                     data = /incbin/("$BL32");
> > > +                     type = "firmware";
> > > +                     arch = "arm64";
> > > +                     compression = "none";
> > > +                     load = <$TEE_LOAD_ADDR>;
> > > +                     entry = <$TEE_LOAD_ADDR>;
> > > +             };
> > > +__HEADER_EOF
> > > +fi
> > > +
> > > +cat << __CONF_HEADER_EOF
> > > +     };
> > > +     configurations {
> > > +             default = "config at 1";
> > > +
> > > +__CONF_HEADER_EOF
> > > +
> > > +cnt=1
> > > +for dtname in $*
> > > +do
> > > +if [ -f $BL32 ]; then
> > > +cat << __CONF_SECTION_EOF
> > > +             config@$cnt {
> > > +                     description = "$(basename $dtname .dtb)";
> > > +                     firmware = "uboot at 1";
> > > +                     loadables = "atf at 1", "tee at 1";
> > > +                     fdt = "fdt@$cnt";
> > > +             };
> > > +__CONF_SECTION_EOF
> > > +else
> > > +cat << __CONF_SECTION1_EOF
> > > +             config@$cnt {
> > > +                     description = "$(basename $dtname .dtb)";
> > > +                     firmware = "uboot at 1";
> > > +                     loadables = "atf at 1";
> > > +                     fdt = "fdt@$cnt";
> > > +             };
> > > +__CONF_SECTION1_EOF
> > > +fi
> > > +cnt=$((cnt+1))
> > > +done
> > > +
> > > +cat << __ITS_EOF
> > > +     };
> > > +};
> > > +__ITS_EOF
> > > --
> > > 2.25.1
> >
> >
> > -- andrey


More information about the U-Boot mailing list