All of
 help / color / mirror / Atom feed
From: Jan Kiszka <>
To: Simon Glass <>,
	U-Boot Mailing List <>
Cc: "Su, Bao Cheng (RC-CN DF FA R&D)" <>
Subject: [PATCH v2] binman: Skip node generation for images read from files
Date: Mon, 17 Jan 2022 07:28:53 +0100	[thread overview]
Message-ID: <> (raw)

From: Jan Kiszka <>

We can and should run the node generator only when creating a new image.
When we read it back, there is no need to generate nodes - they already
exits, and binman does not dive that deep into the image - and there is
no way to provide the required fdt-list. So forward the mode from the
image to every Entry object it contains so that Entry_fit can simply
skip generator nodes when reading them from an fdtmap.

This unbreaks all read-backs of images that contain generator nodes in
their fdtmap.

Signed-off-by: Jan Kiszka <>

Changes in v2:
  - more verbose commit log

  tools/binman/         | 5 ++++-
  tools/binman/etype/     | 2 +-
  tools/binman/etype/ | 4 ++--
  tools/binman/         | 7 ++++---
  4 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/tools/binman/ b/tools/binman/
index bac90bbbcd..fdb9746fda 100644
--- a/tools/binman/
+++ b/tools/binman/
@@ -75,7 +75,7 @@ class Entry(object):
              available. This is mainly used for testing.
          external: True if this entry contains an external binary blob
-    def __init__(self, section, etype, node, name_prefix=''):
+    def __init__(self, section, etype, node, name_prefix='', generate=None):
          # Put this here to allow entry-docs and help to work without libfdt
          global state
          from binman import state
@@ -105,6 +105,9 @@ class Entry(object):
          self.external = False
          self.allow_missing = False
          self.allow_fake = False
+        if generate == None:
+            generate = section.generate if section else True
+        self.generate = generate
      def FindEntryClass(etype, expanded):
diff --git a/tools/binman/etype/ b/tools/binman/etype/
index b41187df80..4e4d2f9c22 100644
--- a/tools/binman/etype/
+++ b/tools/binman/etype/
@@ -193,7 +193,7 @@ class Entry_fit(Entry):
                      # the FIT (e.g. "/images/kernel/u-boot"), so don't call
                      # fsw.add_node() or _AddNode() for it.
-                elif'@'):
+                elif self.generate and'@'):
                      if self._fdts:
                          # Generate notes for each FDT
                          for seq, fdt_fname in enumerate(self._fdts):
diff --git a/tools/binman/etype/ b/tools/binman/etype/
index 7a55d03231..319156a09a 100644
--- a/tools/binman/etype/
+++ b/tools/binman/etype/
@@ -154,9 +154,9 @@ class Entry_section(Entry):
      available. This is set by the `SetAllowMissing()` method, if
      `--allow-missing` is passed to binman.
-    def __init__(self, section, etype, node, test=False):
+    def __init__(self, section, etype, node, test=False, generate=None):
          if not test:
-            super().__init__(section, etype, node)
+            super().__init__(section, etype, node, generate=generate)
          self._entries = OrderedDict()
          self._pad_byte = 0
          self._sort = False
diff --git a/tools/binman/ b/tools/binman/
index f0a7d65299..1ff97e687c 100644
--- a/tools/binman/
+++ b/tools/binman/
@@ -69,8 +69,9 @@ class Image(section.Entry_section):
              version which does not support all the entry types.
      def __init__(self, name, node, copy_to_orig=True, test=False,
-                 ignore_missing=False, use_expanded=False, missing_etype=False):
-        super().__init__(None, 'section', node, test=test)
+                 ignore_missing=False, use_expanded=False, missing_etype=False,
+                 generate=True):
+        super().__init__(None, 'section', node, test=test, generate=generate)
          self.copy_to_orig = copy_to_orig
 = 'main-section'
          self.image_name = name
@@ -130,7 +131,7 @@ class Image(section.Entry_section):
          # Return an Image with the associated nodes
          root = dtb.GetRoot()
          image = Image('image', root, copy_to_orig=False, ignore_missing=True,
-                      missing_etype=True)
+                      missing_etype=True, generate=False)
          image.image_node = fdt_util.GetString(root, 'image-node', 'image')
          image.fdtmap_dtb = dtb

             reply	other threads:[~2022-01-17  7:29 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-17  6:28 Jan Kiszka [this message]
2022-01-26 15:57 ` [PATCH v2] binman: Skip node generation for images read from files Simon Glass
2022-01-26 17:18   ` Jan Kiszka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.