[1/2] dts: add property removal option CONFIG_OF_REMOVE_PROPS

Message ID 20200108213833.10869-1-agust@denx.de
State New
Headers show
Series
  • [1/2] dts: add property removal option CONFIG_OF_REMOVE_PROPS
Related show

Commit Message

Anatolij Gustschin Jan. 8, 2020, 9:38 p.m.
This can be used for device tree size reduction similar as
CONFIG_OF_SPL_REMOVE_PROPS option. For tbs2910 board this
shrinks the image size: all -2304.0 bss -16.0 text -2288.0

Signed-off-by: Anatolij Gustschin <agust at denx.de>
---
 dts/Kconfig          | 8 ++++++++
 scripts/Makefile.lib | 3 ++-
 2 files changed, 10 insertions(+), 1 deletion(-)

Comments

Tom Rini Jan. 8, 2020, 9:57 p.m. | #1
On Wed, Jan 08, 2020 at 10:38:32PM +0100, Anatolij Gustschin wrote:

> This can be used for device tree size reduction similar as
> CONFIG_OF_SPL_REMOVE_PROPS option. For tbs2910 board this
> shrinks the image size: all -2304.0 bss -16.0 text -2288.0
> 
> Signed-off-by: Anatolij Gustschin <agust at denx.de>

Reviewed-by: Tom Rini <trini at konsulko.com>
Tom Rini Jan. 10, 2020, 4:39 p.m. | #2
On Wed, Jan 08, 2020 at 10:38:32PM +0100, Anatolij Gustschin wrote:

> This can be used for device tree size reduction similar as
> CONFIG_OF_SPL_REMOVE_PROPS option. For tbs2910 board this
> shrinks the image size: all -2304.0 bss -16.0 text -2288.0
> 
> Signed-off-by: Anatolij Gustschin <agust at denx.de>
> ---
>  dts/Kconfig          | 8 ++++++++
>  scripts/Makefile.lib | 3 ++-
>  2 files changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/dts/Kconfig b/dts/Kconfig
> index 64c98dd723..49224bee93 100644
> --- a/dts/Kconfig
> +++ b/dts/Kconfig
> @@ -311,6 +311,14 @@ config OF_SPL_REMOVE_PROPS
>  	  can be discarded. This option defines the list of properties to
>  	  discard.
>  
> +config OF_REMOVE_PROPS
> +	string "List of device tree properties to drop"
> +	depends on OF_CONTROL
> +	default "interrupt-parent interrupts" if PINCTRL
> +	help
> +	  Some properties are not used by U-Boot and can be discarded.
> +	  This option defines the list of properties to discard.
> +
>  config SPL_OF_PLATDATA
>  	bool "Generate platform data for use in SPL"
>  	depends on SPL_OF_CONTROL
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 4ea898a421..3b124369ad 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -235,7 +235,8 @@ $(obj)/%.tab.h: $(src)/%.y FORCE
>  # ===========================================================================
>  
>  quiet_cmd_shipped = SHIPPED $@
> -cmd_shipped = cat $< > $@
> +cmd_shipped = cat $< | $(objtree)/tools/fdtgrep -r -O dtb - -o $@	\
> +		$(addprefix -P ,$(subst $\",,$(CONFIG_OF_REMOVE_PROPS)))
>  
>  $(obj)/%: $(src)/%_shipped
>  	$(call cmd,shipped)

On further thinking, this will make it harder in the case of passing the
DTB directly to the kernel.  We should guard this option by something
else first.
Masahiro Yamada Jan. 10, 2020, 5:01 p.m. | #3
On Sat, Jan 11, 2020 at 1:39 AM Tom Rini <trini at konsulko.com> wrote:
>
> On Wed, Jan 08, 2020 at 10:38:32PM +0100, Anatolij Gustschin wrote:
>
> > This can be used for device tree size reduction similar as
> > CONFIG_OF_SPL_REMOVE_PROPS option. For tbs2910 board this
> > shrinks the image size: all -2304.0 bss -16.0 text -2288.0
> >
> > Signed-off-by: Anatolij Gustschin <agust at denx.de>
> > ---
> >  dts/Kconfig          | 8 ++++++++
> >  scripts/Makefile.lib | 3 ++-
> >  2 files changed, 10 insertions(+), 1 deletion(-)
> >
> > diff --git a/dts/Kconfig b/dts/Kconfig
> > index 64c98dd723..49224bee93 100644
> > --- a/dts/Kconfig
> > +++ b/dts/Kconfig
> > @@ -311,6 +311,14 @@ config OF_SPL_REMOVE_PROPS
> >         can be discarded. This option defines the list of properties to
> >         discard.
> >
> > +config OF_REMOVE_PROPS
> > +     string "List of device tree properties to drop"
> > +     depends on OF_CONTROL
> > +     default "interrupt-parent interrupts" if PINCTRL
> > +     help
> > +       Some properties are not used by U-Boot and can be discarded.
> > +       This option defines the list of properties to discard.
> > +
> >  config SPL_OF_PLATDATA
> >       bool "Generate platform data for use in SPL"
> >       depends on SPL_OF_CONTROL
> > diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> > index 4ea898a421..3b124369ad 100644
> > --- a/scripts/Makefile.lib
> > +++ b/scripts/Makefile.lib
> > @@ -235,7 +235,8 @@ $(obj)/%.tab.h: $(src)/%.y FORCE
> >  # ===========================================================================
> >
> >  quiet_cmd_shipped = SHIPPED $@
> > -cmd_shipped = cat $< > $@
> > +cmd_shipped = cat $< | $(objtree)/tools/fdtgrep -r -O dtb - -o $@    \
> > +             $(addprefix -P ,$(subst $\",,$(CONFIG_OF_REMOVE_PROPS)))
> >
> >  $(obj)/%: $(src)/%_shipped
> >       $(call cmd,shipped)
>
> On further thinking, this will make it harder in the case of passing the
> DTB directly to the kernel.  We should guard this option by something
> else first.
>
> --
> Tom


More importantly, this patch breaks targets
that compile pylibfdt, for example, qemu-x86_defconfig.


$ make qemu-x86_defconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  YACC    scripts/kconfig/zconf.tab.c
  LEX     scripts/kconfig/zconf.lex.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#
masahiro at grover:~/ref/u-boot$ make
scripts/kconfig/conf  --syncconfig Kconfig
  CHK     include/config.h
  UPD     include/config.h
  CFG     u-boot.cfg
  GEN     include/autoconf.mk
  GEN     include/autoconf.mk.dep
  CHK     include/config/uboot.release
  UPD     include/config/uboot.release
  CHK     include/generated/version_autogenerated.h
  UPD     include/generated/version_autogenerated.h
  CHK     include/generated/timestamp_autogenerated.h
  UPD     include/generated/timestamp_autogenerated.h
  CC      lib/asm-offsets.s
  CHK     include/generated/generic-asm-offsets.h
  UPD     include/generated/generic-asm-offsets.h
  CC      arch/x86/lib/asm-offsets.s
  CHK     include/generated/asm-offsets.h
  UPD     include/generated/asm-offsets.h
  SHIPPED scripts/dtc/pylibfdt/libfdt.i
/bin/sh: 1: ./tools/fdtgrep: not found
make[3]: *** [scripts/Makefile.lib:242: scripts/dtc/pylibfdt/libfdt.i] Error 127
make[2]: *** [scripts/Makefile.build:432: scripts/dtc/pylibfdt] Error 2
make[1]: *** [scripts/Makefile.build:432: scripts/dtc] Error 2
make: *** [Makefile:551: scripts] Error 2


Please do not touch cmd_shipped.

If this feature is desired,
please implement it in dts/Makefile.
Masahiro Yamada Jan. 10, 2020, 7:13 p.m. | #4
Hi Tom,

On Sat, Jan 11, 2020 at 1:39 AM Tom Rini <trini at konsulko.com> wrote:

> >  quiet_cmd_shipped = SHIPPED $@
> > -cmd_shipped = cat $< > $@
> > +cmd_shipped = cat $< | $(objtree)/tools/fdtgrep -r -O dtb - -o $@    \
> > +             $(addprefix -P ,$(subst $\",,$(CONFIG_OF_REMOVE_PROPS)))
> >
> >  $(obj)/%: $(src)/%_shipped
> >       $(call cmd,shipped)
>
> On further thinking, this will make it harder in the case of passing the
> DTB directly to the kernel.  We should guard this option by something
> else first.

Please let me ask a question about this.
In my understanding, U-Boot DTB is a different instance
from the DTB passed to the kernel.
Was it changed, or is the change planned?



--
Best Regards
Masahiro Yamada
Tom Rini Jan. 10, 2020, 7:49 p.m. | #5
On Sat, Jan 11, 2020 at 04:13:02AM +0900, Masahiro Yamada wrote:
> Hi Tom,
> 
> On Sat, Jan 11, 2020 at 1:39 AM Tom Rini <trini at konsulko.com> wrote:
> 
> > >  quiet_cmd_shipped = SHIPPED $@
> > > -cmd_shipped = cat $< > $@
> > > +cmd_shipped = cat $< | $(objtree)/tools/fdtgrep -r -O dtb - -o $@    \
> > > +             $(addprefix -P ,$(subst $\",,$(CONFIG_OF_REMOVE_PROPS)))
> > >
> > >  $(obj)/%: $(src)/%_shipped
> > >       $(call cmd,shipped)
> >
> > On further thinking, this will make it harder in the case of passing the
> > DTB directly to the kernel.  We should guard this option by something
> > else first.
> 
> Please let me ask a question about this.
> In my understanding, U-Boot DTB is a different instance
> from the DTB passed to the kernel.
> Was it changed, or is the change planned?

For a long time now I believe we've had some platforms that wanted to be
passed, and pass on again, a single DTB.  There's also been boards that
have wanted to (or have been) passing what we have on.  We also have the
case of platforms that more constrained and so stripping information out
of the DTB for U-Boot, and continuing to load the kernel DTB from
somewhere else, is what they need and want.
Anatolij Gustschin Jan. 12, 2020, 2:06 p.m. | #6
On Fri, 10 Jan 2020 11:39:45 -0500
Tom Rini trini at konsulko.com wrote:
...
> >  quiet_cmd_shipped = SHIPPED $@
> > -cmd_shipped = cat $< > $@
> > +cmd_shipped = cat $< | $(objtree)/tools/fdtgrep -r -O dtb - -o $@	\
> > +		$(addprefix -P ,$(subst $\",,$(CONFIG_OF_REMOVE_PROPS)))
> >  
> >  $(obj)/%: $(src)/%_shipped
> >  	$(call cmd,shipped)  
> 
> On further thinking, this will make it harder in the case of passing the
> DTB directly to the kernel.  We should guard this option by something
> else first.

Agreed, I'll make it optional in patch v2.

--
Anatolij
Anatolij Gustschin Jan. 12, 2020, 2:08 p.m. | #7
On Sat, 11 Jan 2020 02:01:27 +0900
Masahiro Yamada masahiroy at kernel.org wrote:
...
>   UPD     include/generated/asm-offsets.h
>   SHIPPED scripts/dtc/pylibfdt/libfdt.i
> /bin/sh: 1: ./tools/fdtgrep: not found
> make[3]: *** [scripts/Makefile.lib:242: scripts/dtc/pylibfdt/libfdt.i] Error 127
> make[2]: *** [scripts/Makefile.build:432: scripts/dtc/pylibfdt] Error 2
> make[1]: *** [scripts/Makefile.build:432: scripts/dtc] Error 2
> make: *** [Makefile:551: scripts] Error 2

Thanks for testing and reporting it, I'll fix it in v2.
 
> Please do not touch cmd_shipped.
> 
> If this feature is desired,
> please implement it in dts/Makefile.

OK, thanks!

--
Anatolij

Patch

diff --git a/dts/Kconfig b/dts/Kconfig
index 64c98dd723..49224bee93 100644
--- a/dts/Kconfig
+++ b/dts/Kconfig
@@ -311,6 +311,14 @@  config OF_SPL_REMOVE_PROPS
 	  can be discarded. This option defines the list of properties to
 	  discard.
 
+config OF_REMOVE_PROPS
+	string "List of device tree properties to drop"
+	depends on OF_CONTROL
+	default "interrupt-parent interrupts" if PINCTRL
+	help
+	  Some properties are not used by U-Boot and can be discarded.
+	  This option defines the list of properties to discard.
+
 config SPL_OF_PLATDATA
 	bool "Generate platform data for use in SPL"
 	depends on SPL_OF_CONTROL
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 4ea898a421..3b124369ad 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -235,7 +235,8 @@  $(obj)/%.tab.h: $(src)/%.y FORCE
 # ===========================================================================
 
 quiet_cmd_shipped = SHIPPED $@
-cmd_shipped = cat $< > $@
+cmd_shipped = cat $< | $(objtree)/tools/fdtgrep -r -O dtb - -o $@	\
+		$(addprefix -P ,$(subst $\",,$(CONFIG_OF_REMOVE_PROPS)))
 
 $(obj)/%: $(src)/%_shipped
 	$(call cmd,shipped)