[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAPnjgZ2y=EONroCbCA7AqVaaax1Sdujy1A3NwFugwxiug490tA@mail.gmail.com>
Date: Thu, 30 Nov 2023 13:32:17 -0700
From: Simon Glass <sjg@...omium.org>
To: Masahiro Yamada <masahiroy@...nel.org>
Cc: linux-arm-kernel@...ts.infradead.org,
Tom Rini <trini@...sulko.com>,
lkml <linux-kernel@...r.kernel.org>,
U-Boot Mailing List <u-boot@...ts.denx.de>,
Catalin Marinas <catalin.marinas@....com>,
Nathan Chancellor <nathan@...nel.org>,
Nick Terrell <terrelln@...com>,
Nicolas Schier <nicolas@...sle.eu>,
Will Deacon <will@...nel.org>, linux-kbuild@...r.kernel.org
Subject: Re: [PATCH v7 2/2] arm64: boot: Support Flat Image Tree
Hi Masahiro,
On Thu, 30 Nov 2023 at 08:39, Masahiro Yamada <masahiroy@...nel.org> wrote:
>
> On Thu, Nov 30, 2023 at 2:22 AM Simon Glass <sjg@...omium.org> wrote:
> >
> > Add a script which produces a Flat Image Tree (FIT), a single file
> > containing the built kernel and associated devicetree files.
> > Compression defaults to gzip which gives a good balance of size and
> > performance.
> >
> > The files compress from about 86MB to 24MB using this approach.
> >
> > The FIT can be used by bootloaders which support it, such as U-Boot
> > and Linuxboot. It permits automatic selection of the correct
> > devicetree, matching the compatible string of the running board with
> > the closest compatible string in the FIT. There is no need for
> > filenames or other workarounds.
> >
> > Add a 'make image.fit' build target for arm64, as well.
> >
> > The FIT can be examined using 'dumpimage -l'.
> >
> > This features requires pylibfdt (use 'pip install libfdt'). It also
> > requires compression utilities for the algorithm being used. Supported
> > compression options are the same as the Image.xxx files. For now there
> > is no way to change the compression other than by editing the rule for
> > $(obj)/image.fit
> >
> > While FIT supports a ramdisk / initrd, no attempt is made to support
> > this here, since it must be built separately from the Linux build.
> >
> > Signed-off-by: Simon Glass <sjg@...omium.org>
> > ---
> >
> > Changes in v7:
> > - Add Image as a dependency of image.fit
> > - Drop kbuild tag
> > - Add dependency on dtbs
> > - Drop unnecessary path separator for dtbs
> > - Rebase to -next
> >
> > Changes in v5:
> > - Drop patch previously applied
> > - Correct compression rule which was broken in v4
> >
> > Changes in v4:
> > - Use single quotes for UIMAGE_NAME
> >
> > Changes in v3:
> > - Drop temporary file image.itk
> > - Drop patch 'Use double quotes for image name'
> > - Drop double quotes in use of UIMAGE_NAME
> > - Drop unnecessary CONFIG_EFI_ZBOOT condition for help
> > - Avoid hard-coding "arm64" for the DT architecture
> >
> > Changes in v2:
> > - Drop patch previously applied
> > - Add .gitignore file
> > - Move fit rule to Makefile.lib using an intermediate file
> > - Drop dependency on CONFIG_EFI_ZBOOT
> > - Pick up .dtb files separately from the kernel
> > - Correct pylint too-many-args warning for write_kernel()
> > - Include the kernel image in the file count
> > - Add a pointer to the FIT spec and mention of its wide industry usage
> > - Mention the kernel version in the FIT description
> >
> > MAINTAINERS | 7 +
> > arch/arm64/Makefile | 9 +-
> > arch/arm64/boot/.gitignore | 1 +
> > arch/arm64/boot/Makefile | 6 +-
> > scripts/Makefile.lib | 13 ++
> > scripts/make_fit.py | 289 +++++++++++++++++++++++++++++++++++++
> > 6 files changed, 322 insertions(+), 3 deletions(-)
> > create mode 100755 scripts/make_fit.py
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index 14587be87a33..d609f0e8deb3 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -1585,6 +1585,13 @@ F: Documentation/process/maintainer-soc*.rst
> > F: arch/arm/boot/dts/Makefile
> > F: arch/arm64/boot/dts/Makefile
> >
> > +ARM64 FIT SUPPORT
> > +M: Simon Glass <sjg@...omium.org>
> > +L: linux-arm-kernel@...ts.infradead.org (moderated for non-subscribers)
> > +S: Maintained
> > +F: arch/arm64/boot/Makefile
> > +F: scripts/make_fit.py
> > +
> > ARM ARCHITECTED TIMER DRIVER
> > M: Mark Rutland <mark.rutland@....com>
> > M: Marc Zyngier <maz@...nel.org>
> > diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
> > index 1bd4fae6e806..18e092de7cdb 100644
> > --- a/arch/arm64/Makefile
> > +++ b/arch/arm64/Makefile
> > @@ -36,6 +36,8 @@ ifeq ($(CONFIG_BROKEN_GAS_INST),y)
> > $(warning Detected assembler with broken .inst; disassembly will be unreliable)
> > endif
> >
> > +KBUILD_DTBS := dtbs
>
>
> Please remove this, and hard-code
>
> image.fit: dtbs
OK
>
>
>
> >
> > $(obj)/Image: vmlinux FORCE
> > $(call if_changed,objcopy)
> > @@ -39,6 +40,9 @@ $(obj)/Image.lzo: $(obj)/Image FORCE
> > $(obj)/Image.zst: $(obj)/Image FORCE
> > $(call if_changed,zstd)
> >
> > +$(obj)/image.fit: $(obj)/Image FORCE
> > + $(call cmd,fit,gzip)
>
>
> The gzip parameter is not used.
> Please do
>
> $(call cmd,fit)
I do want to be able to control the compression algo. I added a
FIT_COMPRESS for that, so that this arg is used.
>
> In the python script, functions are separated with two blank lines,
> but there is only one blank line between parse_args() and setup_fit().
>
>
> I do not mind either way because it does not contain any class,
> but please keep consistency.
OK
Regards,
Simon
Powered by blists - more mailing lists