[PATCH v3 0/8] Fix and update VisionFive 2

30 views
Skip to first unread message

Jan Kiszka

unread,
Jan 17, 2024, 6:19:36 AM1/17/24
to isar-users, Felix Moessbauer
Debian has fixed riscv64 cross-building in sid, and we can now use the
chance to fix and update VisionFive 2. We can't go fully upstream with
that board yet as it would otherwise lack USB and PCIe support. But
there is a working for-upstream kernel branch on top of 6.6 that we can
use. In contrast, firmware is fully upstream now.

Changes in v3:
- go back to downstream kernel
- drop linux-mainline update
- update u-boot to 2024.01
- update to opensbi 1.4

Changes in v2:
- drop no longer need cross-build workaround
- update to kernel 6.6.10

Jan

Jan Kiszka (8):
crossvars: Account for PACKAGE_ARCH = "${BUILD_ARCH}"
meta-isar: jh7110-u-boot-spl-tool: Use BPN instead of PN
meta-isar: starfive-visionfive2: Use kernel DTB
meta-isar: jh7110-u-boot-spl-tool: Rework
meta-isar: starfive-visionfive2: Switch to upstream U-Boot
opensbi-starfive-visionfive2: Update to 1.4 release
meta-isar: starfive-visionfive2: Drop obsolete recipes
linux-starfive: Update to 6.6 upstream queue

.../conf/machine/starfive-visionfive2.conf | 13 ++----
.../jh7110-u-boot-spl-image/files/install | 1 -
.../jh7110-u-boot-spl-image/files/rules | 10 -----
.../jh7110-u-boot-spl-image_0.1.bb | 32 ---------------
...l_0.1.bb => jh7110-u-boot-spl-tool_0.2.bb} | 2 +-
.../opensbi/files/starfive-visionfive2-rules | 12 ++++++
.../files/starfive-visionfive2-rules.tmpl | 17 --------
...ensbi-starfive-visionfive2_1.2+20230310.bb | 33 ---------------
.../opensbi-starfive-visionfive2_1.4.bb | 25 +++++++++++
.../files/starfive-visionfive2-rules.tmpl | 35 ++++++++++++++++
...-starfive-visionfive2_2021.10+VF2-3.0.4.bb | 31 --------------
.../u-boot-starfive-visionfive2_2024.01.bb | 29 +++++++++++++
.../files/rules.tmpl | 12 ------
.../files/visionfive2-u-boot-firmware.install | 1 -
.../visionfive2-uboot-fit-image.its.tmpl | 41 -------------------
.../visionfive2-u-boot-firmware.bb | 38 -----------------
...sure-GP-relative-addressing-is-not-u.patch | 32 +++++++++++++++
.../linux/files/starfive2_extra.cfg | 6 ++-
.../linux/linux-starfive_5.15-visionfive2.bb | 19 ---------
.../linux/linux-starfive_6.6-visionfive2.bb | 21 ++++++++++
.../canned-wks/starfive-visionfive2.wks.in | 6 +--
meta/classes/crossvars.bbclass | 2 +-
22 files changed, 167 insertions(+), 251 deletions(-)
delete mode 100644 meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/install
delete mode 100644 meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/rules
delete mode 100644 meta-isar/recipes-bsp/jh7110-u-boot-spl-image/jh7110-u-boot-spl-image_0.1.bb
rename meta-isar/recipes-bsp/jh7110-u-boot-spl-tool/{jh7110-u-boot-spl-tool_0.1.bb => jh7110-u-boot-spl-tool_0.2.bb} (85%)
create mode 100644 meta-isar/recipes-bsp/opensbi/files/starfive-visionfive2-rules
delete mode 100644 meta-isar/recipes-bsp/opensbi/files/starfive-visionfive2-rules.tmpl
delete mode 100644 meta-isar/recipes-bsp/opensbi/opensbi-starfive-visionfive2_1.2+20230310.bb
create mode 100644 meta-isar/recipes-bsp/opensbi/opensbi-starfive-visionfive2_1.4.bb
create mode 100755 meta-isar/recipes-bsp/u-boot/files/starfive-visionfive2-rules.tmpl
delete mode 100644 meta-isar/recipes-bsp/u-boot/u-boot-starfive-visionfive2_2021.10+VF2-3.0.4.bb
create mode 100644 meta-isar/recipes-bsp/u-boot/u-boot-starfive-visionfive2_2024.01.bb
delete mode 100644 meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/rules.tmpl
delete mode 100644 meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/visionfive2-u-boot-firmware.install
delete mode 100644 meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/visionfive2-uboot-fit-image.its.tmpl
delete mode 100644 meta-isar/recipes-bsp/visionfive2-u-boot-firmware/visionfive2-u-boot-firmware.bb
create mode 100644 meta-isar/recipes-kernel/linux/files/0001-riscv-efistub-Ensure-GP-relative-addressing-is-not-u.patch
delete mode 100644 meta-isar/recipes-kernel/linux/linux-starfive_5.15-visionfive2.bb
create mode 100644 meta-isar/recipes-kernel/linux/linux-starfive_6.6-visionfive2.bb

--
2.35.3

Jan Kiszka

unread,
Jan 17, 2024, 6:19:37 AM1/17/24
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

There are no more reasons to use the vendor tree, U-Boot 2024.01
sufficiently supports the board.

Moving upstream allows for significant simplifications in the build. We
are now building OpenSBI first and are then using U-Boot to finish all
artifacts needed for the image.

The wks file is updated accordingly, switching the GUID of the U-Boot
partition to the one upstream is recommending. Unneeded options for the
first two partitions are dropped at this chance.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
.../conf/machine/starfive-visionfive2.conf | 10 ++----
.../opensbi/files/starfive-visionfive2-rules | 12 +++++++
.../files/starfive-visionfive2-rules.tmpl | 17 ---------
...ensbi-starfive-visionfive2_1.2+20230310.bb | 11 ++----
.../files/starfive-visionfive2-rules.tmpl | 35 +++++++++++++++++++
...-starfive-visionfive2_2021.10+VF2-3.0.4.bb | 31 ----------------
.../u-boot-starfive-visionfive2_2024.01.bb | 29 +++++++++++++++
.../canned-wks/starfive-visionfive2.wks.in | 4 +--
8 files changed, 82 insertions(+), 67 deletions(-)
create mode 100644 meta-isar/recipes-bsp/opensbi/files/starfive-visionfive2-rules
delete mode 100644 meta-isar/recipes-bsp/opensbi/files/starfive-visionfive2-rules.tmpl
create mode 100755 meta-isar/recipes-bsp/u-boot/files/starfive-visionfive2-rules.tmpl
delete mode 100644 meta-isar/recipes-bsp/u-boot/u-boot-starfive-visionfive2_2021.10+VF2-3.0.4.bb
create mode 100644 meta-isar/recipes-bsp/u-boot/u-boot-starfive-visionfive2_2024.01.bb

diff --git a/meta-isar/conf/machine/starfive-visionfive2.conf b/meta-isar/conf/machine/starfive-visionfive2.conf
index 806d914c..c7f72bb3 100644
--- a/meta-isar/conf/machine/starfive-visionfive2.conf
+++ b/meta-isar/conf/machine/starfive-visionfive2.conf
@@ -8,18 +8,12 @@ DISTRO_ARCH = "riscv64"
KERNEL_NAME ?= "starfive"

IMAGE_FSTYPES ?= "wic"
-
WKS_FILE ?= "starfive-visionfive2.wks.in"
IMAGER_INSTALL:wic += " \
- jh7110-u-boot-spl-image \
- visionfive2-u-boot-firmware \
+ u-boot-starfive-visionfive2 \
${SYSTEMD_BOOTLOADER_INSTALL}"
-IMAGER_BUILD_DEPS += " \
- jh7110-u-boot-spl-image \
- visionfive2-u-boot-firmware"
+IMAGER_BUILD_DEPS += "u-boot-starfive-visionfive2"

-# DTB file for OpenSBI
-DTB_UBOOT_JH7110_VF2 = "starfive_visionfive2.dtb"
# DTB file for booting
DTB_VISIONFIVE2 = "jh7110-visionfive-v2.dtb"
DTB_FILES = "starfive/${DTB_VISIONFIVE2}"
diff --git a/meta-isar/recipes-bsp/opensbi/files/starfive-visionfive2-rules b/meta-isar/recipes-bsp/opensbi/files/starfive-visionfive2-rules
new file mode 100644
index 00000000..452ff356
--- /dev/null
+++ b/meta-isar/recipes-bsp/opensbi/files/starfive-visionfive2-rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+export CROSS_COMPILE=$(DEB_HOST_GNU_TYPE)-
+endif
+
+override_dh_auto_build:
+ CFLAGS= LDFLAGS= $(MAKE) $(PARALLEL_MAKE) \
+ PLATFORM=generic FW_TEXT_START=0x40000000 FW_OPTIONS=0
+
+%:
+ dh $@
diff --git a/meta-isar/recipes-bsp/opensbi/files/starfive-visionfive2-rules.tmpl b/meta-isar/recipes-bsp/opensbi/files/starfive-visionfive2-rules.tmpl
deleted file mode 100644
index 5f35c1c2..00000000
--- a/meta-isar/recipes-bsp/opensbi/files/starfive-visionfive2-rules.tmpl
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/make -f
-
-ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
-export CROSS_COMPILE=$(DEB_HOST_GNU_TYPE)-
-endif
-
-UBOOT_DTB_FILE := /usr/share/u-boot/starfive-visionfive2/${DTB_UBOOT_JH7110_VF2}
-FW_TEXT_START := 0x40000000
-
-override_dh_auto_build:
- CFLAGS= LDFLAGS= $(MAKE) $(PARALLEL_MAKE) PLATFORM=generic \
- FW_PAYLOAD_PATH=/usr/lib/u-boot/starfive-visionfive2/u-boot.bin \
- FW_FDT_PATH=$(UBOOT_DTB_FILE) \
- FW_TEXT_START=$(FW_TEXT_START)
-
-%:
- dh $@
diff --git a/meta-isar/recipes-bsp/opensbi/opensbi-starfive-visionfive2_1.2+20230310.bb b/meta-isar/recipes-bsp/opensbi/opensbi-starfive-visionfive2_1.2+20230310.bb
index f6d6905a..afbba0f3 100644
--- a/meta-isar/recipes-bsp/opensbi/opensbi-starfive-visionfive2_1.2+20230310.bb
+++ b/meta-isar/recipes-bsp/opensbi/opensbi-starfive-visionfive2_1.2+20230310.bb
@@ -9,25 +9,18 @@ DESCRIPTION = "OpenSBI firmware for StarFive VisionFive 2"

SRC_URI = " \
git://github.com/riscv-software-src/opensbi.git;destsuffix=opensbi-${PV};protocol=https;branch=master \
- file://starfive-visionfive2-rules.tmpl"
+ file://starfive-visionfive2-rules"
# required patches are not yet part of a release, but will be in 1.3
SRCREV = "2868f26131308ff345382084681ea89c5b0159f1"

S = "${WORKDIR}/opensbi-${PV}"
-TEMPLATE_FILES += "starfive-visionfive2-rules.tmpl"
-TEMPLATE_VARS += "DTB_UBOOT_JH7110_VF2"
-
-DEPENDS = "u-boot-starfive-visionfive2"
-DEBIAN_BUILD_DEPENDS = " \
- u-boot-starfive-visionfive2, \
- u-boot-starfive-visionfive2-dev"

do_prepare_build[cleandirs] += "${S}/debian"
do_prepare_build() {
cp ${WORKDIR}/starfive-visionfive2-rules ${WORKDIR}/rules
deb_debianize

- echo "build/platform/generic/firmware/fw_payload.bin /usr/lib/opensbi/starfive-visionfive2/" > ${S}/debian/install
+ echo "build/platform/generic/firmware/fw_dynamic.bin /usr/lib/opensbi/starfive-visionfive2/" > ${S}/debian/install
}

COMPATIBLE_MACHINE = "starfive-visionfive2"
diff --git a/meta-isar/recipes-bsp/u-boot/files/starfive-visionfive2-rules.tmpl b/meta-isar/recipes-bsp/u-boot/files/starfive-visionfive2-rules.tmpl
new file mode 100755
index 00000000..01bb9156
--- /dev/null
+++ b/meta-isar/recipes-bsp/u-boot/files/starfive-visionfive2-rules.tmpl
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+# Debian rules for custom U-Boot build
+#
+# This software is a part of ISAR.
+# Copyright (c) Siemens AG, 2018-2021
+#
+# SPDX-License-Identifier: MIT
+
+ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+export CROSS_COMPILE=$(DEB_HOST_GNU_TYPE)-
+SET_CROSS_BUILD_TOOLS=CROSS_BUILD_TOOLS=y
+endif
+
+override_dh_auto_build:
+ $(MAKE) $(PARALLEL_MAKE) ${U_BOOT_CONFIG}
+ $(MAKE) $(PARALLEL_MAKE) flash.bin OPENSBI=/usr/lib/opensbi/starfive-visionfive2/fw_dynamic.bin
+ spl_tool -c -f spl/u-boot-spl.bin
+ $(MAKE) -n u-boot-initial-env >/dev/null 2>&1; if [ $$? -ne 2 ]; then \
+ $(MAKE) $(PARALLEL_MAKE) u-boot-initial-env; \
+ else \
+ ./scripts/get_default_envs.sh >u-boot-initial-env; \
+ fi
+ $(MAKE) $(PARALLEL_MAKE) $(SET_CROSS_BUILD_TOOLS) NO_SDL=1 tools-only envtools
+
+override_dh_auto_install:
+ mv tools/env/lib.a tools/env/libubootenv.a
+
+override_dh_auto_test:
+
+override_dh_strip:
+ dh_strip -X libubootenv.a
+
+%:
+ dh $@ --parallel
diff --git a/meta-isar/recipes-bsp/u-boot/u-boot-starfive-visionfive2_2021.10+VF2-3.0.4.bb b/meta-isar/recipes-bsp/u-boot/u-boot-starfive-visionfive2_2021.10+VF2-3.0.4.bb
deleted file mode 100644
index 9e1b7251..00000000
--- a/meta-isar/recipes-bsp/u-boot/u-boot-starfive-visionfive2_2021.10+VF2-3.0.4.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (c) Siemens AG, 2023
-#
-# SPDX-License-Identifier: MIT
-
-require recipes-bsp/u-boot/u-boot-custom.inc
-
-SRC_URI += "git://github.com/starfive-tech/u-boot.git;nobranch=1;protocol=https;destsuffix=u-boot-${PV}"
-SRCREV = "b6e2b0e85c774a18ae668223a6e5f7d335895243"
-
-DEBIAN_BUILD_DEPENDS .= ", libssl-dev, libssl-dev:native"
-
-U_BOOT_CONFIG = "starfive_visionfive2_defconfig"
-U_BOOT_BIN = "u-boot.bin"
-U_BOOT_SPL_BIN = "spl/u-boot-spl.bin"
-
-S = "${WORKDIR}/u-boot-${PV}"
-
-# install dtb files for opensbi
-do_prepare_build[cleandirs] += "${S}/debian"
-do_prepare_build:append() {
- # also build and install spl component
- sed -i 's|${U_BOOT_BIN}|${U_BOOT_BIN} ${U_BOOT_SPL_BIN}|g' ${S}/debian/rules
- echo "${U_BOOT_SPL_BIN} usr/lib/u-boot/${MACHINE}/" \
- >> ${S}/debian/u-boot-${MACHINE}.install
- # install device tree
- echo "arch/riscv/dts/*.dtb usr/share/u-boot/${MACHINE}/" \
- >> ${S}/debian/u-boot-${MACHINE}-dev.install
-}
-
-COMPATIBLE_MACHINE = "starfive-visionfive2"
diff --git a/meta-isar/recipes-bsp/u-boot/u-boot-starfive-visionfive2_2024.01.bb b/meta-isar/recipes-bsp/u-boot/u-boot-starfive-visionfive2_2024.01.bb
new file mode 100644
index 00000000..9f819c3e
--- /dev/null
+++ b/meta-isar/recipes-bsp/u-boot/u-boot-starfive-visionfive2_2024.01.bb
@@ -0,0 +1,29 @@
+#
+# Copyright (c) Siemens AG, 2023-2024
+#
+# SPDX-License-Identifier: MIT
+
+require recipes-bsp/u-boot/u-boot-custom.inc
+
+COMPATIBLE_MACHINE = "starfive-visionfive2"
+
+SRC_URI += "https://ftp.denx.de/pub/u-boot/u-boot-${PV}.tar.bz2 \
+ file://starfive-visionfive2-rules.tmpl"
+SRC_URI[sha256sum] = "b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3"
+
+DEPENDS += "opensbi-starfive-visionfive2 jh7110-u-boot-spl-tool-native"
+DEBIAN_BUILD_DEPENDS .= ", opensbi-starfive-visionfive2, \
+ jh7110-u-boot-spl-tool:native, \
+ swig, python3-dev:native, python3-setuptools, \
+ libssl-dev:${DISTRO_ARCH}, libssl-dev:native"
+
+U_BOOT_CONFIG = "starfive_visionfive2_defconfig"
+U_BOOT_BIN = "u-boot.itb spl/u-boot-spl.bin.normal.out"
+
+TEMPLATE_FILES += "starfive-visionfive2-rules.tmpl"
+
+S = "${WORKDIR}/u-boot-${PV}"
+
+do_prepare_build:append() {
+ cp ${WORKDIR}/starfive-visionfive2-rules ${S}/debian/rules
+}
diff --git a/meta-isar/scripts/lib/wic/canned-wks/starfive-visionfive2.wks.in b/meta-isar/scripts/lib/wic/canned-wks/starfive-visionfive2.wks.in
index 99156f81..ed8a3b71 100644
--- a/meta-isar/scripts/lib/wic/canned-wks/starfive-visionfive2.wks.in
+++ b/meta-isar/scripts/lib/wic/canned-wks/starfive-visionfive2.wks.in
@@ -12,9 +12,9 @@
# This is required to boot efi with the correct device tree, which is included in the fit image.

# SPL
-part --source rawcopy --sourceparams "file=/usr/share/jh7110-uboot-spl-image/u-boot-spl.bin.normal.out" --ondisk mmcblk1 --fixed-size 2M --offset 2M --part-type 2E54B353-1271-4842-806F-E436D6AF6985
+part --source rawcopy --sourceparams "file=/usr/lib/u-boot/starfive-visionfive2/u-boot-spl.bin.normal.out" --fixed-size 2M --part-type 2E54B353-1271-4842-806F-E436D6AF6985
# U-Boot FIT
-part --source rawcopy --sourceparams "file=/usr/share/visionfive2-u-boot-firmware/visionfive2_fw_payload.img" --ondisk mmcblk1 --fixed-size 4M --offset 4M --part-type 5B193300-FC78-40CD-8002-E86C45580B47
+part --source rawcopy --sourceparams "file=/usr/lib/u-boot/starfive-visionfive2/u-boot.itb" --fixed-size 4M --part-type BC13C2FF-59E6-4262-A352-B275FD6F7172
# EFI
part /boot --source bootimg-efi-isar --sourceparams "loader=systemd-boot,dtb=${DTB_VISIONFIVE2}" --use-uuid --label efi --part-type EF00 --align 1024
# rootfs
--
2.35.3

Jan Kiszka

unread,
Jan 17, 2024, 6:19:37 AM1/17/24
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

This will be needed when switching to upstream U-Boot as the DTB there
is not compatible with currently used downstream kernel.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/conf/machine/starfive-visionfive2.conf | 3 ++-
.../scripts/lib/wic/canned-wks/starfive-visionfive2.wks.in | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/meta-isar/conf/machine/starfive-visionfive2.conf b/meta-isar/conf/machine/starfive-visionfive2.conf
index d96041fc..806d914c 100644
--- a/meta-isar/conf/machine/starfive-visionfive2.conf
+++ b/meta-isar/conf/machine/starfive-visionfive2.conf
@@ -21,4 +21,5 @@ IMAGER_BUILD_DEPS += " \
# DTB file for OpenSBI
DTB_UBOOT_JH7110_VF2 = "starfive_visionfive2.dtb"
# DTB file for booting
-DTB_FILES = "starfive/jh7110-visionfive-v2.dtb"
+DTB_VISIONFIVE2 = "jh7110-visionfive-v2.dtb"
+DTB_FILES = "starfive/${DTB_VISIONFIVE2}"
diff --git a/meta-isar/scripts/lib/wic/canned-wks/starfive-visionfive2.wks.in b/meta-isar/scripts/lib/wic/canned-wks/starfive-visionfive2.wks.in
index 0f3d76a9..99156f81 100644
--- a/meta-isar/scripts/lib/wic/canned-wks/starfive-visionfive2.wks.in
+++ b/meta-isar/scripts/lib/wic/canned-wks/starfive-visionfive2.wks.in
@@ -16,7 +16,7 @@ part --source rawcopy --sourceparams "file=/usr/share/jh7110-uboot-spl-image/u-b
# U-Boot FIT
part --source rawcopy --sourceparams "file=/usr/share/visionfive2-u-boot-firmware/visionfive2_fw_payload.img" --ondisk mmcblk1 --fixed-size 4M --offset 4M --part-type 5B193300-FC78-40CD-8002-E86C45580B47
# EFI
-part /boot --source bootimg-efi-isar --sourceparams "loader=systemd-boot" --use-uuid --label efi --part-type EF00 --align 1024
+part /boot --source bootimg-efi-isar --sourceparams "loader=systemd-boot,dtb=${DTB_VISIONFIVE2}" --use-uuid --label efi --part-type EF00 --align 1024
# rootfs
part / --source rootfs --use-uuid --fstype ext4 --mkfs-extraopts "-T default" --label image --active --align 1024 --exclude-path=boot/

--
2.35.3

Jan Kiszka

unread,
Jan 17, 2024, 6:19:37 AM1/17/24
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

95427cc8 forgot about the case that PACKAGE_ARCH is to be derived from
BUILD_ARCH - while that is considering PACKAGE_ARCH before setting
BUILD_ARCH at all. Account for that case by adding the unresolved value
of PACKAGE_ARCH into the cross-build case because that is what the
statement is about: Set PACKAGE_ARCH to HOST_ARCH only if cross-building
is enabled for a package.

Fixes: 95427cc8a760 ("crossvars: Adjust logic to account for -native package builds in non-cross setups")
Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta/classes/crossvars.bbclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/classes/crossvars.bbclass b/meta/classes/crossvars.bbclass
index a7834b99..828afe46 100644
--- a/meta/classes/crossvars.bbclass
+++ b/meta/classes/crossvars.bbclass
@@ -22,7 +22,7 @@ python __anonymous() {

if distro_arch != host_arch and \
(package_arch == host_arch or \
- (package_arch in [distro_arch, compat_arch] and mode == "1")):
+ (package_arch in [distro_arch, compat_arch, '${BUILD_ARCH}'] and mode == "1")):
d.setVar('BUILD_ARCH', host_arch)
schroot_dir = d.getVar('SCHROOT_HOST_DIR', False)
sbuild_dep = "sbuild-chroot-host" + flavor_suffix + ":do_build"
--
2.35.3

Jan Kiszka

unread,
Jan 17, 2024, 6:19:38 AM1/17/24
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

Install the binary as normal tool under /usr/bin to simplify its usage.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/rules | 2 +-
...110-u-boot-spl-tool_0.1.bb => jh7110-u-boot-spl-tool_0.2.bb} | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
rename meta-isar/recipes-bsp/jh7110-u-boot-spl-tool/{jh7110-u-boot-spl-tool_0.1.bb => jh7110-u-boot-spl-tool_0.2.bb} (85%)

diff --git a/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/rules b/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/rules
index 6a25dd36..a8b2c6b8 100644
--- a/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/rules
+++ b/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/rules
@@ -4,7 +4,7 @@ U_BOOT_SPL_BIN := /usr/lib/u-boot/starfive-visionfive2/u-boot-spl.bin

override_dh_auto_build:
cp $(U_BOOT_SPL_BIN) u-boot-spl.bin
- /usr/lib/jh7110-uboot-spl-tool/spl_tool -c -f u-boot-spl.bin
+ spl_tool -c -f u-boot-spl.bin

%:
dh \$@
diff --git a/meta-isar/recipes-bsp/jh7110-u-boot-spl-tool/jh7110-u-boot-spl-tool_0.1.bb b/meta-isar/recipes-bsp/jh7110-u-boot-spl-tool/jh7110-u-boot-spl-tool_0.2.bb
similarity index 85%
rename from meta-isar/recipes-bsp/jh7110-u-boot-spl-tool/jh7110-u-boot-spl-tool_0.1.bb
rename to meta-isar/recipes-bsp/jh7110-u-boot-spl-tool/jh7110-u-boot-spl-tool_0.2.bb
index 37b52ab3..6c998029 100644
--- a/meta-isar/recipes-bsp/jh7110-u-boot-spl-tool/jh7110-u-boot-spl-tool_0.1.bb
+++ b/meta-isar/recipes-bsp/jh7110-u-boot-spl-tool/jh7110-u-boot-spl-tool_0.2.bb
@@ -16,7 +16,7 @@ S = "${WORKDIR}/tools/spl_tool"
do_prepare_build[cleandirs] += "${S}/debian"
do_prepare_build(){
deb_debianize
- echo "spl_tool usr/lib/jh7110-uboot-spl-tool" > ${S}/debian/${BPN}.install
+ echo "spl_tool usr/bin" > ${S}/debian/${BPN}.install
}

COMPATIBLE_MACHINE = "starfive-visionfive2"
--
2.35.3

Jan Kiszka

unread,
Jan 17, 2024, 6:19:38 AM1/17/24
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
...2_1.2+20230310.bb => opensbi-starfive-visionfive2_1.4.bb} | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
rename meta-isar/recipes-bsp/opensbi/{opensbi-starfive-visionfive2_1.2+20230310.bb => opensbi-starfive-visionfive2_1.4.bb} (70%)

diff --git a/meta-isar/recipes-bsp/opensbi/opensbi-starfive-visionfive2_1.2+20230310.bb b/meta-isar/recipes-bsp/opensbi/opensbi-starfive-visionfive2_1.4.bb
similarity index 70%
rename from meta-isar/recipes-bsp/opensbi/opensbi-starfive-visionfive2_1.2+20230310.bb
rename to meta-isar/recipes-bsp/opensbi/opensbi-starfive-visionfive2_1.4.bb
index afbba0f3..766d1ed7 100644
--- a/meta-isar/recipes-bsp/opensbi/opensbi-starfive-visionfive2_1.2+20230310.bb
+++ b/meta-isar/recipes-bsp/opensbi/opensbi-starfive-visionfive2_1.4.bb
@@ -8,10 +8,9 @@ inherit dpkg
DESCRIPTION = "OpenSBI firmware for StarFive VisionFive 2"

SRC_URI = " \
- git://github.com/riscv-software-src/opensbi.git;destsuffix=opensbi-${PV};protocol=https;branch=master \
+ https://github.com/riscv-software-src/opensbi/archive/refs/tags/v${PV}.tar.gz;downloadfilename=opensbi-${PV}.tar.gz \
file://starfive-visionfive2-rules"
-# required patches are not yet part of a release, but will be in 1.3
-SRCREV = "2868f26131308ff345382084681ea89c5b0159f1"
+SRC_URI[sha256sum] = "319b62a4186fbce9b81a0c5f0ec9f003a10c808397a72138bc9745d9b87b1eb1"

S = "${WORKDIR}/opensbi-${PV}"

--
2.35.3

Jan Kiszka

unread,
Jan 17, 2024, 6:19:38 AM1/17/24
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

This is compatible with Debian sid, maintains all enabled board
features, and fixes the out-of-tree module build.

We currently need one extra patch (that is also pending upstream) to fix
breakages in the EFI stub with latest binutils coming via sid.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
.../conf/machine/starfive-visionfive2.conf | 2 +-
...sure-GP-relative-addressing-is-not-u.patch | 32 +++++++++++++++++++
.../linux/files/starfive2_extra.cfg | 6 ++--
.../linux/linux-starfive_5.15-visionfive2.bb | 19 -----------
.../linux/linux-starfive_6.6-visionfive2.bb | 21 ++++++++++++
5 files changed, 58 insertions(+), 22 deletions(-)
create mode 100644 meta-isar/recipes-kernel/linux/files/0001-riscv-efistub-Ensure-GP-relative-addressing-is-not-u.patch
delete mode 100644 meta-isar/recipes-kernel/linux/linux-starfive_5.15-visionfive2.bb
create mode 100644 meta-isar/recipes-kernel/linux/linux-starfive_6.6-visionfive2.bb

diff --git a/meta-isar/conf/machine/starfive-visionfive2.conf b/meta-isar/conf/machine/starfive-visionfive2.conf
index c7f72bb3..ed2828f1 100644
--- a/meta-isar/conf/machine/starfive-visionfive2.conf
+++ b/meta-isar/conf/machine/starfive-visionfive2.conf
@@ -15,5 +15,5 @@ IMAGER_INSTALL:wic += " \
IMAGER_BUILD_DEPS += "u-boot-starfive-visionfive2"

# DTB file for booting
-DTB_VISIONFIVE2 = "jh7110-visionfive-v2.dtb"
+DTB_VISIONFIVE2 = "jh7110-starfive-visionfive-2-v1.3b.dtb"
DTB_FILES = "starfive/${DTB_VISIONFIVE2}"
diff --git a/meta-isar/recipes-kernel/linux/files/0001-riscv-efistub-Ensure-GP-relative-addressing-is-not-u.patch b/meta-isar/recipes-kernel/linux/files/0001-riscv-efistub-Ensure-GP-relative-addressing-is-not-u.patch
new file mode 100644
index 00000000..7db1c70f
--- /dev/null
+++ b/meta-isar/recipes-kernel/linux/files/0001-riscv-efistub-Ensure-GP-relative-addressing-is-not-u.patch
@@ -0,0 +1,32 @@
+From 80a71d31e35ac5f90e85b0b52cd080a974b91e8d Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.k...@siemens.com>
+Date: Fri, 12 Jan 2024 17:17:27 +0100
+Subject: [PATCH] riscv/efistub: Ensure GP-relative addressing is not used
+
+The cflags for the RISC-V efistub were missing -mno-relax, thus were
+under the risk that the compiler could use GP-relative addressing. That
+happened for _edata with binutils-2.41 and kernel 6.1, causing the
+relocation to fail due to an invalid kernel_size in handle_kernel_image.
+It was not yet observed with newer versions, but that may just be luck.
+
+Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
+---
+ drivers/firmware/efi/libstub/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
+index a1157c2a7170..f54715672d52 100644
+--- a/drivers/firmware/efi/libstub/Makefile
++++ b/drivers/firmware/efi/libstub/Makefile
+@@ -28,7 +28,7 @@ cflags-$(CONFIG_ARM) += -DEFI_HAVE_STRLEN -DEFI_HAVE_STRNLEN \
+ -DEFI_HAVE_MEMCHR -DEFI_HAVE_STRRCHR \
+ -DEFI_HAVE_STRCMP -fno-builtin -fpic \
+ $(call cc-option,-mno-single-pic-base)
+-cflags-$(CONFIG_RISCV) += -fpic
++cflags-$(CONFIG_RISCV) += -fpic -mno-relax
+ cflags-$(CONFIG_LOONGARCH) += -fpie
+
+ cflags-$(CONFIG_EFI_PARAMS_FROM_FDT) += -I$(srctree)/scripts/dtc/libfdt
+--
+2.35.3
+
diff --git a/meta-isar/recipes-kernel/linux/files/starfive2_extra.cfg b/meta-isar/recipes-kernel/linux/files/starfive2_extra.cfg
index d11c28de..9649ec87 100644
--- a/meta-isar/recipes-kernel/linux/files/starfive2_extra.cfg
+++ b/meta-isar/recipes-kernel/linux/files/starfive2_extra.cfg
@@ -1,3 +1,5 @@
# additional configuration to support stock debian userlands
-CONFIG_BINFMT_MISC=y
-CONFIG_SQUASHFS=m
+CONFIG_NLS_ISO8859_1=m
+
+# only complicates the build
+# CONFIG_MODULE_COMPRESS_ZSTD is not set
diff --git a/meta-isar/recipes-kernel/linux/linux-starfive_5.15-visionfive2.bb b/meta-isar/recipes-kernel/linux/linux-starfive_5.15-visionfive2.bb
deleted file mode 100644
index e9e0bf4a..00000000
--- a/meta-isar/recipes-kernel/linux/linux-starfive_5.15-visionfive2.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (c) Siemens AG, 2023
-#
-# SPDX-License-Identifier: MIT
-
-require recipes-kernel/linux/linux-custom.inc
-
-SRC_URI += " \
- git://github.com/starfive-tech/linux.git;protocol=https;branch=JH7110_VisionFive2_devel;destsuffix=linux-visionfive-${PV} \
- file://starfive2_extra.cfg"
-SRCREV = "a87c6861c6d96621026ee53b94f081a1a00a4cc7"
-
-S = "${WORKDIR}/linux-visionfive-${PV}"
-
-KERNEL_DEFCONFIG = "starfive_visionfive2_defconfig"
-
-LINUX_VERSION_EXTENSION = "-isar"
-
-COMPATIBLE_MACHINE = "starfive-visionfive2"
diff --git a/meta-isar/recipes-kernel/linux/linux-starfive_6.6-visionfive2.bb b/meta-isar/recipes-kernel/linux/linux-starfive_6.6-visionfive2.bb
new file mode 100644
index 00000000..f4dd5c9a
--- /dev/null
+++ b/meta-isar/recipes-kernel/linux/linux-starfive_6.6-visionfive2.bb
@@ -0,0 +1,21 @@
+#
+# Copyright (c) Siemens AG, 2023-2024
+#
+# SPDX-License-Identifier: MIT
+
+require recipes-kernel/linux/linux-custom.inc
+
+SRC_URI += " \
+ https://github.com/starfive-tech/linux/archive/${SRCREV}.tar.gz;downloadfilename=linux-starfive-${SRCREV}.tar.gz \
+ file://0001-riscv-efistub-Ensure-GP-relative-addressing-is-not-u.patch \
+ file://starfive2_extra.cfg"
+SRCREV = "9fe004eaf1aa5b23bd5d03b4cfe9c3858bd884c4"
+SRC_URI[sha256sum] = "9eaf7659aa57e2c5b399b7b33076f1376ec43ef343680e0a57e0a2a9bef6c0ae"
+
+S = "${WORKDIR}/linux-${SRCREV}"
+
+KERNEL_DEFCONFIG = "starfive_visionfive2_defconfig"
+
+LINUX_VERSION_EXTENSION = "-isar"
+
+COMPATIBLE_MACHINE = "starfive-visionfive2"
--
2.35.3

Jan Kiszka

unread,
Jan 17, 2024, 6:19:39 AM1/17/24
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

We are now using U-Boot for what these recipes where once introduced.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
.../jh7110-u-boot-spl-image/files/install | 1 -
.../jh7110-u-boot-spl-image/files/rules | 10 -----
.../jh7110-u-boot-spl-image_0.1.bb | 32 ---------------
.../files/rules.tmpl | 12 ------
.../files/visionfive2-u-boot-firmware.install | 1 -
.../visionfive2-uboot-fit-image.its.tmpl | 41 -------------------
.../visionfive2-u-boot-firmware.bb | 38 -----------------
7 files changed, 135 deletions(-)
delete mode 100644 meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/install
delete mode 100644 meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/rules
delete mode 100644 meta-isar/recipes-bsp/jh7110-u-boot-spl-image/jh7110-u-boot-spl-image_0.1.bb
delete mode 100644 meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/rules.tmpl
delete mode 100644 meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/visionfive2-u-boot-firmware.install
delete mode 100644 meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/visionfive2-uboot-fit-image.its.tmpl
delete mode 100644 meta-isar/recipes-bsp/visionfive2-u-boot-firmware/visionfive2-u-boot-firmware.bb

diff --git a/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/install b/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/install
deleted file mode 100644
index c300f842..00000000
--- a/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/install
+++ /dev/null
@@ -1 +0,0 @@
-u-boot-spl.bin.normal.out usr/share/jh7110-uboot-spl-image
diff --git a/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/rules b/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/rules
deleted file mode 100644
index a8b2c6b8..00000000
--- a/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/files/rules
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/make -f
-
-U_BOOT_SPL_BIN := /usr/lib/u-boot/starfive-visionfive2/u-boot-spl.bin
-
-override_dh_auto_build:
- cp $(U_BOOT_SPL_BIN) u-boot-spl.bin
- spl_tool -c -f u-boot-spl.bin
-
-%:
- dh \$@
diff --git a/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/jh7110-u-boot-spl-image_0.1.bb b/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/jh7110-u-boot-spl-image_0.1.bb
deleted file mode 100644
index c004c86c..00000000
--- a/meta-isar/recipes-bsp/jh7110-u-boot-spl-image/jh7110-u-boot-spl-image_0.1.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (c) Siemens AG, 2023
-#
-# SPDX-License-Identifier: MIT
-
-inherit dpkg
-
-SRC_URI = "file://rules file://install"
-
-DESCRIPTION = "StarFive VisionFive 2 u-boot SPL"
-DEPENDS = "jh7110-u-boot-spl-tool-native u-boot-starfive-visionfive2"
-DEBIAN_BUILD_DEPENDS = "jh7110-u-boot-spl-tool:native, u-boot-starfive-visionfive2:${DISTRO_ARCH}"
-
-# this is a host tool
-PACKAGE_ARCH = "${BUILD_ARCH}"
-
-do_prepare_build[cleandirs] += "${S}/debian"
-do_prepare_build(){
- deb_debianize
- cp ${WORKDIR}/install ${S}/debian/
-}
-
-do_deploy() {
- dpkg --fsys-tarfile ${WORKDIR}/jh7110-u-boot-spl-image_${PV}*.deb | \
- tar xOf - "./usr/share/jh7110-uboot-spl-image/u-boot-spl.bin.normal.out" \
- > "${DEPLOY_DIR_IMAGE}/u-boot-spl.bin.normal.out"
-}
-
-addtask deploy after do_dpkg_build before do_build
-do_deploy[dirs] = "${DEPLOY_DIR_IMAGE}"
-
-COMPATIBLE_MACHINE = "starfive-visionfive2"
diff --git a/meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/rules.tmpl b/meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/rules.tmpl
deleted file mode 100644
index 4826f7d6..00000000
--- a/meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/rules.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/make -f
-
-KERNEL_VERSION=$(shell find /usr/lib/ -maxdepth 1 -type d -name 'linux-image-*' | head -1 | sed 's/.*linux-image-//g')
-
-override_dh_auto_configure:
- sed -i 's|<KERNEL_VERSION>|$(KERNEL_VERSION)|g' visionfive2-uboot-fit-image.its
-
-override_dh_auto_build:
- mkimage -A riscv -O u-boot -f ${IMAGE_ITS_FILE} visionfive2_fw_payload.img
-
-%:
- dh $@
diff --git a/meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/visionfive2-u-boot-firmware.install b/meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/visionfive2-u-boot-firmware.install
deleted file mode 100644
index d1bdf6d6..00000000
--- a/meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/visionfive2-u-boot-firmware.install
+++ /dev/null
@@ -1 +0,0 @@
-visionfive2_fw_payload.img usr/share/visionfive2-u-boot-firmware
diff --git a/meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/visionfive2-uboot-fit-image.its.tmpl b/meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/visionfive2-uboot-fit-image.its.tmpl
deleted file mode 100644
index 4cbe9318..00000000
--- a/meta-isar/recipes-bsp/visionfive2-u-boot-firmware/files/visionfive2-uboot-fit-image.its.tmpl
+++ /dev/null
@@ -1,41 +0,0 @@
-/dts-v1/;
-
-/ {
- description = "U-boot-spl FIT image for JH7110 VisionFive2";
- #address-cells = <2>;
-
- images {
- firmware {
- description = "u-boot";
- data = /incbin/("/usr/lib/opensbi/starfive-visionfive2/fw_payload.bin");
- type = "firmware";
- arch = "riscv";
- os = "u-boot";
- load = <0x0 0x40000000>;
- entry = <0x0 0x40000000>;
- compression = "none";
- };
- fdt {
- description = "DTB";
- data = /incbin/("/usr/lib/linux-image-<KERNEL_VERSION>/${DTB_FILES}");
- type = "flat_dt";
- arch = "riscv";
- compression = "none";
- load = <0x46000000>;
- entry = <0x46000000>;
- hash {
- algo = "sha1";
- };
- };
- };
-
- configurations {
- default = "config-1";
-
- config-1 {
- description = "U-boot-spl FIT config for JH7110 VisionFive2";
- firmware = "firmware";
- fdt = "fdt";
- };
- };
-};
diff --git a/meta-isar/recipes-bsp/visionfive2-u-boot-firmware/visionfive2-u-boot-firmware.bb b/meta-isar/recipes-bsp/visionfive2-u-boot-firmware/visionfive2-u-boot-firmware.bb
deleted file mode 100644
index 4fe91b45..00000000
--- a/meta-isar/recipes-bsp/visionfive2-u-boot-firmware/visionfive2-u-boot-firmware.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Copyright (c) Siemens AG, 2023
-#
-# SPDX-License-Identifier: MIT
-
-inherit dpkg
-
-DESCRIPTION = "StarFive VisionFive 2 u-boot firmware"
-
-IMAGE_ITS_FILE = "visionfive2-uboot-fit-image.its"
-SRC_URI = " \
- file://${IMAGE_ITS_FILE}.tmpl \
- file://rules.tmpl \
- file://visionfive2-u-boot-firmware.install"
-
-DEPENDS += "opensbi-starfive-visionfive2 linux-image-${KERNEL_NAME}"
-DEBIAN_BUILD_DEPENDS += "opensbi-starfive-visionfive2, u-boot-tools, device-tree-compiler, linux-image-${KERNEL_NAME}"
-
-TEMPLATE_FILES = "${IMAGE_ITS_FILE}.tmpl rules.tmpl"
-TEMPLATE_VARS = "IMAGE_ITS_FILE DTB_FILES"
-
-do_prepare_build[cleandirs] += "${S}/debian"
-do_prepare_build(){
- cp ${WORKDIR}/${IMAGE_ITS_FILE} ${S}/
- cp ${WORKDIR}/visionfive2-u-boot-firmware.install ${S}/debian/
- deb_debianize
-}
-
-do_deploy() {
- dpkg --fsys-tarfile ${WORKDIR}/visionfive2-u-boot-firmware_${PV}*.deb | \
- tar xOf - "./usr/share/visionfive2-u-boot-firmware/visionfive2_fw_payload.img" \
- > "${DEPLOY_DIR_IMAGE}/visionfive2_fw_payload.img"
-}
-
-addtask deploy after do_dpkg_build before do_build
-do_deploy[dirs] = "${DEPLOY_DIR_IMAGE}"
-
-COMPATIBLE_MACHINE = "starfive-visionfive2"
--
2.35.3

Uladzimir Bely

unread,
Feb 1, 2024, 6:47:43 AM2/1/24
to Jan Kiszka, isar-users
Applied to next, thanks.

Jan Kiszka

unread,
Feb 1, 2024, 8:28:49 AM2/1/24
to Uladzimir Bely, isar-users
Great. May also soon build again, currently blocked by
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1062339

Jan

--
Siemens AG, Technology
Linux Expert Center

Reply all
Reply to author
Forward
0 new messages