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)