Hi Sumit, On Wed, 29 May 2024 at 08:57, Sumit Garg <[email protected]> wrote:
> Hi Patrick, > > On Tue, 28 May 2024 at 14:16, Patrick Barsanti > <[email protected]> wrote: > > > > Always prioritizing u-boot includes causes problems when trying to > > migrate boards to OF_UPSTREAM that have divergent devicetree files with > > respect to the upstream ones. > > > > For example, migrating a board based on `imx6ul.dtsi` to OF_UPSTREAM > > breaks it, as there are some missing defines in the local dtsi file; > > the solutions would be to either patch it, which defeats the purpose of > > OF_UPSTREAM, or delete it entirely. This last option would then break all > > the other boards which have not yet been migrated to OF_UPSTREAM. > > Can you elaborate more here regarding which dt-bindings headers > conflict? Also, is it only the DTS files consumer for those headers or > there are U-Boot drivers depending on them too? > > -Sumit > Sorry, I think I have worded my commit message wrong. I should have used differ instead of diverge, which is slightly misleading. The specific case I am talking about can be found in: include/dt-bindings/clock/imx6ul-clock.h dts/upstream/include/dt-bindings/clock/imx6ul-clock.h The local header is missing the last commit from the kernel, which is 4e197ee880c2 ("clk: imx6ul: add ethernet refclock mux support"). This added some new defines, which are not present in the u-boot header. Following this commit, the `imx6ul.dtsi` was patched in the kernel to use one of the new defines. Because of this, at the current state, migrating a board which is somehow based on `imx6ul.dtsi` will give a dtc error given by a value being used in the upstream dtsi which is not defined in the local header, because local includes always have priority with respect to upstream ones even when setting OF_UPSTREAM. Regards, Patrick > > > > The opposite problem also exists: by always prioritizing upstream > > includes, if changes are made in the kernel headers and devicetree > > files that are not backwards compatible, again all boards which have not > > been migrated to OF_UPSTREAM will break. > > > > This patch fixes this problem by prioritizing upstream includes when > > `CONFIG_OF_UPSTREAM=y`, while keeping current prioritization when > > it is not. > > > > Signed-off-by: Patrick Barsanti <[email protected]> > > --- > > Makefile | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/Makefile b/Makefile > > index 79b28c2d81..899ae664ca 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -826,6 +826,19 @@ KBUILD_HOSTCFLAGS += $(if $(CONFIG_TOOLS_DEBUG),-g) > > > > # Use UBOOTINCLUDE when you must reference the include/ directory. > > # Needed to be compatible with the O= option > > +ifeq ($(CONFIG_OF_UPSTREAM),y) > > +UBOOTINCLUDE := \ > > + -I$(srctree)/dts/upstream/include \ > > + -Iinclude \ > > + $(if $(KBUILD_SRC), -I$(srctree)/include) \ > > + $(if $(CONFIG_$(SPL_)SYS_THUMB_BUILD), \ > > + $(if $(CONFIG_HAS_THUMB2), \ > > + $(if $(CONFIG_CPU_V7M), \ > > + -I$(srctree)/arch/arm/thumb1/include), \ > > + -I$(srctree)/arch/arm/thumb1/include)) \ > > + -I$(srctree)/arch/$(ARCH)/include \ > > + -include $(srctree)/include/linux/kconfig.h > > +else > > UBOOTINCLUDE := \ > > -Iinclude \ > > $(if $(KBUILD_SRC), -I$(srctree)/include) \ > > @@ -837,6 +850,7 @@ UBOOTINCLUDE := \ > > -I$(srctree)/arch/$(ARCH)/include \ > > -include $(srctree)/include/linux/kconfig.h \ > > -I$(srctree)/dts/upstream/include > > +endif > > > > NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) > -print-file-name=include) > > > > -- > > 2.43.0 > > >

