[PATCH v4 00/11] An effort to bring DT bindings compliance within U-Boot

Caleb Connolly caleb.connolly at linaro.org
Sun Jan 21 23:41:51 CET 2024

On 21/01/2024 15:33, Marek Vasut wrote:
> On 1/10/24 11:35, Sumit Garg wrote:
>> Changes in v4:
>> --------------
>> - Switched subtree to be imported as dts/upstream sub-directory rather
>>    than devicetree-rebasing sub-directory to better suite U-Boot
>>    directory structure.
>> - Since we now have v6.7-dts tag available now, so switch subtree to
>>    that from its beginning.
>> - Patch #2: Incorporate build fix to adjust Bindings Makefile rules to
>>    old U-Boot Kbuild infrastructure.
>> - Patch #3: Incorporate fix to resolve rk3399 migration issue reported
>>    by Simon.
>> - Patch #4: New patch to reuse upstream DT includes by U-Boot as per
>>    Brian's use-case for TI K3 SoCs.
>> - Patch #5: Added a note to OF_UPSTREAM Kconfig option.
>> - Patch #6: New patch to add script dts/update-dts-subtree.sh as per
>>    Rob's comments.
>> - Patch #7: Separate patch to align documentation to use Kconfig symbols
>>    instead.
>> - Patch #8: Clarify subtree uprev schedule as a separate documentation
>>    section. Also, fixed documentation typos.
>> - Patch #9: Added commit description.
>> Changes in v3:
>> --------------
>> - Patch #4: Minor commit message update
>> - Patch #5: Replace CONFIG_* with Kconfig options
>> - Patch #7: Dropped Makefile portion and enabled OF_UPSTREAM for SoC
>>    instead.
>> - Patch #1, #3, #6 and #8: Picked up review tags
>> Changes in v2:
>> --------------
>> - Patch #1: excluded gitab CI config check and added commit description.
>> - Patch #3: s/UBOOT_DTSI_LOC/u_boot_dtsi_loc/
>> - Patch #4: s/DEVICE_TREE_LOC/dt_dir/ and s/U-boot/U-Boot/
>> - Patch #5: s/U-boot/U-Boot/
>> - Patch #6 and #7: Picked up review tags
>> Prerequisite
>> ------------
>> This patch series requires devicetree-rebasing git repo to be added as a
>> subtree to the main U-Boot repo via:
>> $ git subtree add --prefix dts/upstream \
>> git://git.kernel.org/pub/scm/linux/kernel/git/devicetree/devicetree-rebasing.git \
>>        v6.7-dts --squash
>> Background
>> ----------
>> This effort started while I was reviewing patch series corresponding to
>> Qcom platforms [1] which was about to import modified devicetree source
>> files from Linux kernel. I suppose keeping devicetree files sync with
>> Linux kernel without any DT bindings schema validation has been a pain
>> for U-Boot SoC/platform maintainers. There has been past discussions
>> about a single DT repo but that hasn't come up and Linux kernel remained
>> the place where DT source files as well as bindings are placed and
>> maintained.
>> However, Linux kernel DT maintainers proposed [2] for U-Boot to rather
>> use devicetree-rebasing repo [3] which is a forked copy from Linux
>> kernel for DT source files as well as bindings. It is tagged at every
>> Linux kernel major release or intermideate release candidates. So here I
>> have tried to reuse that to bring DT bingings compliance as well as a
>> standard way to maintain a regular sync of DT source files with Linux
>> kernel.
>> In order to maintain devicetree files sync, U-Boot will maintains a Git
>> subtree for devicetee-rebasing repo as `dts/upstream` sub-directory.
>> U-Boot will regularly sync `dts/upstream/` subtree whenever the next 
>> window
>> opens with the next available kernel major release.
>> `dts/update-dts-subtree.sh` script provides a wrapper around git subtree
>> pull command, usage from the top level U-Boot source tree, run:
>> $ ./dts/update-dts-subtree.sh <devicetree-rebasing-release-tag>
>> The RFC/prototype for this series has been discussed with Linux DT
>> maintainers as well as U-Boot maintainers here [4]. Now we would like to
>> reach out to wider U-Boot community to seek feedback.
> I very much agree with the direction this is going in, but I do have two 
> simple questions:
> How do you propose to handle fixes to DTs which are applied to 
> linux-stable releases ? For example, if Linux 6.6(.0) ships a DT which 
> has some defect that is fixed in 6.6.1, how will that fix get into 
> U-Boot DTs ?

This fix would also be in the latest Linux tags, so I think it would 
find its way here - as I understand it patches aren't accepted into 
Linux stable unless they land in torvalds tree.
> Assume that there is some large breaking change in Linux 6.(n+1), 
> something which would be problematic for specific U-Boot platform (e.g. 
> i.MX) or would require a lot of work to sort out, will there be a way to 
> temporarily pin DTs for specific platform to older DT version until that 
> is resolved (e.g. pin to 6.n) ?

(Upstream) devicetree has to be forwards and backwards compatible, were 
such a breaking change to get merged without prior discussion with DT 
users (i.e. U-Boot) then I think the correct course of action would be 
to revert it.

On a tangential note: as I understand it, DTs built from dt-rebasing are 
still subject to U-Boot customisations via the "-u-boot.dtsi" include 
files, this allows for dealing with incompatibilities due to missing 
features in U-Boot.

// Caleb (they/them)

More information about the U-Boot-Custodians mailing list