[U-Boot] [PATCH] spl: unbreak CONFIG_SPL_MULTI_DTB_FIT after fixing CONFIG_OF_EMBED

Commit 9bd76b80 "spl: make CONFIG_OF_EMBED pass dts through fdtgrep" moved the fdtgrep code from scripts/Makefile.spl to dts/Makefile so that the dtb is stripped in embedded mode, too.
This broke CONFIG_SPL_MULTI_DTB_FIT where fdtgrep is still called from scripts/Makefile.spl to strip all dtbs in CONFIG_SPL_OF_LIST. To fix that, cmd_fdtgrep is brought back into scripts/Makefile.spl at the downside of having it duplicated in two makefiles. --- scripts/Makefile.spl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 64390e5785..72e74f14c3 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -239,6 +239,22 @@ $(obj)/$(SPL_BIN)-pad.bin: $(obj)/$(SPL_BIN) @bss_size_str=$(shell $(NM) $< | awk 'BEGIN {size = 0} /__bss_size/ {size = $$1} END {print "ibase=16; " toupper(size)}' | bc); \ dd if=/dev/zero of=$@ bs=1 count=$${bss_size_str} 2>/dev/null;
+# Pass the original device tree file through fdtgrep twice. The first pass +# removes any unwanted nodes (i.e. those which don't have the +# 'u-boot,dm-pre-reloc' property and thus are not needed by SPL. The second +# pass removes various unused properties from the remaining nodes. +# The output is typically a much smaller device tree file. +ifeq ($(CONFIG_TPL_BUILD),y) +fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-tpl +else +fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-spl +endif +quiet_cmd_fdtgrep = FDTGREP $@ + cmd_fdtgrep = $(objtree)/tools/fdtgrep $(fdtgrep_props) -RT $< \ + -n /chosen -n /config -O dtb | \ + $(objtree)/tools/fdtgrep -r -O dtb - -o $@ \ + $(addprefix -P ,$(subst $",,$(CONFIG_OF_SPL_REMOVE_PROPS))) + $(obj)/$(SPL_BIN).dtb: dts/dt-spl.dtb FORCE $(call if_changed,copy)

On Wednesday 10 January 2018 12:32 PM, Goldschmidt Simon wrote:
Commit 9bd76b80 "spl: make CONFIG_OF_EMBED pass dts through fdtgrep" moved the fdtgrep code from scripts/Makefile.spl to dts/Makefile so that the dtb is stripped in embedded mode, too.
This broke CONFIG_SPL_MULTI_DTB_FIT where fdtgrep is still called from scripts/Makefile.spl to strip all dtbs in CONFIG_SPL_OF_LIST. To fix that, cmd_fdtgrep is brought back into scripts/Makefile.spl at the downside of having it duplicated in two makefiles.
Missing Signed-off-by? Also a Reported-by credits would be nice :)
scripts/Makefile.spl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 64390e5785..72e74f14c3 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -239,6 +239,22 @@ $(obj)/$(SPL_BIN)-pad.bin: $(obj)/$(SPL_BIN) @bss_size_str=$(shell $(NM) $< | awk 'BEGIN {size = 0} /__bss_size/ {size = $$1} END {print "ibase=16; " toupper(size)}' | bc); \ dd if=/dev/zero of=$@ bs=1 count=$${bss_size_str} 2>/dev/null;
+# Pass the original device tree file through fdtgrep twice. The first pass +# removes any unwanted nodes (i.e. those which don't have the +# 'u-boot,dm-pre-reloc' property and thus are not needed by SPL. The second +# pass removes various unused properties from the remaining nodes. +# The output is typically a much smaller device tree file. +ifeq ($(CONFIG_TPL_BUILD),y) +fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-tpl +else +fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-spl +endif +quiet_cmd_fdtgrep = FDTGREP $@
cmd_fdtgrep = $(objtree)/tools/fdtgrep $(fdtgrep_props) -RT $< \
-n /chosen -n /config -O dtb | \
- $(objtree)/tools/fdtgrep -r -O dtb - -o $@ \
$(addprefix -P ,$(subst $\",,$(CONFIG_OF_SPL_REMOVE_PROPS)))
hmm..we are duplicating code here. Why can't dtb build for CONFIG_OF_EMBED be moved to scripts/Makefile.spl?
Thanks and regards, Lokesh

With commit 9bd76b807636 ("spl: make CONFIG_OF_EMBED pass dts through fdtgrep"), CONFIG_SPL_MULTI_DTB_FIT has been broken because cmd_fdtgrep was now unknown in scripts/Makefile.spl after moving it to dts/Makefile. This bug has been introduced with v2018.01.
This patch moves cmd_fdtgrep from dts/Makefile to scripts/Makefile.lib and includes scripts/Makefile.lib in scripts/Makefile.spl.
Fixes: 9bd76b807636 ("spl: make CONFIG_OF_EMBED pass dts through fdtgrep") Reported-by: Lokesh Vutla lokeshvutla@ti.com Signed-off-by: Simon Goldschmidt sgoldschmidt@de.pepperl-fuchs.com --- Changes in v2: - move definition of cmd_fdtgrep to scripts/Makefile.lib instead of duplicating it
dts/Makefile | 16 ---------------- scripts/Makefile.lib | 18 ++++++++++++++++++ scripts/Makefile.spl | 2 ++ 3 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/dts/Makefile b/dts/Makefile index c9b2a89441..779c9ec5c3 100644 --- a/dts/Makefile +++ b/dts/Makefile @@ -22,22 +22,6 @@ DTB := $(ARCH_PATH)/$(DEVICE_TREE).dtb dtb_depends += $(DTB:.dtb=.dts) endif
-# Pass the original device tree file through fdtgrep twice. The first pass -# removes any unwanted nodes (i.e. those which don't have the -# 'u-boot,dm-pre-reloc' property and thus are not needed by SPL. The second -# pass removes various unused properties from the remaining nodes. -# The output is typically a much smaller device tree file. -ifeq ($(CONFIG_TPL_BUILD),y) -fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-tpl -else -fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-spl -endif -quiet_cmd_fdtgrep = FDTGREP $@ - cmd_fdtgrep = $(objtree)/tools/fdtgrep $(fdtgrep_props) -RT $< \ - -n /chosen -n /config -O dtb | \ - $(objtree)/tools/fdtgrep -r -O dtb - -o $@ \ - $(addprefix -P ,$(subst $",,$(CONFIG_OF_SPL_REMOVE_PROPS))) - $(obj)/dt-spl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE $(call if_changed,fdtgrep)
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 8f19b2db56..8f21653136 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -522,3 +522,21 @@ MKIMAGEOUTPUT ?= /dev/null quiet_cmd_mkimage = MKIMAGE $@ cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \ $(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT)) + +# fdtgrep +# --------------------------------------------------------------------------- +# Pass the original device tree file through fdtgrep twice. The first pass +# removes any unwanted nodes (i.e. those which don't have the +# 'u-boot,dm-pre-reloc' property and thus are not needed by SPL. The second +# pass removes various unused properties from the remaining nodes. +# The output is typically a much smaller device tree file. +ifeq ($(CONFIG_TPL_BUILD),y) +fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-tpl +else +fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-spl +endif +quiet_cmd_fdtgrep = FDTGREP $@ + cmd_fdtgrep = $(objtree)/tools/fdtgrep $(fdtgrep_props) -RT $< \ + -n /chosen -n /config -O dtb | \ + $(objtree)/tools/fdtgrep -r -O dtb - -o $@ \ + $(addprefix -P ,$(subst $",,$(CONFIG_OF_SPL_REMOVE_PROPS))) diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 64390e5785..0af7cfe50c 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -50,6 +50,8 @@ endif include $(srctree)/config.mk include $(srctree)/arch/$(ARCH)/Makefile
+include scripts/Makefile.lib + # Enable garbage collection of un-used sections for SPL KBUILD_CFLAGS += -ffunction-sections -fdata-sections LDFLAGS_FINAL += --gc-sections

On Tuesday 13 February 2018 12:26 PM, Simon Goldschmidt wrote:
With commit 9bd76b807636 ("spl: make CONFIG_OF_EMBED pass dts through fdtgrep"), CONFIG_SPL_MULTI_DTB_FIT has been broken because cmd_fdtgrep was now unknown in scripts/Makefile.spl after moving it to dts/Makefile. This bug has been introduced with v2018.01.
This patch moves cmd_fdtgrep from dts/Makefile to scripts/Makefile.lib and includes scripts/Makefile.lib in scripts/Makefile.spl.
Fixes: 9bd76b807636 ("spl: make CONFIG_OF_EMBED pass dts through fdtgrep") Reported-by: Lokesh Vutla lokeshvutla@ti.com Signed-off-by: Simon Goldschmidt sgoldschmidt@de.pepperl-fuchs.com
Changes in v2:
- move definition of cmd_fdtgrep to scripts/Makefile.lib instead of duplicating it
dts/Makefile | 16 ---------------- scripts/Makefile.lib | 18 ++++++++++++++++++ scripts/Makefile.spl | 2 ++ 3 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/dts/Makefile b/dts/Makefile index c9b2a89441..779c9ec5c3 100644 --- a/dts/Makefile +++ b/dts/Makefile @@ -22,22 +22,6 @@ DTB := $(ARCH_PATH)/$(DEVICE_TREE).dtb dtb_depends += $(DTB:.dtb=.dts) endif
-# Pass the original device tree file through fdtgrep twice. The first pass -# removes any unwanted nodes (i.e. those which don't have the -# 'u-boot,dm-pre-reloc' property and thus are not needed by SPL. The second -# pass removes various unused properties from the remaining nodes. -# The output is typically a much smaller device tree file. -ifeq ($(CONFIG_TPL_BUILD),y) -fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-tpl -else -fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-spl -endif -quiet_cmd_fdtgrep = FDTGREP $@
cmd_fdtgrep = $(objtree)/tools/fdtgrep $(fdtgrep_props) -RT $< \
-n /chosen -n /config -O dtb | \
- $(objtree)/tools/fdtgrep -r -O dtb - -o $@ \
$(addprefix -P ,$(subst $\",,$(CONFIG_OF_SPL_REMOVE_PROPS)))
$(obj)/dt-spl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE $(call if_changed,fdtgrep)
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 8f19b2db56..8f21653136 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -522,3 +522,21 @@ MKIMAGEOUTPUT ?= /dev/null quiet_cmd_mkimage = MKIMAGE $@ cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \ $(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT))
+# fdtgrep +# --------------------------------------------------------------------------- +# Pass the original device tree file through fdtgrep twice. The first pass +# removes any unwanted nodes (i.e. those which don't have the +# 'u-boot,dm-pre-reloc' property and thus are not needed by SPL. The second +# pass removes various unused properties from the remaining nodes. +# The output is typically a much smaller device tree file. +ifeq ($(CONFIG_TPL_BUILD),y) +fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-tpl +else +fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-spl +endif +quiet_cmd_fdtgrep = FDTGREP $@
cmd_fdtgrep = $(objtree)/tools/fdtgrep $(fdtgrep_props) -RT $< \
-n /chosen -n /config -O dtb | \
- $(objtree)/tools/fdtgrep -r -O dtb - -o $@ \
$(addprefix -P ,$(subst $\",,$(CONFIG_OF_SPL_REMOVE_PROPS)))
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 64390e5785..0af7cfe50c 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -50,6 +50,8 @@ endif include $(srctree)/config.mk include $(srctree)/arch/$(ARCH)/Makefile
+include scripts/Makefile.lib
you might want to append $(srctree)/ to scripts. Rest looks good to me.
Thanks and regards, Lokesh
# Enable garbage collection of un-used sections for SPL KBUILD_CFLAGS += -ffunction-sections -fdata-sections LDFLAGS_FINAL += --gc-sections

With commit 9bd76b807636 ("spl: make CONFIG_OF_EMBED pass dts through fdtgrep"), CONFIG_SPL_MULTI_DTB_FIT has been broken because cmd_fdtgrep was now unknown in scripts/Makefile.spl after moving it to dts/Makefile. This bug has been introduced with v2018.01.
This patch moves cmd_fdtgrep from dts/Makefile to scripts/Makefile.lib and includes scripts/Makefile.lib in scripts/Makefile.spl.
Fixes: 9bd76b807636 ("spl: make CONFIG_OF_EMBED pass dts through fdtgrep") Reported-by: Lokesh Vutla lokeshvutla@ti.com Signed-off-by: Simon Goldschmidt sgoldschmidt@de.pepperl-fuchs.com --- Changes in v3: - append $(srctree)/ to scripts in Makefile.spl
Changes in v2: - move definition of cmd_fdtgrep to scripts/Makefile.lib instead of duplicating it
dts/Makefile | 16 ---------------- scripts/Makefile.lib | 18 ++++++++++++++++++ scripts/Makefile.spl | 2 ++ 3 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/dts/Makefile b/dts/Makefile index c9b2a89441..779c9ec5c3 100644 --- a/dts/Makefile +++ b/dts/Makefile @@ -22,22 +22,6 @@ DTB := $(ARCH_PATH)/$(DEVICE_TREE).dtb dtb_depends += $(DTB:.dtb=.dts) endif
-# Pass the original device tree file through fdtgrep twice. The first pass -# removes any unwanted nodes (i.e. those which don't have the -# 'u-boot,dm-pre-reloc' property and thus are not needed by SPL. The second -# pass removes various unused properties from the remaining nodes. -# The output is typically a much smaller device tree file. -ifeq ($(CONFIG_TPL_BUILD),y) -fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-tpl -else -fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-spl -endif -quiet_cmd_fdtgrep = FDTGREP $@ - cmd_fdtgrep = $(objtree)/tools/fdtgrep $(fdtgrep_props) -RT $< \ - -n /chosen -n /config -O dtb | \ - $(objtree)/tools/fdtgrep -r -O dtb - -o $@ \ - $(addprefix -P ,$(subst $",,$(CONFIG_OF_SPL_REMOVE_PROPS))) - $(obj)/dt-spl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE $(call if_changed,fdtgrep)
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 8f19b2db56..8f21653136 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -522,3 +522,21 @@ MKIMAGEOUTPUT ?= /dev/null quiet_cmd_mkimage = MKIMAGE $@ cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \ $(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT)) + +# fdtgrep +# --------------------------------------------------------------------------- +# Pass the original device tree file through fdtgrep twice. The first pass +# removes any unwanted nodes (i.e. those which don't have the +# 'u-boot,dm-pre-reloc' property and thus are not needed by SPL. The second +# pass removes various unused properties from the remaining nodes. +# The output is typically a much smaller device tree file. +ifeq ($(CONFIG_TPL_BUILD),y) +fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-tpl +else +fdtgrep_props := -b u-boot,dm-pre-reloc -b u-boot,dm-spl +endif +quiet_cmd_fdtgrep = FDTGREP $@ + cmd_fdtgrep = $(objtree)/tools/fdtgrep $(fdtgrep_props) -RT $< \ + -n /chosen -n /config -O dtb | \ + $(objtree)/tools/fdtgrep -r -O dtb - -o $@ \ + $(addprefix -P ,$(subst $",,$(CONFIG_OF_SPL_REMOVE_PROPS))) diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 64390e5785..0af7cfe50c 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -50,6 +50,8 @@ endif include $(srctree)/config.mk include $(srctree)/arch/$(ARCH)/Makefile
+include $(srctree)/scripts/Makefile.lib + # Enable garbage collection of un-used sections for SPL KBUILD_CFLAGS += -ffunction-sections -fdata-sections LDFLAGS_FINAL += --gc-sections

On Wednesday 14 February 2018 11:14 AM, Simon Goldschmidt wrote:
With commit 9bd76b807636 ("spl: make CONFIG_OF_EMBED pass dts through fdtgrep"), CONFIG_SPL_MULTI_DTB_FIT has been broken because cmd_fdtgrep was now unknown in scripts/Makefile.spl after moving it to dts/Makefile. This bug has been introduced with v2018.01.
This patch moves cmd_fdtgrep from dts/Makefile to scripts/Makefile.lib and includes scripts/Makefile.lib in scripts/Makefile.spl.
Fixes: 9bd76b807636 ("spl: make CONFIG_OF_EMBED pass dts through fdtgrep") Reported-by: Lokesh Vutla lokeshvutla@ti.com Signed-off-by: Simon Goldschmidt sgoldschmidt@de.pepperl-fuchs.com
Reviewed-by: Lokesh Vutla lokeshvutla@ti.com
Thanks and regards, Lokesh

On Wed, Feb 14, 2018 at 06:44:36AM +0100, Simon Goldschmidt wrote:
With commit 9bd76b807636 ("spl: make CONFIG_OF_EMBED pass dts through fdtgrep"), CONFIG_SPL_MULTI_DTB_FIT has been broken because cmd_fdtgrep was now unknown in scripts/Makefile.spl after moving it to dts/Makefile. This bug has been introduced with v2018.01.
This patch moves cmd_fdtgrep from dts/Makefile to scripts/Makefile.lib and includes scripts/Makefile.lib in scripts/Makefile.spl.
Fixes: 9bd76b807636 ("spl: make CONFIG_OF_EMBED pass dts through fdtgrep") Reported-by: Lokesh Vutla lokeshvutla@ti.com Signed-off-by: Simon Goldschmidt sgoldschmidt@de.pepperl-fuchs.com Reviewed-by: Lokesh Vutla lokeshvutla@ti.com
Applied to u-boot/master, thanks!
participants (4)
-
Goldschmidt Simon
-
Lokesh Vutla
-
Simon Goldschmidt
-
Tom Rini