[PATCH 0/3] Extend u-boot-script for DT overlays

10 views
Skip to first unread message

Felix Moessbauer

unread,
Sep 4, 2023, 1:51:59 AM9/4/23
to isar-...@googlegroups.com, florian...@siemens.com, jan.k...@siemens.com, daniel.bo...@siemens.com, Felix Moessbauer
This series re-proposes the reverted u-boot patches 60575d11 and
a2e734a4, as the corresponding discussions now have been finished.

In addition, p1 adds a comment about the special handling of the
OVERLAYS u-boot variable. It does not contain any functional
changes to the original patchset.

The series has been rebased onto next.

Best regards,
Felix Moessbauer

Felix Moessbauer (3):
add comment about content of u-boot OVERLAYS var
u-boot-script: add support to use builtin dt
use builtin DT for nanopi-neo target

.../lib/wic/canned-wks/nanopi-neo.wks.in | 4 ++--
.../u-boot-script/files/u-boot-script | 3 +++
.../u-boot-script/files/update-u-boot-script | 17 +++++++++++++----
.../lib/wic/plugins/source/rootfs-u-boot.py | 3 +++
4 files changed, 21 insertions(+), 6 deletions(-)

--
2.34.1

Felix Moessbauer

unread,
Sep 4, 2023, 1:52:01 AM9/4/23
to isar-...@googlegroups.com, florian...@siemens.com, jan.k...@siemens.com, daniel.bo...@siemens.com, Felix Moessbauer
The update-u-boot-script implementation uses a runtime loop to iterate
over the content each individual overlay entry. This is required because
the entry might contain an u-boot variable, containing multiple overlays
itself.

To avoid incorrect code cleanups like in 680ad26, we add a comment about
this special handling.

Signed-off-by: Felix Moessbauer <felix.mo...@siemens.com>
---
meta/recipes-bsp/u-boot-script/files/update-u-boot-script | 1 +
1 file changed, 1 insertion(+)

diff --git a/meta/recipes-bsp/u-boot-script/files/update-u-boot-script b/meta/recipes-bsp/u-boot-script/files/update-u-boot-script
index e9ace15e..1d9c6d45 100755
--- a/meta/recipes-bsp/u-boot-script/files/update-u-boot-script
+++ b/meta/recipes-bsp/u-boot-script/files/update-u-boot-script
@@ -63,6 +63,7 @@ if [ -n "${OVERLAYS}" ]; then
if ! echo $OVERLAY | grep -q "^/"; then
OVERLAY_PATH=/usr/lib/linux-image-${KERNEL_VERSION}/
fi
+ # The ${OVERLAY} might contain an u-boot variable with multiple entries.
echo "for entry in ${OVERLAY}; do" >> ${BOOT_CMD}
echo "echo Loading ${OVERLAY_PATH}\${entry}..." >> ${BOOT_CMD}
echo "load \${devtype} \${devnum}:${ROOT_PARTITION}" \
--
2.34.1

Felix Moessbauer

unread,
Sep 4, 2023, 1:52:09 AM9/4/23
to isar-...@googlegroups.com, florian...@siemens.com, jan.k...@siemens.com, daniel.bo...@siemens.com, Felix Moessbauer
This patch adds support to use the u-boot builtin device tree instead of
the one from the rootfs / linux. This enables the use of dt overlays
even if the corresponding device tree in the kernel is not compiled with
symbol support (u-boot builtin DTBs always have symbol information).

To use the builtin dt, add the WKS sourceparam "builtin_dt=yes" to the
rootfs-u-boot sourcer.

Co-developed-by: Florian Bezdeka <florian...@siemens.com>
Signed-off-by: Felix Moessbauer <felix.mo...@siemens.com>
---
.../u-boot-script/files/u-boot-script | 3 +++
.../u-boot-script/files/update-u-boot-script | 16 ++++++++++++----
.../lib/wic/plugins/source/rootfs-u-boot.py | 3 +++
3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/meta/recipes-bsp/u-boot-script/files/u-boot-script b/meta/recipes-bsp/u-boot-script/files/u-boot-script
index d053d721..a11212c0 100644
--- a/meta/recipes-bsp/u-boot-script/files/u-boot-script
+++ b/meta/recipes-bsp/u-boot-script/files/u-boot-script
@@ -15,3 +15,6 @@ NO_INITRD=""

# U-boot commands to prepend to boot script
SCRIPT_PREPEND=""
+
+# use u-boot builtin device tree
+BUILTIN_DT="no"
diff --git a/meta/recipes-bsp/u-boot-script/files/update-u-boot-script b/meta/recipes-bsp/u-boot-script/files/update-u-boot-script
index 1d9c6d45..2eb6097c 100755
--- a/meta/recipes-bsp/u-boot-script/files/update-u-boot-script
+++ b/meta/recipes-bsp/u-boot-script/files/update-u-boot-script
@@ -33,10 +33,18 @@ echo "${SCRIPT_PREPEND}" >> ${BOOT_CMD}

echo "setenv bootargs ${KERNEL_ARGS}" >> ${BOOT_CMD}

-echo "echo Loading /usr/lib/linux-image-${KERNEL_VERSION}/\${fdtfile}..." \
- >> ${BOOT_CMD}
-echo "load \${devtype} \${devnum}:${ROOT_PARTITION} \${fdt_addr_r}" \
- "/usr/lib/linux-image-${KERNEL_VERSION}/\${fdtfile}" >> ${BOOT_CMD}
+if [ "${BUILTIN_DT}" = "yes" ]; then
+ echo "echo Loading builtin device tree..." \
+ >> ${BOOT_CMD}
+ echo "fdt addr \${fdtcontroladdr}" >> ${BOOT_CMD}
+ echo "fdt move \${fdtcontroladdr} \${fdt_addr_r}" >> ${BOOT_CMD}
+else
+ echo "echo Loading /usr/lib/linux-image-${KERNEL_VERSION}/\${fdtfile}..." \
+ >> ${BOOT_CMD}
+ echo "load \${devtype} \${devnum}:${ROOT_PARTITION} \${fdt_addr_r}" \
+ "/usr/lib/linux-image-${KERNEL_VERSION}/\${fdtfile}" >> ${BOOT_CMD}
+fi
+
echo "echo Loading /boot/${KERNEL_FILE}-${KERNEL_VERSION}..." >> ${BOOT_CMD}
echo "load \${devtype} \${devnum}:\${distro_bootpart} \${kernel_addr_r}" \
"/boot/${KERNEL_FILE}-${KERNEL_VERSION}" >> ${BOOT_CMD}
diff --git a/meta/scripts/lib/wic/plugins/source/rootfs-u-boot.py b/meta/scripts/lib/wic/plugins/source/rootfs-u-boot.py
index 0b4f9eec..93600dc2 100644
--- a/meta/scripts/lib/wic/plugins/source/rootfs-u-boot.py
+++ b/meta/scripts/lib/wic/plugins/source/rootfs-u-boot.py
@@ -10,6 +10,7 @@
# Recognized sourceparams:
# - no_initrd=yes (disables initrd loading)
# - overlays=file.dtbo ... (overlay files)
+# - builtin_dt=no (use DT from uboot instead of kernel)
# - script_prepend=cmd;... (prepends U-Boot command)

import glob
@@ -82,6 +83,8 @@ class RootfsUBootPlugin(RootfsPlugin):
cfg.write('NO_INITRD="%s"\n' % no_initrd)
overlays = source_params.get('overlays') or ''
cfg.write('OVERLAYS="%s"\n' % overlays)
+ builtin_dt = source_params.get('builtin_dt') or ''
+ cfg.write('BUILTIN_DT="%s"\n' % builtin_dt)
script_prepend = source_params.get('script_prepend') or ''
# remove escapes from $\{var\} that are needed to avoid expansion by wic
script_prepend = re.sub(r'\$\\{([^\\]+)\\}', r'${\1}', script_prepend)
--
2.34.1

Felix Moessbauer

unread,
Sep 4, 2023, 1:52:29 AM9/4/23
to isar-...@googlegroups.com, florian...@siemens.com, jan.k...@siemens.com, daniel.bo...@siemens.com, Felix Moessbauer
The upstream kernel still misses the __symbol__ information in the
device tree. By that, overlays cannot be applied (DT was compiled
without -@). However, all u-boot internal device trees are compiled with
symbol information. By that, just use the one from u-boot.
Note, that the mmclbk entry changed in this device tree (mmclbk2
instead of mmclbk0). This change is reflected in the wks file. An
alternative option would be to use --use-uuid.

Signed-off-by: Felix Moessbauer <felix.mo...@siemens.com>
---
meta-isar/scripts/lib/wic/canned-wks/nanopi-neo.wks.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta-isar/scripts/lib/wic/canned-wks/nanopi-neo.wks.in b/meta-isar/scripts/lib/wic/canned-wks/nanopi-neo.wks.in
index de1c92c4..af5b6f08 100644
--- a/meta-isar/scripts/lib/wic/canned-wks/nanopi-neo.wks.in
+++ b/meta-isar/scripts/lib/wic/canned-wks/nanopi-neo.wks.in
@@ -1,10 +1,10 @@
#
-# Copyright (c) Siemens AG, 2018
+# Copyright (c) Siemens AG, 2018-2023
#
# SPDX-License-Identifier: MIT

part u-boot --source rawcopy --sourceparams "file=/usr/lib/u-boot/nanopi_neo/u-boot-sunxi-with-spl.bin" --no-table --align 8

-part / --source rootfs-u-boot --ondisk mmcblk0 --fstype ext4 --mkfs-extraopts "-T default" --label platform --align 1024 --active
+part / --source rootfs-u-boot --ondisk mmcblk2 --fstype ext4 --mkfs-extraopts "-T default" --sourceparams "builtin_dt=yes" --label platform --align 1024 --active

bootloader --append "rw rootwait"
--
2.34.1

Jan Kiszka

unread,
Sep 4, 2023, 2:05:15 AM9/4/23
to Felix Moessbauer, isar-...@googlegroups.com, florian...@siemens.com, daniel.bo...@siemens.com
Do we actually have to copy the U-Boot DT around? Why not updating
fdt_addr_r instead? Open question, didn't check the implications yet.

Jan
Siemens AG, Technology
Linux Expert Center

Jan Kiszka

unread,
Sep 4, 2023, 2:05:47 AM9/4/23
to Felix Moessbauer, isar-...@googlegroups.com, florian...@siemens.com, daniel.bo...@siemens.com
On 04.09.23 07:51, Felix Moessbauer wrote:
Looks good to me now. My question on patch 2 shouldn't block things.

Jan

MOESSBAUER, Felix

unread,
Sep 4, 2023, 3:10:12 AM9/4/23
to isar-...@googlegroups.com, Kiszka, Jan, Bovensiepen, Daniel (bovi), Bezdeka, Florian
The final DT needs to be in RAM at a location with some free tail
space, so we can resize it to later apply the overlays. This holds true
for the fdt_addr_r, but not necessarily for fdtcontroladdr.

Felix

Uladzimir Bely

unread,
Sep 22, 2023, 12:23:48 AM9/22/23
to Felix Moessbauer, isar-...@googlegroups.com
On Mon, 2023-09-04 at 05:51 +0000, 'Felix Moessbauer' via isar-users
wrote:
Applied to next, thanks.
Reply all
Reply to author
Forward
0 new messages