mbox series

[V6,0/6] dt: build overlays

Message ID cover.1611312122.git.viresh.kumar@linaro.org
Headers show
Series dt: build overlays | expand

Message

Viresh Kumar Jan. 22, 2021, 10:50 a.m. UTC
Hi Frank/Rob,

This patchset makes necessary changes to the kernel to add support for
building overlays (%.dtbo) and the required fdtoverlay tool. This also
builds static_test.dtb using most of the existing overlay tests present
in drivers/of/unittest-data/ for better test coverage.

Note that in order for anyone to test this stuff, you need to manually
run the ./update-dtc-source.sh script once to fetch the necessary
changes from the external DTC project (i.e. fdtoverlay.c and this[1]
patch).

Also note that Frank has already shared his concerns towards the error
reporting done by fdtoverlay tool [2], and David said it is not that
straight forward to make such changes in fdtoverlay. I have still
included the patch in this series for completeness.

FWIW, with fdtoverlay we generate a new build warning now, not sure why
though:

drivers/of/unittest-data/tests-interrupts.dtsi:20.5-28: Warning (interrupts_property): /testcase-data/testcase-device2:#interrupt-cells: size is (4), expected multiple of 8

V6:
- Create separate rules for dtbo-s and separate entries in .gitignore in
  4/6 (Masahiro).
- A new file layout for handling all overlays for existing and new tests
  5/6 (Frank).
- Include overlay.dts as well now in 6/6 (Frank).

V5:

- Don't reuse DTC_SOURCE for fdtoverlay.c in patch 1/5 (Frank).

- Update .gitignore and scripts/Makefile.dtbinst, drop dtbo-y syntax and
  DTC_FLAGS += -@ in patch 4/5 (Masahiro).

- Remove the intermediate dtb, rename output to static_test.dtb, don't
  use overlay.dtb and overlay_base.dtb for static builds, improved
  layout/comments in Makefile for patch 5/5 (Frank).

--
Viresh

[1] https://github.com/dgibson/dtc/commit/163f0469bf2ed8b2fe5aa15bc796b93c70243ddc
[2] https://lore.kernel.org/lkml/74f8aa8f-ffab-3b0f-186f-31fb7395ebbb@gmail.com/

Viresh Kumar (6):
  scripts: dtc: Fetch fdtoverlay.c from external DTC project
  scripts: dtc: Build fdtoverlay tool
  scripts: dtc: Remove the unused fdtdump.c file
  kbuild: Add support to build overlays (%.dtbo)
  of: unittest: Create overlay_common.dtsi and testcases_common.dtsi
  of: unittest: Statically apply overlays using fdtoverlay

 .gitignore                                    |   1 +
 Makefile                                      |   5 +-
 drivers/of/unittest-data/Makefile             |  51 ++++++
 drivers/of/unittest-data/overlay_base.dts     |  90 +---------
 drivers/of/unittest-data/overlay_common.dtsi  |  91 ++++++++++
 drivers/of/unittest-data/static_base.dts      |   5 +
 drivers/of/unittest-data/testcases.dts        |  17 +-
 .../of/unittest-data/testcases_common.dtsi    |  18 ++
 scripts/Makefile.dtbinst                      |   3 +
 scripts/Makefile.lib                          |   5 +
 scripts/dtc/Makefile                          |   6 +-
 scripts/dtc/fdtdump.c                         | 163 ------------------
 scripts/dtc/update-dtc-source.sh              |   3 +-
 13 files changed, 187 insertions(+), 271 deletions(-)
 create mode 100644 drivers/of/unittest-data/overlay_common.dtsi
 create mode 100644 drivers/of/unittest-data/static_base.dts
 create mode 100644 drivers/of/unittest-data/testcases_common.dtsi
 delete mode 100644 scripts/dtc/fdtdump.c

-- 
2.25.0.rc1.19.g042ed3e048af

Comments

Masahiro Yamada Jan. 22, 2021, 11:12 a.m. UTC | #1
On Fri, Jan 22, 2021 at 7:51 PM Viresh Kumar <viresh.kumar@linaro.org> wrote:
>

> Add support for building DT overlays (%.dtbo). The overlay's source file

> will have the usual extension, i.e. .dts, though the blob will have

> .dtbo extension to distinguish it from normal blobs.

>

> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

> ---


Acked-by: Masahiro Yamada <masahiroy@kernel.org>




>  .gitignore               | 1 +

>  Makefile                 | 5 ++++-

>  scripts/Makefile.dtbinst | 3 +++

>  scripts/Makefile.lib     | 5 +++++

>  4 files changed, 13 insertions(+), 1 deletion(-)

>

> diff --git a/.gitignore b/.gitignore

> index d01cda8e1177..bb65fa253e58 100644

> --- a/.gitignore

> +++ b/.gitignore

> @@ -18,6 +18,7 @@

>  *.c.[012]*.*

>  *.dt.yaml

>  *.dtb

> +*.dtbo

>  *.dtb.S

>  *.dwo

>  *.elf

> diff --git a/Makefile b/Makefile

> index 9e73f82e0d86..18fd02f55d9b 100644

> --- a/Makefile

> +++ b/Makefile

> @@ -1337,6 +1337,9 @@ ifneq ($(dtstree),)

>  %.dtb: include/config/kernel.release scripts_dtc

>         $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@

>

> +%.dtbo: include/config/kernel.release scripts_dtc

> +       $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@

> +

>  PHONY += dtbs dtbs_install dtbs_check

>  dtbs: include/config/kernel.release scripts_dtc

>         $(Q)$(MAKE) $(build)=$(dtstree)

> @@ -1816,7 +1819,7 @@ clean: $(clean-dirs)

>         @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \

>                 \( -name '*.[aios]' -o -name '*.ko' -o -name '.*.cmd' \

>                 -o -name '*.ko.*' \

> -               -o -name '*.dtb' -o -name '*.dtb.S' -o -name '*.dt.yaml' \

> +               -o -name '*.dtb' -o -name '*.dtbo' -o -name '*.dtb.S' -o -name '*.dt.yaml' \

>                 -o -name '*.dwo' -o -name '*.lst' \

>                 -o -name '*.su' -o -name '*.mod' \

>                 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \

> diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst

> index 50d580d77ae9..ba01f5ba2517 100644

> --- a/scripts/Makefile.dtbinst

> +++ b/scripts/Makefile.dtbinst

> @@ -29,6 +29,9 @@ quiet_cmd_dtb_install = INSTALL $@

>  $(dst)/%.dtb: $(obj)/%.dtb

>         $(call cmd,dtb_install)

>

> +$(dst)/%.dtbo: $(obj)/%.dtbo

> +       $(call cmd,dtb_install)

> +

>  PHONY += $(subdirs)

>  $(subdirs):

>         $(Q)$(MAKE) $(dtbinst)=$@ dst=$(patsubst $(obj)/%,$(dst)/%,$@)

> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib

> index 213677a5ed33..b00855b247e0 100644

> --- a/scripts/Makefile.lib

> +++ b/scripts/Makefile.lib

> @@ -86,7 +86,9 @@ extra-$(CONFIG_OF_ALL_DTBS)   += $(dtb-)

>

>  ifneq ($(CHECK_DTBS),)

>  extra-y += $(patsubst %.dtb,%.dt.yaml, $(dtb-y))

> +extra-y += $(patsubst %.dtbo,%.dt.yaml, $(dtb-y))

>  extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtb,%.dt.yaml, $(dtb-))

> +extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtbo,%.dt.yaml, $(dtb-))

>  endif

>

>  # Add subdir path

> @@ -327,6 +329,9 @@ cmd_dtc = $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ;

>  $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE

>         $(call if_changed_dep,dtc)

>

> +$(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE

> +       $(call if_changed_dep,dtc)

> +

>  DT_CHECKER ?= dt-validate

>  DT_BINDING_DIR := Documentation/devicetree/bindings

>  # DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile

> --

> 2.25.0.rc1.19.g042ed3e048af

>



-- 
Best Regards
Masahiro Yamada
Frank Rowand Jan. 26, 2021, 3:45 a.m. UTC | #2
On 1/22/21 4:50 AM, Viresh Kumar wrote:
> Hi Frank/Rob,

> 

> This patchset makes necessary changes to the kernel to add support for

> building overlays (%.dtbo) and the required fdtoverlay tool. This also

> builds static_test.dtb using most of the existing overlay tests present

> in drivers/of/unittest-data/ for better test coverage.

> 

> Note that in order for anyone to test this stuff, you need to manually

> run the ./update-dtc-source.sh script once to fetch the necessary

> changes from the external DTC project (i.e. fdtoverlay.c and this[1]

> patch).

> 


> Also note that Frank has already shared his concerns towards the error

> reporting done by fdtoverlay tool [2], and David said it is not that

> straight forward to make such changes in fdtoverlay. I have still

> included the patch in this series for completeness.


I started to reply to this email with questions for David about how to
improve the fdtoverlay error reporting.  But then decided that instead
of trying to paraphrase the comments in v4 of this patch series, it
would be more efficient to ask in the v4 thread.  So my questions are
over there...

-Frank

> 

> FWIW, with fdtoverlay we generate a new build warning now, not sure why

> though:

> 

> drivers/of/unittest-data/tests-interrupts.dtsi:20.5-28: Warning (interrupts_property): /testcase-data/testcase-device2:#interrupt-cells: size is (4), expected multiple of 8

> 

> V6:

> - Create separate rules for dtbo-s and separate entries in .gitignore in

>   4/6 (Masahiro).

> - A new file layout for handling all overlays for existing and new tests

>   5/6 (Frank).

> - Include overlay.dts as well now in 6/6 (Frank).

> 

> V5:

> 

> - Don't reuse DTC_SOURCE for fdtoverlay.c in patch 1/5 (Frank).

> 

> - Update .gitignore and scripts/Makefile.dtbinst, drop dtbo-y syntax and

>   DTC_FLAGS += -@ in patch 4/5 (Masahiro).

> 

> - Remove the intermediate dtb, rename output to static_test.dtb, don't

>   use overlay.dtb and overlay_base.dtb for static builds, improved

>   layout/comments in Makefile for patch 5/5 (Frank).

> 

> --

> Viresh

> 

> [1] https://github.com/dgibson/dtc/commit/163f0469bf2ed8b2fe5aa15bc796b93c70243ddc

> [2] https://lore.kernel.org/lkml/74f8aa8f-ffab-3b0f-186f-31fb7395ebbb@gmail.com/

> 

> Viresh Kumar (6):

>   scripts: dtc: Fetch fdtoverlay.c from external DTC project

>   scripts: dtc: Build fdtoverlay tool

>   scripts: dtc: Remove the unused fdtdump.c file

>   kbuild: Add support to build overlays (%.dtbo)

>   of: unittest: Create overlay_common.dtsi and testcases_common.dtsi

>   of: unittest: Statically apply overlays using fdtoverlay

> 

>  .gitignore                                    |   1 +

>  Makefile                                      |   5 +-

>  drivers/of/unittest-data/Makefile             |  51 ++++++

>  drivers/of/unittest-data/overlay_base.dts     |  90 +---------

>  drivers/of/unittest-data/overlay_common.dtsi  |  91 ++++++++++

>  drivers/of/unittest-data/static_base.dts      |   5 +

>  drivers/of/unittest-data/testcases.dts        |  17 +-

>  .../of/unittest-data/testcases_common.dtsi    |  18 ++

>  scripts/Makefile.dtbinst                      |   3 +

>  scripts/Makefile.lib                          |   5 +

>  scripts/dtc/Makefile                          |   6 +-

>  scripts/dtc/fdtdump.c                         | 163 ------------------

>  scripts/dtc/update-dtc-source.sh              |   3 +-

>  13 files changed, 187 insertions(+), 271 deletions(-)

>  create mode 100644 drivers/of/unittest-data/overlay_common.dtsi

>  create mode 100644 drivers/of/unittest-data/static_base.dts

>  create mode 100644 drivers/of/unittest-data/testcases_common.dtsi

>  delete mode 100644 scripts/dtc/fdtdump.c

>