[PATCH] binman: Increase default fitImage data section resize step from 1k to 64k
Simon Glass
sjg at chromium.org
Wed Jul 13 17:28:09 CEST 2022
On Tue, 12 Jul 2022 at 11:41, Marek Vasut <marex at denx.de> wrote:
>
> Currently the fitImage data area is resized in 1 kiB steps. This works
> when bundling smaller images below some 1 MiB, but when bundling large
> images into the fitImage, this make binman spend extreme amount of time
> and CPU just spinning in pylibfdt FdtSw.check_space() until the size
> grows enough for the large image to fit into the data area. Increase
> the default step to 64 kiB, which is a reasonable compromise -- the
> U-Boot blobs are somewhere in the 64kiB...1MiB range, DT blob are just
> short of 64 kiB, and so are the other blobs. This reduces binman runtime
> with 32 MiB blob from 2.3 minutes to 5 seconds.
>
> The following can be used to trigger the problem if rand.bin is some 32 MiB.
> "
> / {
> itb {
> fit {
> images {
> test {
> compression = "none";
> description = "none";
> type = "flat_dt";
>
> blob {
> filename = "rand.bin";
> type = "blob-ext";
> };
> };
> };
> };
> };
>
> configurations {
> binman_configuration: config {
> loadables = "test";
> };
> };
> };
> "
>
> Signed-off-by: Marek Vasut <marex at denx.de>
> Cc: Alper Nebi Yasak <alpernebiyasak at gmail.com>
> Cc: Simon Glass <sjg at chromium.org>
> ---
> tools/binman/etype/fit.py | 1 +
> 1 file changed, 1 insertion(+)
Reviewed-by: Simon Glass <sjg at chromium.org>
I wonder if pylibfdt should become a bit smarter and increase by the
correct amount?
>
> diff --git a/tools/binman/etype/fit.py b/tools/binman/etype/fit.py
> index 12306623af6..ad43fce18ec 100644
> --- a/tools/binman/etype/fit.py
> +++ b/tools/binman/etype/fit.py
> @@ -658,6 +658,7 @@ class Entry_fit(Entry_section):
> # Build a new tree with all nodes and properties starting from the
> # entry node
> fsw = libfdt.FdtSw()
> + fsw.INC_SIZE = 65536
> fsw.finish_reservemap()
> to_remove = []
> loadables = []
> --
> 2.35.1
>
More information about the U-Boot
mailing list