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
We will start building overlays for platforms soon in the kernel and
would need fdtoverlay tool going forward. Lets start fetching it.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
scripts/dtc/update-dtc-source.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
@@ -54,7 +55,7 @@ dtc_log=$(git log --oneline ${last_dtc_ver}..)# Copy the files into the Linux treecd$DTC_LINUX_PATH-forfin$DTC_SOURCE;do+forfin$DTC_SOURCE$FDTOVERLAY_SOURCE;docp${DTC_UPSTREAM_PATH}/${f}${f}gitadd${f}done
This was copied from external DTC repository long back and isn't used
anymore. Over that the dtc tool can be used to generate the dts source
back from the dtb. Remove the unused fdtdump.c file.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
scripts/dtc/fdtdump.c | 163 ------------------------------------------
1 file changed, 163 deletions(-)
delete mode 100644 scripts/dtc/fdtdump.c
Now that fdtoverlay is part of the kernel build, start using it to test
the unitest overlays we have by applying them statically. Create a new
base file static_base.dts which includes other .dtsi files.
Some unittest overlays deliberately contain errors that unittest checks
for. These overlays will cause fdtoverlay to fail, and are thus not
included in the static_test.dtb.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/of/unittest-data/Makefile | 51 ++++++++++++++++++++++++
drivers/of/unittest-data/static_base.dts | 5 +++
2 files changed, 56 insertions(+)
create mode 100644 drivers/of/unittest-data/static_base.dts
@@ -34,7 +34,58 @@ DTC_FLAGS_overlay += -@DTC_FLAGS_overlay_bad_phandle+=-@DTC_FLAGS_overlay_bad_symbol+=-@DTC_FLAGS_overlay_base+=-@+DTC_FLAGS_static_base+=-@DTC_FLAGS_testcases+=-@# suppress warnings about intentional errorsDTC_FLAGS_testcases+=-Wno-interrupts_property++# Apply overlays statically with fdtoverlay. This is a build time test that+# the overlays can be applied successfully by fdtoverlay. This does not+# guarantee that the overlays can be applied successfully at run time by+# unittest, but it provides a bit of build time test coverage for those+# who do not execute unittest.+#+# The overlays are applied on top of static_base.dtb to create static_test.dtb+# If fdtoverlay detects an error than the kernel build will fail.+# static_test.dtb is not consumed by unittest.+#+# Some unittest overlays deliberately contain errors that unittest checks for.+# These overlays will cause fdtoverlay to fail, and are thus not included+# in the static test:+# overlay_bad_add_dup_node.dtb \+# overlay_bad_add_dup_prop.dtb \+# overlay_bad_phandle.dtb \+# overlay_bad_symbol.dtb \+# overlay_base.dtb \++apply_static_overlay:=overlay.dtb\+overlay_0.dtb\+overlay_1.dtb\+overlay_2.dtb\+overlay_3.dtb\+overlay_4.dtb\+overlay_5.dtb\+overlay_6.dtb\+overlay_7.dtb\+overlay_8.dtb\+overlay_9.dtb\+overlay_10.dtb\+overlay_11.dtb\+overlay_12.dtb\+overlay_13.dtb\+overlay_15.dtb\+overlay_gpio_01.dtb\+overlay_gpio_02a.dtb\+overlay_gpio_02b.dtb\+overlay_gpio_03.dtb\+overlay_gpio_04a.dtb\+overlay_gpio_04b.dtb++quiet_cmd_fdtoverlay=FDTOVERLAY$@+cmd_fdtoverlay=$(objtree)/scripts/dtc/fdtoverlay-o$@-i$^++$(obj)/static_test.dtb:$(obj)/static_base.dtb$(addprefix$(obj)/,$(apply_static_overlay))+$(callif_changed,fdtoverlay)++always-$(CONFIG_OF_OVERLAY)+=static_test.dtb
In order to build-test the same unit-test files using fdtoverlay tool,
move the device nodes from the existing overlay_base.dts and
testcases_common.dts files to .dtsi files. The .dts files now include
the new .dtsi files, resulting in exactly the same behavior as earlier.
The .dtsi files can now be reused for compile time tests using
fdtoverlay (will be done in a later patch).
This is required because the base files passed to fdtoverlay tool
shouldn't be overlays themselves (i.e. shouldn't have the /plugin/;
tag).
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/of/unittest-data/overlay_base.dts | 90 +-----------------
drivers/of/unittest-data/overlay_common.dtsi | 91 +++++++++++++++++++
drivers/of/unittest-data/testcases.dts | 17 +---
.../of/unittest-data/testcases_common.dtsi | 18 ++++
4 files changed, 111 insertions(+), 105 deletions(-)
create mode 100644 drivers/of/unittest-data/overlay_common.dtsi
create mode 100644 drivers/of/unittest-data/testcases_common.dtsi
On Fri, Jan 22, 2021 at 7:51 PM Viresh Kumar [off-list ref] 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>
---
We will start building overlays for platforms soon in the kernel and
would need fdtoverlay going forward. Lets start building it.
The fdtoverlay program applies (or merges) one or more overlay dtb
blobs to a base dtb blob. The kernel build system would later use
fdtoverlay to generate the overlaid blobs based on platform specific
configurations.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
scripts/dtc/Makefile | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
@@ -1,13 +1,17 @@# SPDX-License-Identifier: GPL-2.0# scripts/dtc makefile-hostprogs-always-$(CONFIG_DTC)+=dtc+hostprogs-always-$(CONFIG_DTC)+=dtcfdtoverlayhostprogs-always-$(CHECK_DT_BINDING)+=dtcdtc-objs:=dtc.oflattree.ofstree.odata.olivetree.otreesource.o\srcpos.ochecks.outil.odtc-objs+=dtc-lexer.lex.odtc-parser.tab.o+libfdt-objs:=fdt.ofdt_ro.ofdt_wip.ofdt_sw.ofdt_rw.ofdt_strerror.ofdt_empty_tree.ofdt_addresses.ofdt_overlay.o+libfdt=$(addprefixlibfdt/,$(libfdt-objs))+fdtoverlay-objs:=$(libfdt)fdtoverlay.outil.o+# Source files need to get at the userspace version of libfdt_env.h to compileHOST_EXTRACFLAGS+=-I$(srctree)/$(src)/libfdt
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>
---
.gitignore | 1 +
Makefile | 5 ++++-
scripts/Makefile.dtbinst | 3 +++
scripts/Makefile.lib | 5 +++++
4 files changed, 13 insertions(+), 1 deletion(-)
From: David Gibson <hidden> Date: 2021-01-23 01:06:41
On Fri, Jan 22, 2021 at 04:20:32PM +0530, Viresh Kumar wrote:
We will start building overlays for platforms soon in the kernel and
would need fdtoverlay going forward. Lets start building it.
The fdtoverlay program applies (or merges) one or more overlay dtb
Saying "merges" here is probably misleading, since as I mentioned
elsewhere fdtoverlay can *not* merge overlays, only apply them to a
base tree.
quoted hunk
blobs to a base dtb blob. The kernel build system would later use
fdtoverlay to generate the overlaid blobs based on platform specific
configurations.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
scripts/dtc/Makefile | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
@@ -1,13 +1,17 @@# SPDX-License-Identifier: GPL-2.0# scripts/dtc makefile-hostprogs-always-$(CONFIG_DTC)+=dtc+hostprogs-always-$(CONFIG_DTC)+=dtcfdtoverlayhostprogs-always-$(CHECK_DT_BINDING)+=dtcdtc-objs:=dtc.oflattree.ofstree.odata.olivetree.otreesource.o\srcpos.ochecks.outil.odtc-objs+=dtc-lexer.lex.odtc-parser.tab.o+libfdt-objs:=fdt.ofdt_ro.ofdt_wip.ofdt_sw.ofdt_rw.ofdt_strerror.ofdt_empty_tree.ofdt_addresses.ofdt_overlay.o+libfdt=$(addprefixlibfdt/,$(libfdt-objs))+fdtoverlay-objs:=$(libfdt)fdtoverlay.outil.o+# Source files need to get at the userspace version of libfdt_env.h to compileHOST_EXTRACFLAGS+=-I$(srctree)/$(src)/libfdt
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
From: David Gibson <hidden> Date: 2021-01-23 03:42:16
On Fri, Jan 22, 2021 at 04:20:35PM +0530, Viresh Kumar wrote:
quoted hunk
In order to build-test the same unit-test files using fdtoverlay tool,
move the device nodes from the existing overlay_base.dts and
testcases_common.dts files to .dtsi files. The .dts files now include
the new .dtsi files, resulting in exactly the same behavior as earlier.
The .dtsi files can now be reused for compile time tests using
fdtoverlay (will be done in a later patch).
This is required because the base files passed to fdtoverlay tool
shouldn't be overlays themselves (i.e. shouldn't have the /plugin/;
tag).
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/of/unittest-data/overlay_base.dts | 90 +-----------------
drivers/of/unittest-data/overlay_common.dtsi | 91 +++++++++++++++++++
drivers/of/unittest-data/testcases.dts | 17 +---
.../of/unittest-data/testcases_common.dtsi | 18 ++++
4 files changed, 111 insertions(+), 105 deletions(-)
create mode 100644 drivers/of/unittest-data/overlay_common.dtsi
create mode 100644 drivers/of/unittest-data/testcases_common.dtsi
This still makes no sense to me. Is this data intended as a base
tree, or as an overlay? If it's an overlay, what are the constraints
on the base tree it's supposed to apply to.
This patch is treating it as both in different places, but that's such
a bizarre usecase it needs detailed justification. It really looks
like the unittest stuff is doing some very bogus stuff that should be
fixed first, before trying to do this on top.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
On Fri, Jan 22, 2021 at 04:20:32PM +0530, Viresh Kumar wrote:
quoted
We will start building overlays for platforms soon in the kernel and
would need fdtoverlay going forward. Lets start building it.
The fdtoverlay program applies (or merges) one or more overlay dtb
Saying "merges" here is probably misleading, since as I mentioned
elsewhere fdtoverlay can *not* merge overlays, only apply them to a
base tree.
On Fri, Jan 22, 2021 at 04:20:35PM +0530, Viresh Kumar wrote:
quoted
In order to build-test the same unit-test files using fdtoverlay tool,
move the device nodes from the existing overlay_base.dts and
testcases_common.dts files to .dtsi files. The .dts files now include
the new .dtsi files, resulting in exactly the same behavior as earlier.
The .dtsi files can now be reused for compile time tests using
fdtoverlay (will be done in a later patch).
This is required because the base files passed to fdtoverlay tool
shouldn't be overlays themselves (i.e. shouldn't have the /plugin/;
tag).
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/of/unittest-data/overlay_base.dts | 90 +-----------------
drivers/of/unittest-data/overlay_common.dtsi | 91 +++++++++++++++++++
drivers/of/unittest-data/testcases.dts | 17 +---
.../of/unittest-data/testcases_common.dtsi | 18 ++++
4 files changed, 111 insertions(+), 105 deletions(-)
create mode 100644 drivers/of/unittest-data/overlay_common.dtsi
create mode 100644 drivers/of/unittest-data/testcases_common.dtsi
This still makes no sense to me. Is this data intended as a base
tree, or as an overlay? If it's an overlay, what are the constraints
on the base tree it's supposed to apply to.
This patch is treating it as both in different places, but that's such
a bizarre usecase it needs detailed justification. It really looks
like the unittest stuff is doing some very bogus stuff that should be
fixed first, before trying to do this on top.
From: Frank Rowand <hidden> Date: 2021-01-26 10:55:05
On 1/22/21 4:50 AM, Viresh Kumar wrote:
quoted hunk
Now that fdtoverlay is part of the kernel build, start using it to test
the unitest overlays we have by applying them statically. Create a new
base file static_base.dts which includes other .dtsi files.
Some unittest overlays deliberately contain errors that unittest checks
for. These overlays will cause fdtoverlay to fail, and are thus not
included in the static_test.dtb.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/of/unittest-data/Makefile | 51 ++++++++++++++++++++++++
drivers/of/unittest-data/static_base.dts | 5 +++
2 files changed, 56 insertions(+)
create mode 100644 drivers/of/unittest-data/static_base.dts
@@ -34,7 +34,58 @@ DTC_FLAGS_overlay += -@DTC_FLAGS_overlay_bad_phandle+=-@DTC_FLAGS_overlay_bad_symbol+=-@DTC_FLAGS_overlay_base+=-@+DTC_FLAGS_static_base+=-@DTC_FLAGS_testcases+=-@# suppress warnings about intentional errorsDTC_FLAGS_testcases+=-Wno-interrupts_property++# Apply overlays statically with fdtoverlay. This is a build time test that+# the overlays can be applied successfully by fdtoverlay. This does not+# guarantee that the overlays can be applied successfully at run time by+# unittest, but it provides a bit of build time test coverage for those+# who do not execute unittest.+#+# The overlays are applied on top of static_base.dtb to create static_test.dtb+# If fdtoverlay detects an error than the kernel build will fail.+# static_test.dtb is not consumed by unittest.+#+# Some unittest overlays deliberately contain errors that unittest checks for.+# These overlays will cause fdtoverlay to fail, and are thus not included+# in the static test:+# overlay_bad_add_dup_node.dtb \+# overlay_bad_add_dup_prop.dtb \+# overlay_bad_phandle.dtb \+# overlay_bad_symbol.dtb \+# overlay_base.dtb \++apply_static_overlay:=overlay.dtb\
rename apply_static_overlay to apply_static_overlay_2:
apply_static_overlay_2 := overlay.dtb
Then the remainder of apply_static_overlay becomes apply_static_overlay_1:
apply_static_overlay_1 :=
From: Frank Rowand <hidden> Date: 2021-01-26 10:55:07
On 1/22/21 9:07 PM, David Gibson wrote:
On Fri, Jan 22, 2021 at 04:20:35PM +0530, Viresh Kumar wrote:
quoted
In order to build-test the same unit-test files using fdtoverlay tool,
move the device nodes from the existing overlay_base.dts and
testcases_common.dts files to .dtsi files. The .dts files now include
the new .dtsi files, resulting in exactly the same behavior as earlier.
The .dtsi files can now be reused for compile time tests using
fdtoverlay (will be done in a later patch).
This is required because the base files passed to fdtoverlay tool
shouldn't be overlays themselves (i.e. shouldn't have the /plugin/;
tag).
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/of/unittest-data/overlay_base.dts | 90 +-----------------
drivers/of/unittest-data/overlay_common.dtsi | 91 +++++++++++++++++++
drivers/of/unittest-data/testcases.dts | 17 +---
.../of/unittest-data/testcases_common.dtsi | 18 ++++
4 files changed, 111 insertions(+), 105 deletions(-)
create mode 100644 drivers/of/unittest-data/overlay_common.dtsi
create mode 100644 drivers/of/unittest-data/testcases_common.dtsi
This still makes no sense to me. Is this data intended as a base
tree, or as an overlay? If it's an overlay, what are the constraints
on the base tree it's supposed to apply to.
I have already replied several times that this should not make sense to
anyone unless they read unittest.c and see in detail how these FDTs are
abused. I have stated several times that the usage is bizarre and not
normal.
This patch is treating it as both in different places, but that's such
a bizarre usecase it needs detailed justification. It really looks
like the unittest stuff is doing some very bogus stuff that should be
fixed first, before trying to do this on top.
The unittest stuff is bizarre, but it is correct. This patch series does
not alter the current usage.
-Frank
From: Frank Rowand <hidden> Date: 2021-01-26 10:56:36
On 1/25/21 9:15 PM, Frank Rowand wrote:
On 1/22/21 4:50 AM, Viresh Kumar wrote:
quoted
Now that fdtoverlay is part of the kernel build, start using it to test
the unitest overlays we have by applying them statically. Create a new
base file static_base.dts which includes other .dtsi files.
Some unittest overlays deliberately contain errors that unittest checks
for. These overlays will cause fdtoverlay to fail, and are thus not
included in the static_test.dtb.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/of/unittest-data/Makefile | 51 ++++++++++++++++++++++++
drivers/of/unittest-data/static_base.dts | 5 +++
2 files changed, 56 insertions(+)
create mode 100644 drivers/of/unittest-data/static_base.dts
@@ -34,7 +34,58 @@ DTC_FLAGS_overlay += -@DTC_FLAGS_overlay_bad_phandle+=-@DTC_FLAGS_overlay_bad_symbol+=-@DTC_FLAGS_overlay_base+=-@+DTC_FLAGS_static_base+=-@DTC_FLAGS_testcases+=-@# suppress warnings about intentional errorsDTC_FLAGS_testcases+=-Wno-interrupts_property++# Apply overlays statically with fdtoverlay. This is a build time test that+# the overlays can be applied successfully by fdtoverlay. This does not+# guarantee that the overlays can be applied successfully at run time by+# unittest, but it provides a bit of build time test coverage for those+# who do not execute unittest.+#+# The overlays are applied on top of static_base.dtb to create static_test.dtb+# If fdtoverlay detects an error than the kernel build will fail.+# static_test.dtb is not consumed by unittest.+#+# Some unittest overlays deliberately contain errors that unittest checks for.+# These overlays will cause fdtoverlay to fail, and are thus not included+# in the static test:+# overlay_bad_add_dup_node.dtb \+# overlay_bad_add_dup_prop.dtb \+# overlay_bad_phandle.dtb \+# overlay_bad_symbol.dtb \+# overlay_base.dtb \++apply_static_overlay:=overlay.dtb\
rename apply_static_overlay to apply_static_overlay_2:
apply_static_overlay_2 := overlay.dtb
Then the remainder of apply_static_overlay becomes apply_static_overlay_1:
apply_static_overlay_1 :=
From: Frank Rowand <hidden> Date: 2021-01-26 12:23:26
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
In order to build-test the same unit-test files using fdtoverlay tool,
move the device nodes from the existing overlay_base.dts and
testcases_common.dts files to .dtsi files. The .dts files now include
the new .dtsi files, resulting in exactly the same behavior as earlier.
The .dtsi files can now be reused for compile time tests using
fdtoverlay (will be done in a later patch).
This is required because the base files passed to fdtoverlay tool
shouldn't be overlays themselves (i.e. shouldn't have the /plugin/;
tag).
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/of/unittest-data/overlay_base.dts | 90 +-----------------
drivers/of/unittest-data/overlay_common.dtsi | 91 +++++++++++++++++++
drivers/of/unittest-data/testcases.dts | 17 +---
.../of/unittest-data/testcases_common.dtsi | 18 ++++
4 files changed, 111 insertions(+), 105 deletions(-)
create mode 100644 drivers/of/unittest-data/overlay_common.dtsi
create mode 100644 drivers/of/unittest-data/testcases_common.dtsi
Frank,
As I mentioned in the cover-letter, I get a build warning right now:
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
I think I need to add below diff to this patch to fix this warning, will that
be okay ?
@@ -3,3 +3,14 @@/plugin/;#include"testcases_common.dtsi"++/{+testcase-data{+testcase-device2{+compatible="testcase-device";+interrupt-parent=<&test_intc2>;+interrupts=<1>;/* invalid specifier - too short */+};+};++};
From: Frank Rowand <hidden> Date: 2021-01-29 06:00:42
Hi Viresh,
On 1/26/21 11:56 PM, Viresh Kumar wrote:
On 22-01-21, 16:20, Viresh Kumar wrote:
quoted
In order to build-test the same unit-test files using fdtoverlay tool,
move the device nodes from the existing overlay_base.dts and
testcases_common.dts files to .dtsi files. The .dts files now include
the new .dtsi files, resulting in exactly the same behavior as earlier.
The .dtsi files can now be reused for compile time tests using
fdtoverlay (will be done in a later patch).
This is required because the base files passed to fdtoverlay tool
shouldn't be overlays themselves (i.e. shouldn't have the /plugin/;
tag).
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/of/unittest-data/overlay_base.dts | 90 +-----------------
drivers/of/unittest-data/overlay_common.dtsi | 91 +++++++++++++++++++
drivers/of/unittest-data/testcases.dts | 17 +---
.../of/unittest-data/testcases_common.dtsi | 18 ++++
4 files changed, 111 insertions(+), 105 deletions(-)
create mode 100644 drivers/of/unittest-data/overlay_common.dtsi
create mode 100644 drivers/of/unittest-data/testcases_common.dtsi
Frank,
As I mentioned in the cover-letter, I get a build warning right now:
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
Thanks for catching that.
I think I need to add below diff to this patch to fix this warning, will that
be okay ?
Nope, the change below won't work because it removes the node testcase-device2 from the tests
that unittest.c does (if I am thinking correctly). I will double check my thinking, but I
know you are spinning the patch, so I didn't want to delay this reply.
Note that this node has a deliberate error in it "/* invalid specifier - too short */".
I'm not sure why the dtc warning triggers on line 20 instead of line 68. I'll have to go
look at the dtc source to better understand the warning.
-Frank
@@ -3,3 +3,14 @@/plugin/;#include"testcases_common.dtsi"++/{+testcase-data{+testcase-device2{+compatible="testcase-device";+interrupt-parent=<&test_intc2>;+interrupts=<1>;/* invalid specifier - too short */+};+};++};
From: Frank Rowand <hidden> Date: 2021-01-29 06:04:41
On 1/22/21 4:50 AM, Viresh Kumar wrote:
quoted hunk
We will start building overlays for platforms soon in the kernel and
would need fdtoverlay going forward. Lets start building it.
The fdtoverlay program applies (or merges) one or more overlay dtb
blobs to a base dtb blob. The kernel build system would later use
fdtoverlay to generate the overlaid blobs based on platform specific
configurations.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
scripts/dtc/Makefile | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
Please add this comment:
# The upstream project builds libfdt as a separate library. We are choosing to
# instead directly link the libfdt object files into fdtoverly
+libfdt-objs := fdt.o fdt_ro.o fdt_wip.o fdt_sw.o fdt_rw.o fdt_strerror.o fdt_empty_tree.o fdt_addresses.o fdt_overlay.o
+libfdt = $(addprefix libfdt/,$(libfdt-objs))
+fdtoverlay-objs := $(libfdt) fdtoverlay.o util.o
+
# Source files need to get at the userspace version of libfdt_env.h to compile
HOST_EXTRACFLAGS += -I $(srctree)/$(src)/libfdt
We will start building overlays for platforms soon in the kernel and
would need fdtoverlay going forward. Lets start building it.
The fdtoverlay program applies (or merges) one or more overlay dtb
blobs to a base dtb blob. The kernel build system would later use
fdtoverlay to generate the overlaid blobs based on platform specific
configurations.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
scripts/dtc/Makefile | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
Please add this comment:
# The upstream project builds libfdt as a separate library. We are choosing to
# instead directly link the libfdt object files into fdtoverly
My bad, I checked this again and you gave the exact same comment
during V4 as well. Sorry about missing this earlier.
--
viresh
From: Frank Rowand <hidden> Date: 2021-01-29 06:40:39
Hi Viresh,
Second attempt, I think the first reply did not properly send.
On 1/26/21 11:56 PM, Viresh Kumar wrote:
On 22-01-21, 16:20, Viresh Kumar wrote:
quoted
In order to build-test the same unit-test files using fdtoverlay tool,
move the device nodes from the existing overlay_base.dts and
testcases_common.dts files to .dtsi files. The .dts files now include
the new .dtsi files, resulting in exactly the same behavior as earlier.
The .dtsi files can now be reused for compile time tests using
fdtoverlay (will be done in a later patch).
This is required because the base files passed to fdtoverlay tool
shouldn't be overlays themselves (i.e. shouldn't have the /plugin/;
tag).
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/of/unittest-data/overlay_base.dts | 90 +-----------------
drivers/of/unittest-data/overlay_common.dtsi | 91 +++++++++++++++++++
drivers/of/unittest-data/testcases.dts | 17 +---
.../of/unittest-data/testcases_common.dtsi | 18 ++++
4 files changed, 111 insertions(+), 105 deletions(-)
create mode 100644 drivers/of/unittest-data/overlay_common.dtsi
create mode 100644 drivers/of/unittest-data/testcases_common.dtsi
Frank,
As I mentioned in the cover-letter, I get a build warning right now:
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
Thanks for catching that.
I think I need to add below diff to this patch to fix this warning, will that
be okay ?
In my first reply, I said "nope", or something to that effect. Upon reflection, it looks
like the below diff will fix the problem. This is base on source code inspection and
building with the diff applied.
I did not successfully boot my target (I have some issues to resolve after updating
the OS on my development host), so I have not verified that unittest is not impacted.
-Frank
@@ -3,3 +3,14 @@/plugin/;#include"testcases_common.dtsi"++/{+testcase-data{+testcase-device2{+compatible="testcase-device";+interrupt-parent=<&test_intc2>;+interrupts=<1>;/* invalid specifier - too short */+};+};++};