On 1/22/21 4:50 AM, Viresh Kumar wrote: > 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@xxxxxxxxxx> > --- > 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 > > diff --git a/drivers/of/unittest-data/Makefile b/drivers/of/unittest-data/Makefile > index 009f4045c8e4..586fa8cda916 100644 > --- a/drivers/of/unittest-data/Makefile > +++ b/drivers/of/unittest-data/Makefile > @@ -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 errors > DTC_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 := > + 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)) > + $(call if_changed,fdtoverlay) Split the static_test.dtb into _1 and _2: > +$(obj)/static_test_1.dtb: $(obj)/static_base_1.dtb $(addprefix $(obj)/,$(apply_static_overlay_1)) > + $(call if_changed,fdtoverlay) > +$(obj)/static_test_2.dtb: $(obj)/static_base_2.dtb $(addprefix $(obj)/,$(apply_static_overlay_2)) > + $(call if_changed,fdtoverlay) > + > +always-$(CONFIG_OF_OVERLAY) += static_test.dtb > diff --git a/drivers/of/unittest-data/static_base.dts b/drivers/of/unittest-data/static_base.dts > new file mode 100644 > index 000000000000..3c9af4aefb96 > --- /dev/null > +++ b/drivers/of/unittest-data/static_base.dt> @@ -0,0 +1,5 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/dts-v1/; > + > +#include "overlay_common.dtsi" > +#include "testcases_common.dtsi" > Split static_base.dts into static_base_1.dts and static_base_2.dts: static_base_1.dts: > +// SPDX-License-Identifier: GPL-2.0 > +/dts-v1/; > + > +#include "testcases_common.dtsi" static_base_2.dts: > +// SPDX-License-Identifier: GPL-2.0 > +/dts-v1/; > + > +#include "overlay_common.dtsi"