[PATCH 3/5] meta: Allow cross-compilation for RISC-V

33 views
Skip to first unread message

Jan Kiszka

unread,
Jan 10, 2020, 12:26:08 PM1/10/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

This arch still lacks crossbuild-essential-riscv64, so we need to stub
some pieces. Specifically, we have to create a dummy package of the same
name so that mk-build-deps works fine. For buildchroot-host, we replace
the package by open-coding its dependencies.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta/classes/dpkg-base.bbclass | 2 ++
meta/recipes-devtools/buildchroot/buildchroot-host.bb | 7 +++++++
.../crossbuild-essential-riscv64_0.1-isar.bb | 8 ++++++++
3 files changed, 17 insertions(+)
create mode 100644 meta/recipes-devtools/crossbuild-essential-riscv64/crossbuild-essential-riscv64_0.1-isar.bb

diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass
index af9c9840..1decf587 100644
--- a/meta/classes/dpkg-base.bbclass
+++ b/meta/classes/dpkg-base.bbclass
@@ -10,6 +10,8 @@ inherit terminal

DEPENDS ?= ""

+DEPENDS_append_riscv64 = "${@' crossbuild-essential-riscv64' if d.getVar('ISAR_CROSS_COMPILE', True) == '1' and d.getVar('PN') != 'crossbuild-essential-riscv64' else ''}"
+
python do_adjust_git() {
import subprocess

diff --git a/meta/recipes-devtools/buildchroot/buildchroot-host.bb b/meta/recipes-devtools/buildchroot/buildchroot-host.bb
index 408ad393..8e3a52cf 100644
--- a/meta/recipes-devtools/buildchroot/buildchroot-host.bb
+++ b/meta/recipes-devtools/buildchroot/buildchroot-host.bb
@@ -15,3 +15,10 @@ BUILDCHROOT_PREINSTALL ?= " \
${BUILDCHROOT_PREINSTALL_COMMON} \
libc6:${DISTRO_ARCH} \
crossbuild-essential-${DISTRO_ARCH}"
+
+BUILDCHROOT_PREINSTALL_riscv64 ?= " \
+ ${BUILDCHROOT_PREINSTALL_COMMON} \
+ libc6:${DISTRO_ARCH} \
+ gcc-riscv64-linux-gnu:native \
+ g++-riscv64-linux-gnu:native \
+ dpkg-cross:native"
diff --git a/meta/recipes-devtools/crossbuild-essential-riscv64/crossbuild-essential-riscv64_0.1-isar.bb b/meta/recipes-devtools/crossbuild-essential-riscv64/crossbuild-essential-riscv64_0.1-isar.bb
new file mode 100644
index 00000000..39f6a59a
--- /dev/null
+++ b/meta/recipes-devtools/crossbuild-essential-riscv64/crossbuild-essential-riscv64_0.1-isar.bb
@@ -0,0 +1,8 @@
+# This software is a part of ISAR.
+# Copyright (C) 2020 Siemens AG
+
+inherit dpkg-raw
+
+DPKG_ARCH = "all"
+
+ISAR_CROSS_BUILD = "0"
--
2.16.4

Jan Kiszka

unread,
Jan 10, 2020, 12:26:08 PM1/10/20
to isar-users
This is enables the first RISC-V target under Isar, namely QEMU.

The riscv64 arch is not yet an official port, so we need to pull from
fragile sid. Therefore, I'm not yet adding this to any CI.

I order to run the image, you need to install qemu-system-riscv64 and
opensbi (from sid) prior to trying 'start_vm -a riscv64 -d sid-ports'.
The reward in the end:

root@isar:~# uname -a
Linux isar 5.4.0-2-riscv64 #1 SMP Debian 5.4.8-1 (2020-01-05) riscv64 GNU/Linux

Jan

PS: Looking at meta-isar/conf/multiconfig once again, specifically the
qemu targets, it seems they could benefit from some cleanups...

Jan Kiszka (5):
meta: Add debian-sid-ports distro config
meta: base/isar-apt: Add RISC-V architecture
meta: Allow cross-compilation for RISC-V
start_vm: Add RISC-V 64-bit support
meta-isar: Add qemuriscv64 virtual target

meta-isar/conf/machine/qemuriscv64.conf | 7 +++++++
.../conf/multiconfig/qemuriscv64-sid-ports.conf | 21 +++++++++++++++++++++
.../recipes-kernel/example-module/example-module.bb | 1 +
meta/classes/dpkg-base.bbclass | 2 ++
meta/conf/distro/debian-sid-ports.conf | 21 +++++++++++++++++++++
meta/conf/distro/debian-sid-ports.list | 2 ++
meta/conf/distro/debian-sid.list | 2 ++
.../base-apt/files/distributions.in | 2 +-
.../buildchroot/buildchroot-host.bb | 7 +++++++
.../crossbuild-essential-riscv64_0.1-isar.bb | 8 ++++++++
.../isar-apt/files/distributions.in | 2 +-
scripts/start_vm | 4 ++++
12 files changed, 77 insertions(+), 2 deletions(-)
create mode 100644 meta-isar/conf/machine/qemuriscv64.conf
create mode 100644 meta-isar/conf/multiconfig/qemuriscv64-sid-ports.conf
create mode 100644 meta/conf/distro/debian-sid-ports.conf
create mode 100644 meta/conf/distro/debian-sid-ports.list
create mode 100644 meta/conf/distro/debian-sid.list
create mode 100644 meta/recipes-devtools/crossbuild-essential-riscv64/crossbuild-essential-riscv64_0.1-isar.bb

--
2.16.4

Jan Kiszka

unread,
Jan 13, 2020, 3:28:21 AM1/13/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

This builds a QEMU image for the RISC-V 64-bit architecture from Debian
sid ports. Run with "start_vm -a riscv64 -d sid-ports".

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/conf/machine/qemuriscv64.conf | 24 ++++++++++++++++++++++
.../conf/multiconfig/qemuriscv64-sid-ports.conf | 8 ++++++++
.../example-module/example-module.bb | 1 +
3 files changed, 33 insertions(+)
create mode 100644 meta-isar/conf/machine/qemuriscv64.conf
create mode 100644 meta-isar/conf/multiconfig/qemuriscv64-sid-ports.conf

diff --git a/meta-isar/conf/machine/qemuriscv64.conf b/meta-isar/conf/machine/qemuriscv64.conf
new file mode 100644
index 00000000..62036466
--- /dev/null
+++ b/meta-isar/conf/machine/qemuriscv64.conf
@@ -0,0 +1,24 @@
+# This software is a part of ISAR.
+# Copyright (C) 2015-2017 ilbers GmbH
+# Copyright (c) Siemens AG, 2020
+#
+# SPDX-License-Identifier: MIT
+
+DISTRO_ARCH ?= "riscv64"
+
+KERNEL_NAME ?= "riscv64"
+
+IMAGE_TYPE ?= "ext4-img"
+
+QEMU_ROOTFS_DEV ?= "vda"
+
+QEMU_MACHINE ?= "virt"
+QEMU_CPU ?= "rv64gcsu-v1.10.0"
+# TODO: start_vm doesn't support multiline vars
+QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0"
+
+MACHINE_SERIAL ?= "ttyS0"
+BAUDRATE_TTY ?= "115200"
+
+# when enabled, rebuilding the initramfs fails with out-of-space error
+IMAGE_INSTALL_remove = "enable-fsck"
diff --git a/meta-isar/conf/multiconfig/qemuriscv64-sid-ports.conf b/meta-isar/conf/multiconfig/qemuriscv64-sid-ports.conf
new file mode 100644
index 00000000..2556cf7f
--- /dev/null
+++ b/meta-isar/conf/multiconfig/qemuriscv64-sid-ports.conf
@@ -0,0 +1,8 @@
+# This software is a part of ISAR.
+# Copyright (C) 2017 ilbers GmbH
+# Copyright (c) Siemens AG, 2019-2020
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE ?= "qemuriscv64"
+DISTRO ?= "debian-sid-ports"
diff --git a/meta-isar/recipes-kernel/example-module/example-module.bb b/meta-isar/recipes-kernel/example-module/example-module.bb
index 90db80e6..a72dd1b6 100644
--- a/meta-isar/recipes-kernel/example-module/example-module.bb
+++ b/meta-isar/recipes-kernel/example-module/example-module.bb
@@ -18,6 +18,7 @@ python() {
'amd64',
'686-pae',
'4kc-malta',
+ 'riscv64',
]:
d.setVar('ISAR_CROSS_COMPILE', '0')
}
--
2.16.4

Jan Kiszka

unread,
Jan 13, 2020, 3:28:21 AM1/13/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

This arch is still special in that QEMU does not support directly
booting the kernel via "-kernel". Rather, you need to install opensbi on
the host and load fw_jump.elf as kernel while the actual kernel goes at
a magic address via the loader device.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
scripts/start_vm | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/scripts/start_vm b/scripts/start_vm
index 71b55f25..8801cf88 100755
--- a/scripts/start_vm
+++ b/scripts/start_vm
@@ -122,6 +122,10 @@ case "$IMAGE_TYPE" in
QKERNEL=$IMAGE_DIR/${KERNEL_IMAGE}
QINITRD=/dev/null
[ -n "$INITRD_IMAGE" ] && QINITRD=$IMAGE_DIR/${INITRD_IMAGE}
+ if [ "$ARCH" = "riscv64" ]; then
+ EXTRA_ARGS="$EXTRA_ARGS -device loader,file=$QKERNEL,addr=0x80200000"
+ QKERNEL="/usr/lib/riscv64-linux-gnu/opensbi/qemu/virt/fw_jump.elf"
+ fi
EXTRA_ARGS="$EXTRA_ARGS \
-kernel $QKERNEL \
-initrd $QINITRD"
--
2.16.4

Jan Kiszka

unread,
Jan 13, 2020, 3:28:21 AM1/13/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta/recipes-kernel/linux-module/files/debian/rules | 3 +++
1 file changed, 3 insertions(+)

diff --git a/meta/recipes-kernel/linux-module/files/debian/rules b/meta/recipes-kernel/linux-module/files/debian/rules
index 7a89e412..c476bf32 100755
--- a/meta/recipes-kernel/linux-module/files/debian/rules
+++ b/meta/recipes-kernel/linux-module/files/debian/rules
@@ -17,6 +17,9 @@ endif
ifeq ($(DEB_HOST_GNU_CPU), aarch64)
export ARCH=arm64
endif
+ifeq ($(DEB_HOST_GNU_CPU), riscv64)
+export ARCH=riscv
+endif
ifneq (,$(findstring 86,$(DEB_HOST_GNU_CPU)))
export ARCH=x86
endif
--
2.16.4

Jan Kiszka

unread,
Jan 13, 2020, 3:28:21 AM1/13/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Set QEMU_ARCH and KERNEL_FILE for 64-bit RISC-V, add the architecture to
base-apt and isar-apt configurations.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta/conf/bitbake.conf | 2 ++
meta/recipes-devtools/base-apt/files/distributions.in | 2 +-
meta/recipes-devtools/isar-apt/files/distributions.in | 2 +-
3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 0eb3b544..ab954b1f 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -58,6 +58,7 @@ SDKCHROOT_DIR = "${DEPLOY_DIR_SDKCHROOT}/${DISTRO}-${DISTRO_ARCH}"
CACHE = "${TMPDIR}/cache"
KERNEL_FILE ?= "vmlinuz"
KERNEL_FILE_mipsel ?= "vmlinux"
+KERNEL_FILE_riscv64 ?= "vmlinux"

OVERRIDES = "${DISTRO_ARCH}:${MACHINE}:${DISTRO}:forcevariable"
FILESOVERRIDES = "${DISTRO_ARCH}:${MACHINE}"
@@ -68,6 +69,7 @@ QEMU_ARCH_i386 = "i386"
QEMU_ARCH_armhf = "arm"
QEMU_ARCH_arm64 = "aarch64"
QEMU_ARCH_mipsel = "mipsel"
+QEMU_ARCH_riscv64 = "riscv64"

# Codename of the repository created by the caching class
DEBDISTRONAME = "isar"
diff --git a/meta/recipes-devtools/base-apt/files/distributions.in b/meta/recipes-devtools/base-apt/files/distributions.in
index fd7de0b7..3cf7ea55 100644
--- a/meta/recipes-devtools/base-apt/files/distributions.in
+++ b/meta/recipes-devtools/base-apt/files/distributions.in
@@ -1,3 +1,3 @@
Codename: {CODENAME}
-Architectures: i386 armhf arm64 amd64 mipsel source
+Architectures: i386 armhf arm64 amd64 mipsel riscv64 source
Components: main
diff --git a/meta/recipes-devtools/isar-apt/files/distributions.in b/meta/recipes-devtools/isar-apt/files/distributions.in
index a24a7000..64717364 100644
--- a/meta/recipes-devtools/isar-apt/files/distributions.in
+++ b/meta/recipes-devtools/isar-apt/files/distributions.in
@@ -1,3 +1,3 @@
Codename: {DISTRO_NAME}
-Architectures: i386 armhf arm64 amd64 mipsel source
+Architectures: i386 armhf arm64 amd64 mipsel riscv64 source
Components: main
--
2.16.4

Jan Kiszka

unread,
Jan 13, 2020, 3:28:21 AM1/13/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Will be relevant for RISC-V.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/recipes-kernel/linux/linux-mainline_4.19.88.bb | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/meta-isar/recipes-kernel/linux/linux-mainline_4.19.88.bb b/meta-isar/recipes-kernel/linux/linux-mainline_4.19.88.bb
index cb4d5e33..3c5335e8 100644
--- a/meta-isar/recipes-kernel/linux/linux-mainline_4.19.88.bb
+++ b/meta-isar/recipes-kernel/linux/linux-mainline_4.19.88.bb
@@ -28,8 +28,10 @@ LINUX_VERSION_EXTENSION = "-isar"

# For testing purposes only
dpkg_configure_kernel_append() {
- grep "# CONFIG_UBIFS_FS is not set" ${S}/${KERNEL_BUILD_DIR}/.config || \
- bbfatal "Self-check failed: CONFIG_UBIFS_FS still enabled"
+ if ! grep "# CONFIG_MTD is not set" ${S}/${KERNEL_BUILD_DIR}/.config; then
+ grep "# CONFIG_UBIFS_FS is not set" ${S}/${KERNEL_BUILD_DIR}/.config || \
+ bbfatal "Self-check failed: CONFIG_UBIFS_FS still enabled"
+ fi
grep "CONFIG_ROOT_NFS=y" ${S}/${KERNEL_BUILD_DIR}/.config || \
bbfatal "Self-check failed: CONFIG_ROOT_NFS not enabled"
}
--
2.16.4

Jan Kiszka

unread,
Jan 13, 2020, 3:28:21 AM1/13/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Move all the needless duplications from the multiconfigs into the
machine configs, reducing the multiconfigs to MACHINE and DISTRO
settings - with the only exception of qemuamd64-buster-tgz.conf.

Note that this also switches all qemui386 targets to the 686-pae kernel.
So far, only the stretch target used it - for whatever reason.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/conf/machine/qemuamd64.conf | 17 +++++++++++++++--
meta-isar/conf/machine/qemuarm.conf | 16 ++++++++++++++--
meta-isar/conf/machine/qemuarm64.conf | 16 ++++++++++++++--
meta-isar/conf/machine/qemui386.conf | 14 ++++++++++++--
meta-isar/conf/machine/qemumipsel.conf | 16 ++++++++++++++--
meta-isar/conf/multiconfig/qemuamd64-bullseye.conf | 16 ----------------
meta-isar/conf/multiconfig/qemuamd64-buster-tgz.conf | 6 ------
meta-isar/conf/multiconfig/qemuamd64-buster.conf | 16 ----------------
meta-isar/conf/multiconfig/qemuamd64-stretch.conf | 13 -------------
meta-isar/conf/multiconfig/qemuarm-bullseye.conf | 12 ------------
meta-isar/conf/multiconfig/qemuarm-buster.conf | 12 ------------
meta-isar/conf/multiconfig/qemuarm-stretch.conf | 12 ------------
meta-isar/conf/multiconfig/qemuarm64-bullseye.conf | 12 ------------
meta-isar/conf/multiconfig/qemuarm64-buster.conf | 12 ------------
meta-isar/conf/multiconfig/qemuarm64-stretch.conf | 12 ------------
meta-isar/conf/multiconfig/qemui386-bullseye.conf | 13 -------------
meta-isar/conf/multiconfig/qemui386-buster.conf | 13 -------------
meta-isar/conf/multiconfig/qemui386-stretch.conf | 13 -------------
meta-isar/conf/multiconfig/qemumipsel-bullseye.conf | 12 ------------
meta-isar/conf/multiconfig/qemumipsel-buster.conf | 12 ------------
meta-isar/conf/multiconfig/qemumipsel-stretch.conf | 12 ------------
21 files changed, 69 insertions(+), 208 deletions(-)

diff --git a/meta-isar/conf/machine/qemuamd64.conf b/meta-isar/conf/machine/qemuamd64.conf
index 1eb85e6b..028b738d 100644
--- a/meta-isar/conf/machine/qemuamd64.conf
+++ b/meta-isar/conf/machine/qemuamd64.conf
@@ -1,7 +1,20 @@
# This software is a part of ISAR.
# Copyright (C) 2017 ilbers GmbH

+DISTRO_ARCH ?= "amd64"
+
+KERNEL_NAME ?= "amd64"
+
+IMAGE_TYPE ?= "wic-img"
+WKS_FILE ?= "sdimage-efi"
+IMAGER_INSTALL += "${GRUB_BOOTLOADER_INSTALL}"
+
+IMAGE_INSTALL += "sshd-regen-keys"
+
+QEMU_ARCH ?= "x86_64"
+QEMU_MACHINE ?= "q35"
+QEMU_CPU ?= ""
+QEMU_DISK_ARGS ?= "-hda ##ROOTFS_IMAGE## -bios /usr/local/share/ovmf/OVMF.fd"
+
MACHINE_SERIAL ?= "ttyS0"
BAUDRATE_TTY ?= "115200"
-
-IMAGE_TYPE ?= "ext4-img"
diff --git a/meta-isar/conf/machine/qemuarm.conf b/meta-isar/conf/machine/qemuarm.conf
index 70dd9415..fbbdc233 100644
--- a/meta-isar/conf/machine/qemuarm.conf
+++ b/meta-isar/conf/machine/qemuarm.conf
@@ -1,7 +1,19 @@
# This software is a part of ISAR.
# Copyright (C) 2015-2017 ilbers GmbH

-MACHINE_SERIAL ?= "ttyAMA0"
-BAUDRATE_TTY ?= "115200"
+DISTRO_ARCH ?= "armhf"
+
+KERNEL_NAME ?= "armmp"

IMAGE_TYPE ?= "ext4-img"
+
+QEMU_ROOTFS_DEV ?= "vda"
+
+QEMU_ARCH ?= "arm"
+QEMU_MACHINE ?= "virt"
+QEMU_CPU ?= "cortex-a15"
+# TODO: start_vm doesn't support multiline vars
+QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0"
+
+MACHINE_SERIAL ?= "ttyAMA0"
+BAUDRATE_TTY ?= "115200"
diff --git a/meta-isar/conf/machine/qemuarm64.conf b/meta-isar/conf/machine/qemuarm64.conf
index 70dd9415..246da5a5 100644
--- a/meta-isar/conf/machine/qemuarm64.conf
+++ b/meta-isar/conf/machine/qemuarm64.conf
@@ -1,7 +1,19 @@
# This software is a part of ISAR.
# Copyright (C) 2015-2017 ilbers GmbH

-MACHINE_SERIAL ?= "ttyAMA0"
-BAUDRATE_TTY ?= "115200"
+DISTRO_ARCH ?= "arm64"
+
+KERNEL_NAME ?= "arm64"

IMAGE_TYPE ?= "ext4-img"
+
+QEMU_ROOTFS_DEV ?= "vda"
+
+QEMU_ARCH ?= "aarch64"
+QEMU_MACHINE ?= "virt"
+QEMU_CPU ?= "cortex-a57"
+# TODO: start_vm doesn't support multiline vars
+QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0"
+
+MACHINE_SERIAL ?= "ttyAMA0"
+BAUDRATE_TTY ?= "115200"
diff --git a/meta-isar/conf/machine/qemui386.conf b/meta-isar/conf/machine/qemui386.conf
index 1eb85e6b..e6afb06b 100644
--- a/meta-isar/conf/machine/qemui386.conf
+++ b/meta-isar/conf/machine/qemui386.conf
@@ -1,7 +1,17 @@
# This software is a part of ISAR.
# Copyright (C) 2017 ilbers GmbH
+DISTRO_ARCH ?= "i386"
+
+KERNEL_NAME ?= "686-pae"
+
+IMAGE_TYPE ?= "wic-img"
+WKS_FILE ?= "directdisk-isar"
+IMAGER_INSTALL += "${SYSLINUX_BOOTLOADER_INSTALL}"
+
+QEMU_ARCH ?= "i386"
+QEMU_MACHINE ?= "pc"
+QEMU_CPU ?= ""
+QEMU_DISK_ARGS ?= "-hda ##ROOTFS_IMAGE##"

MACHINE_SERIAL ?= "ttyS0"
BAUDRATE_TTY ?= "115200"
-
-IMAGE_TYPE ?= "ext4-img"
diff --git a/meta-isar/conf/machine/qemumipsel.conf b/meta-isar/conf/machine/qemumipsel.conf
index 18191fc9..85178ee9 100644
--- a/meta-isar/conf/machine/qemumipsel.conf
+++ b/meta-isar/conf/machine/qemumipsel.conf
@@ -1,7 +1,19 @@
# This software is a part of ISAR.
# Copyright (C) 2019 Mentor Graphics, a Siemens business

-MACHINE_SERIAL ?= "ttyS0"
-BAUDRATE_TTY ?= "115200"
+DISTRO_ARCH ?= "mipsel"
+
+KERNEL_NAME ?= "4kc-malta"

IMAGE_TYPE ?= "ext4-img"
+
+QEMU_ROOTFS_DEV ?= "sda"
+
+QEMU_ARCH ?= "mipsel"
+QEMU_MACHINE ?= "malta"
+QEMU_CPU ?= "24Kc"
+QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,format=raw"
+QEMU_KARGS ?= "nokaslr"
+
+MACHINE_SERIAL ?= "ttyS0"
+BAUDRATE_TTY ?= "115200"
diff --git a/meta-isar/conf/multiconfig/qemuamd64-bullseye.conf b/meta-isar/conf/multiconfig/qemuamd64-bullseye.conf
index d0b79f72..1badc889 100644
--- a/meta-isar/conf/multiconfig/qemuamd64-bullseye.conf
+++ b/meta-isar/conf/multiconfig/qemuamd64-bullseye.conf
@@ -1,20 +1,4 @@
# This software is a part of ISAR.

MACHINE ?= "qemuamd64"
-
DISTRO ?= "debian-bullseye"
-DISTRO_ARCH ?= "amd64"
-
-KERNEL_NAME ?= "amd64"
-
-IMAGE_TYPE ?= "wic-img"
-WKS_FILE ?= "sdimage-efi"
-IMAGER_INSTALL += "${GRUB_BOOTLOADER_INSTALL}"
-
-IMAGE_INSTALL += "sshd-regen-keys"
-
-QEMU_ARCH ?= "x86_64"
-QEMU_MACHINE ?= "q35"
-QEMU_CPU ?= ""
-QEMU_DISK_ARGS ?= "-hda ##ROOTFS_IMAGE## -bios /usr/local/share/ovmf/OVMF.fd"
-
diff --git a/meta-isar/conf/multiconfig/qemuamd64-buster-tgz.conf b/meta-isar/conf/multiconfig/qemuamd64-buster-tgz.conf
index 18944545..17de3384 100644
--- a/meta-isar/conf/multiconfig/qemuamd64-buster-tgz.conf
+++ b/meta-isar/conf/multiconfig/qemuamd64-buster-tgz.conf
@@ -4,12 +4,6 @@
# SPDX-License-Identifier: MIT

MACHINE ?= "qemuamd64"
-
DISTRO ?= "debian-buster"
-DISTRO_ARCH ?= "amd64"
-
-KERNEL_NAME ?= "amd64"

IMAGE_TYPE ?= "targz-img"
-
-IMAGE_INSTALL += "sshd-regen-keys"
diff --git a/meta-isar/conf/multiconfig/qemuamd64-buster.conf b/meta-isar/conf/multiconfig/qemuamd64-buster.conf
index da909939..3fabd675 100644
--- a/meta-isar/conf/multiconfig/qemuamd64-buster.conf
+++ b/meta-isar/conf/multiconfig/qemuamd64-buster.conf
@@ -1,20 +1,4 @@
# This software is a part of ISAR.

MACHINE ?= "qemuamd64"
-
DISTRO ?= "debian-buster"
-DISTRO_ARCH ?= "amd64"
-
-KERNEL_NAME ?= "amd64"
-
-IMAGE_TYPE ?= "wic-img"
-WKS_FILE ?= "sdimage-efi"
-IMAGER_INSTALL += "${GRUB_BOOTLOADER_INSTALL}"
-
-IMAGE_INSTALL += "sshd-regen-keys"
-
-QEMU_ARCH ?= "x86_64"
-QEMU_MACHINE ?= "q35"
-QEMU_CPU ?= ""
-QEMU_DISK_ARGS ?= "-hda ##ROOTFS_IMAGE## -bios /usr/local/share/ovmf/OVMF.fd"
-
diff --git a/meta-isar/conf/multiconfig/qemuamd64-stretch.conf b/meta-isar/conf/multiconfig/qemuamd64-stretch.conf
index f9d283ca..f9592c71 100644
--- a/meta-isar/conf/multiconfig/qemuamd64-stretch.conf
+++ b/meta-isar/conf/multiconfig/qemuamd64-stretch.conf
@@ -2,17 +2,4 @@
# Copyright (C) 2017 ilbers GmbH

MACHINE ?= "qemuamd64"
-
DISTRO ?= "debian-stretch"
-DISTRO_ARCH ?= "amd64"
-
-KERNEL_NAME ?= "amd64"
-
-IMAGE_TYPE ?= "wic-img"
-WKS_FILE ?= "sdimage-efi"
-IMAGER_INSTALL += "${GRUB_BOOTLOADER_INSTALL}"
-
-QEMU_ARCH ?= "x86_64"
-QEMU_MACHINE ?= "q35"
-QEMU_CPU ?= ""
-QEMU_DISK_ARGS ?= "-hda ##ROOTFS_IMAGE## -bios /usr/local/share/ovmf/OVMF.fd"
diff --git a/meta-isar/conf/multiconfig/qemuarm-bullseye.conf b/meta-isar/conf/multiconfig/qemuarm-bullseye.conf
index 1989d90f..6924f405 100644
--- a/meta-isar/conf/multiconfig/qemuarm-bullseye.conf
+++ b/meta-isar/conf/multiconfig/qemuarm-bullseye.conf
@@ -1,16 +1,4 @@
# This software is a part of ISAR.

MACHINE ?= "qemuarm"
-
DISTRO ?= "debian-bullseye"
-DISTRO_ARCH ?= "armhf"
-
-KERNEL_NAME ?= "armmp"
-
-QEMU_ROOTFS_DEV ?= "vda"
-
-QEMU_ARCH ?= "arm"
-QEMU_MACHINE ?= "virt"
-QEMU_CPU ?= "cortex-a15"
-# TODO: start_vm doesn't support multiline vars
-QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0"
diff --git a/meta-isar/conf/multiconfig/qemuarm-buster.conf b/meta-isar/conf/multiconfig/qemuarm-buster.conf
index bc84c8b0..96904388 100644
--- a/meta-isar/conf/multiconfig/qemuarm-buster.conf
+++ b/meta-isar/conf/multiconfig/qemuarm-buster.conf
@@ -1,16 +1,4 @@
# This software is a part of ISAR.

MACHINE ?= "qemuarm"
-
DISTRO ?= "debian-buster"
-DISTRO_ARCH ?= "armhf"
-
-KERNEL_NAME ?= "armmp"
-
-QEMU_ROOTFS_DEV ?= "vda"
-
-QEMU_ARCH ?= "arm"
-QEMU_MACHINE ?= "virt"
-QEMU_CPU ?= "cortex-a15"
-# TODO: start_vm doesn't support multiline vars
-QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0"
diff --git a/meta-isar/conf/multiconfig/qemuarm-stretch.conf b/meta-isar/conf/multiconfig/qemuarm-stretch.conf
index a2e3df16..f3af9fc3 100644
--- a/meta-isar/conf/multiconfig/qemuarm-stretch.conf
+++ b/meta-isar/conf/multiconfig/qemuarm-stretch.conf
@@ -2,16 +2,4 @@
# Copyright (C) 2017 ilbers GmbH

MACHINE ?= "qemuarm"
-
DISTRO ?= "debian-stretch"
-DISTRO_ARCH ?= "armhf"
-
-KERNEL_NAME ?= "armmp"
-
-QEMU_ROOTFS_DEV ?= "vda"
-
-QEMU_ARCH ?= "arm"
-QEMU_MACHINE ?= "virt"
-QEMU_CPU ?= "cortex-a15"
-# TODO: start_vm doesn't support multiline vars
-QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0"
diff --git a/meta-isar/conf/multiconfig/qemuarm64-bullseye.conf b/meta-isar/conf/multiconfig/qemuarm64-bullseye.conf
index e8dabac1..4b3a8462 100644
--- a/meta-isar/conf/multiconfig/qemuarm64-bullseye.conf
+++ b/meta-isar/conf/multiconfig/qemuarm64-bullseye.conf
@@ -3,16 +3,4 @@
# Copyright (c) Siemens AG, 2019

MACHINE ?= "qemuarm64"
-
DISTRO ?= "debian-bullseye"
-DISTRO_ARCH ?= "arm64"
-
-KERNEL_NAME ?= "arm64"
-
-QEMU_ROOTFS_DEV ?= "vda"
-
-QEMU_ARCH ?= "aarch64"
-QEMU_MACHINE ?= "virt"
-QEMU_CPU ?= "cortex-a57"
-# TODO: start_vm doesn't support multiline vars
-QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0"
diff --git a/meta-isar/conf/multiconfig/qemuarm64-buster.conf b/meta-isar/conf/multiconfig/qemuarm64-buster.conf
index 40f1d414..60c370ba 100644
--- a/meta-isar/conf/multiconfig/qemuarm64-buster.conf
+++ b/meta-isar/conf/multiconfig/qemuarm64-buster.conf
@@ -3,16 +3,4 @@
# Copyright (c) Siemens AG, 2018

MACHINE ?= "qemuarm64"
-
DISTRO ?= "debian-buster"
-DISTRO_ARCH ?= "arm64"
-
-KERNEL_NAME ?= "arm64"
-
-QEMU_ROOTFS_DEV ?= "vda"
-
-QEMU_ARCH ?= "aarch64"
-QEMU_MACHINE ?= "virt"
-QEMU_CPU ?= "cortex-a57"
-# TODO: start_vm doesn't support multiline vars
-QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0"
diff --git a/meta-isar/conf/multiconfig/qemuarm64-stretch.conf b/meta-isar/conf/multiconfig/qemuarm64-stretch.conf
index dcef3702..0fd39fca 100644
--- a/meta-isar/conf/multiconfig/qemuarm64-stretch.conf
+++ b/meta-isar/conf/multiconfig/qemuarm64-stretch.conf
@@ -3,16 +3,4 @@
# Copyright (c) Siemens AG, 2018

MACHINE ?= "qemuarm64"
-
DISTRO ?= "debian-stretch"
-DISTRO_ARCH ?= "arm64"
-
-KERNEL_NAME ?= "arm64"
-
-QEMU_ROOTFS_DEV ?= "vda"
-
-QEMU_ARCH ?= "aarch64"
-QEMU_MACHINE ?= "virt"
-QEMU_CPU ?= "cortex-a57"
-# TODO: start_vm doesn't support multiline vars
-QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0"
diff --git a/meta-isar/conf/multiconfig/qemui386-bullseye.conf b/meta-isar/conf/multiconfig/qemui386-bullseye.conf
index 0a16d105..bc81136d 100644
--- a/meta-isar/conf/multiconfig/qemui386-bullseye.conf
+++ b/meta-isar/conf/multiconfig/qemui386-bullseye.conf
@@ -1,17 +1,4 @@
# This software is a part of ISAR.

MACHINE ?= "qemui386"
-
DISTRO ?= "debian-bullseye"
-DISTRO_ARCH ?= "i386"
-
-KERNEL_NAME ?= "686"
-
-IMAGE_TYPE ?= "wic-img"
-WKS_FILE ?= "directdisk-isar"
-IMAGER_INSTALL += "${SYSLINUX_BOOTLOADER_INSTALL}"
-
-QEMU_ARCH ?= "i386"
-QEMU_MACHINE ?= "pc"
-QEMU_CPU ?= ""
-QEMU_DISK_ARGS ?= "-hda ##ROOTFS_IMAGE##"
diff --git a/meta-isar/conf/multiconfig/qemui386-buster.conf b/meta-isar/conf/multiconfig/qemui386-buster.conf
index 6b5a18e5..d9350c04 100644
--- a/meta-isar/conf/multiconfig/qemui386-buster.conf
+++ b/meta-isar/conf/multiconfig/qemui386-buster.conf
@@ -1,17 +1,4 @@
# This software is a part of ISAR.

MACHINE ?= "qemui386"
-
DISTRO ?= "debian-buster"
-DISTRO_ARCH ?= "i386"
-
-KERNEL_NAME ?= "686"
-
-IMAGE_TYPE ?= "wic-img"
-WKS_FILE ?= "directdisk-isar"
-IMAGER_INSTALL += "${SYSLINUX_BOOTLOADER_INSTALL}"
-
-QEMU_ARCH ?= "i386"
-QEMU_MACHINE ?= "pc"
-QEMU_CPU ?= ""
-QEMU_DISK_ARGS ?= "-hda ##ROOTFS_IMAGE##"
diff --git a/meta-isar/conf/multiconfig/qemui386-stretch.conf b/meta-isar/conf/multiconfig/qemui386-stretch.conf
index 037ba23f..007e82b9 100644
--- a/meta-isar/conf/multiconfig/qemui386-stretch.conf
+++ b/meta-isar/conf/multiconfig/qemui386-stretch.conf
@@ -2,17 +2,4 @@
# Copyright (C) 2017 ilbers GmbH

MACHINE ?= "qemui386"
-
DISTRO ?= "debian-stretch"
-DISTRO_ARCH ?= "i386"
-
-KERNEL_NAME ?= "686-pae"
-
-IMAGE_TYPE ?= "wic-img"
-WKS_FILE ?= "directdisk-isar"
-IMAGER_INSTALL += "${SYSLINUX_BOOTLOADER_INSTALL}"
-
-QEMU_ARCH ?= "i386"
-QEMU_MACHINE ?= "pc"
-QEMU_CPU ?= ""
-QEMU_DISK_ARGS ?= "-hda ##ROOTFS_IMAGE##"
diff --git a/meta-isar/conf/multiconfig/qemumipsel-bullseye.conf b/meta-isar/conf/multiconfig/qemumipsel-bullseye.conf
index aa3a6f82..6f24c59b 100644
--- a/meta-isar/conf/multiconfig/qemumipsel-bullseye.conf
+++ b/meta-isar/conf/multiconfig/qemumipsel-bullseye.conf
@@ -2,16 +2,4 @@
# Copyright (C) 2019 Mentor Graphics, a Siemens busines

MACHINE ?= "qemumipsel"
-
DISTRO ?= "debian-bullseye"
-DISTRO_ARCH ?= "mipsel"
-
-KERNEL_NAME ?= "4kc-malta"
-
-QEMU_ROOTFS_DEV ?= "sda"
-
-QEMU_ARCH ?= "mipsel"
-QEMU_MACHINE ?= "malta"
-QEMU_CPU ?= "24Kc"
-QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,format=raw"
-QEMU_KARGS ?= "nokaslr"
diff --git a/meta-isar/conf/multiconfig/qemumipsel-buster.conf b/meta-isar/conf/multiconfig/qemumipsel-buster.conf
index ac9058ce..1d369fd5 100644
--- a/meta-isar/conf/multiconfig/qemumipsel-buster.conf
+++ b/meta-isar/conf/multiconfig/qemumipsel-buster.conf
@@ -2,16 +2,4 @@
# Copyright (C) 2019 Mentor Graphics, a Siemens busines

MACHINE ?= "qemumipsel"
-
DISTRO ?= "debian-buster"
-DISTRO_ARCH ?= "mipsel"
-
-KERNEL_NAME ?= "4kc-malta"
-
-QEMU_ROOTFS_DEV ?= "sda"
-
-QEMU_ARCH ?= "mipsel"
-QEMU_MACHINE ?= "malta"
-QEMU_CPU ?= "24Kc"
-QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,format=raw"
-QEMU_KARGS ?= "nokaslr"
diff --git a/meta-isar/conf/multiconfig/qemumipsel-stretch.conf b/meta-isar/conf/multiconfig/qemumipsel-stretch.conf
index 1fe20042..53009be6 100644
--- a/meta-isar/conf/multiconfig/qemumipsel-stretch.conf
+++ b/meta-isar/conf/multiconfig/qemumipsel-stretch.conf
@@ -2,16 +2,4 @@
# Copyright (C) 2019 Mentor Graphics, a Siemens busines

MACHINE ?= "qemumipsel"
-
DISTRO ?= "debian-stretch"
-DISTRO_ARCH ?= "mipsel"
-
-KERNEL_NAME ?= "4kc-malta"
-
-QEMU_ROOTFS_DEV ?= "sda"
-
-QEMU_ARCH ?= "mipsel"
-QEMU_MACHINE ?= "malta"
-QEMU_CPU ?= "24Kc"
-QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,format=raw"
-QEMU_KARGS ?= "nokaslr"
--
2.16.4

Jan Kiszka

unread,
Jan 13, 2020, 3:28:21 AM1/13/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

The addition RISC-V revealed that we already had an issue with mipsel
regarding vmlinuz vs. vmlinux, it was just not stressed so far.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
.../u-boot-script/files/update-u-boot-script | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)

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 d006a23e..a18e59bc 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
@@ -17,6 +17,21 @@ BOOT_CMD=$(mktemp)

KERNEL_VERSION=$(linux-version list | linux-version sort --reverse | head -1)

+case $(uname -m) in
+ aarch64)
+ KERNEL_FILE="vmlinuz"
+ BOOT="booti"
+ ;;
+ mips|riscv64)
+ KERNEL_FILE="vmlinux"
+ BOOT="booti"
+ ;;
+ *)
+ KERNEL_FILE="vmlinuz"
+ BOOT="bootz"
+ ;;
+esac
+
echo "${SCRIPT_PREPEND}" >> ${BOOT_CMD}

echo "setenv bootargs ${KERNEL_ARGS}" >> ${BOOT_CMD}
@@ -24,7 +39,7 @@ echo "setenv bootargs ${KERNEL_ARGS}" >> ${BOOT_CMD}
echo "load \${devtype} \${devnum}:${ROOT_PARTITION} \${fdt_addr_r}" \
"/usr/lib/linux-image-${KERNEL_VERSION}/\${fdtfile}" >> ${BOOT_CMD}
echo "load \${devtype} \${devnum}:\${distro_bootpart} \${kernel_addr_r}" \
- "/boot/vmlinuz-${KERNEL_VERSION}" >> ${BOOT_CMD}
+ "/boot/${KERNEL_FILE}-${KERNEL_VERSION}" >> ${BOOT_CMD}

case "${NO_INITRD}" in
yes|1)
@@ -53,11 +68,6 @@ if [ -n "${OVERLAYS}" ]; then
done
fi

-BOOT="bootz"
-if [ "$(uname -m)" = "aarch64" ]; then
- BOOT="booti"
-fi
-
echo "${BOOT} \${kernel_addr_r} ${INITRD_ADDR} \${fdt_addr_r}" >> ${BOOT_CMD}

mkimage -T script -A invalid -C none -d ${BOOT_CMD} /boot/boot.scr > /dev/null
--
2.16.4

Jan Kiszka

unread,
Jan 13, 2020, 3:28:21 AM1/13/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Needed for the HiFive Unleashed board that does not boot with the
Debian kernel due to oversized initramfs and also does not work with
that 4.19 kernel.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
...fpga-Rename-socfpga_cyclone5_de0_-sockit-.patch | 41 ----------------------
...ainline_4.19.88.bb => linux-mainline_5.4.10.bb} | 7 ++--
2 files changed, 2 insertions(+), 46 deletions(-)
delete mode 100644 meta-isar/recipes-kernel/linux/files/0001-ARM-dts-socfpga-Rename-socfpga_cyclone5_de0_-sockit-.patch
rename meta-isar/recipes-kernel/linux/{linux-mainline_4.19.88.bb => linux-mainline_5.4.10.bb} (79%)

diff --git a/meta-isar/recipes-kernel/linux/files/0001-ARM-dts-socfpga-Rename-socfpga_cyclone5_de0_-sockit-.patch b/meta-isar/recipes-kernel/linux/files/0001-ARM-dts-socfpga-Rename-socfpga_cyclone5_de0_-sockit-.patch
deleted file mode 100644
index 8eb602d3..00000000
--- a/meta-isar/recipes-kernel/linux/files/0001-ARM-dts-socfpga-Rename-socfpga_cyclone5_de0_-sockit-.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 202eb5481421040e115526b75317b5ca72584806 Mon Sep 17 00:00:00 2001
-From: Marek Vasut <ma...@denx.de>
-Date: Wed, 29 Aug 2018 17:15:04 +0200
-Subject: [PATCH] ARM: dts: socfpga: Rename
- socfpga_cyclone5_de0_{sockit,nano_soc}
-
-Rename DT source for DE0 Nano SoC . The board name is really DE0-Nano-SoC
-or Atlas SoC, and it is not to be confused with SoCkit board, which is a
-different one. Rename the DT source file to match the board name and to
-avoid this possible mixup with another different board.
-
-Signed-off-by: Marek Vasut <ma...@denx.de>
-Cc: Dinh Nguyen <ding...@kernel.org>
-Cc: Jan Kiszka <jan.k...@siemens.com>
-Signed-off-by: Dinh Nguyen <ding...@kernel.org>
----
- arch/arm/boot/dts/Makefile | 2 +-
- ...ocfpga_cyclone5_de0_sockit.dts => socfpga_cyclone5_de0_nano_soc.dts} | 0
- 2 files changed, 1 insertion(+), 1 deletion(-)
- rename arch/arm/boot/dts/{socfpga_cyclone5_de0_sockit.dts => socfpga_cyclone5_de0_nano_soc.dts} (100%)
-
-diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index b5bd3de87c33..1036d396da83 100644
---- a/arch/arm/boot/dts/Makefile
-+++ b/arch/arm/boot/dts/Makefile
-@@ -892,7 +892,7 @@ dtb-$(CONFIG_ARCH_SOCFPGA) += \
- socfpga_arria10_socdk_sdmmc.dtb \
- socfpga_cyclone5_mcvevk.dtb \
- socfpga_cyclone5_socdk.dtb \
-- socfpga_cyclone5_de0_sockit.dtb \
-+ socfpga_cyclone5_de0_nano_soc.dtb \
- socfpga_cyclone5_sockit.dtb \
- socfpga_cyclone5_socrates.dtb \
- socfpga_cyclone5_sodia.dtb \
-diff --git a/arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dts b/arch/arm/boot/dts/socfpga_cyclone5_de0_nano_soc.dts
-similarity index 100%
-rename from arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dts
-rename to arch/arm/boot/dts/socfpga_cyclone5_de0_nano_soc.dts
---
-2.16.4
-
diff --git a/meta-isar/recipes-kernel/linux/linux-mainline_4.19.88.bb b/meta-isar/recipes-kernel/linux/linux-mainline_5.4.10.bb
similarity index 79%
rename from meta-isar/recipes-kernel/linux/linux-mainline_4.19.88.bb
rename to meta-isar/recipes-kernel/linux/linux-mainline_5.4.10.bb
index 3c5335e8..8ec577cf 100644
--- a/meta-isar/recipes-kernel/linux/linux-mainline_4.19.88.bb
+++ b/meta-isar/recipes-kernel/linux/linux-mainline_5.4.10.bb
@@ -10,15 +10,12 @@ require recipes-kernel/linux/linux-custom.inc
ARCHIVE_VERSION = "${@ d.getVar('PV')[:-2] if d.getVar('PV').endswith('.0') else d.getVar('PV') }"

SRC_URI += " \
- https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-${ARCHIVE_VERSION}.tar.xz \
+ https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${ARCHIVE_VERSION}.tar.xz \
file://x86_64_defconfig \
file://no-ubifs-fs.cfg \
file://no-root-nfs.cfg;apply=no"

-SRC_URI[sha256sum] = "c1923b6bd166e6dd07be860c15f59e8273aaa8692bc2a1fce1d31b826b9b3fbe"
-
-SRC_URI_append_de0-nano-soc = " \
- file://0001-ARM-dts-socfpga-Rename-socfpga_cyclone5_de0_-sockit-.patch"
+SRC_URI[sha256sum] = "f23c0218a5e3b363bb5a880972f507bb4dc4a290a787a7da08be07ea12042edd"

S = "${WORKDIR}/linux-${ARCHIVE_VERSION}"

--
2.16.4

Jan Kiszka

unread,
Jan 13, 2020, 3:28:21 AM1/13/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

This arch still lacks crossbuild-essential-riscv64, so we need to stub
some pieces. Specifically, we have to create a dummy package of the same
name so that mk-build-deps works fine. For buildchroot-host, we replace
the package by open-coding its dependencies.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta/classes/dpkg-base.bbclass | 2 ++
meta/recipes-devtools/buildchroot/buildchroot-host.bb | 7 +++++++
.../crossbuild-essential-riscv64_0.1-isar.bb | 11 +++++++++++
3 files changed, 20 insertions(+)
new file mode 100644
index 00000000..eeefba92
--- /dev/null
+++ b/meta/recipes-devtools/crossbuild-essential-riscv64/crossbuild-essential-riscv64_0.1-isar.bb
@@ -0,0 +1,11 @@
+# This software is a part of ISAR.
+#
+# Copyright (c) Siemens AG, 2020
+#
+# SPDX-License-Identifier: MIT
+

Jan Kiszka

unread,
Jan 13, 2020, 3:28:21 AM1/13/20
to isar-users
Changes since v1:
- added HiFive Unleashed board
- enabled custom kernel builds for riscv64
- enabled custom module cross-build for riscv64
- updated mainline kernel to 5.4.10 (needed for HiFive)
- added some missing riscv64-specific vars to bitbake.conf
- enabled u-boot-script for riscv64, and likely also mipsel
- cleaned up qemu multiconfigs

Jan

Jan Kiszka (13):
meta: Add debian-sid-ports distro config
meta: Add RISC-V architecture
meta: Allow cross-compilation for RISC-V
start_vm: Add RISC-V 64-bit support
meta-isar: Add qemuriscv64 virtual target
meta-isar: Clean up qemu multiconfigs
u-boot-script: Account for variations of kernel files and boot
commands
linux-custom: Tune strip rule to cover vmlinux images as well
linux-custom: Add support for RISC-V
linux-modules: Add support for RISC-V
linux-mainline: Avoid failing UBIFS test when defconfig does not
support it
linux-mainline: Update to 5.4.10
meta-isar: Add HiFive Unleashed board as physical RISC-V target

meta-isar/conf/machine/qemuamd64.conf | 17 +++++++--
meta-isar/conf/machine/qemuarm.conf | 16 +++++++--
meta-isar/conf/machine/qemuarm64.conf | 16 +++++++--
meta-isar/conf/machine/qemui386.conf | 14 ++++++--
meta-isar/conf/machine/qemumipsel.conf | 16 +++++++--
meta-isar/conf/machine/qemuriscv64.conf | 24 +++++++++++++
meta-isar/conf/machine/sifive-fu540.conf | 15 ++++++++
meta-isar/conf/multiconfig/qemuamd64-bullseye.conf | 16 ---------
.../conf/multiconfig/qemuamd64-buster-tgz.conf | 6 ----
meta-isar/conf/multiconfig/qemuamd64-buster.conf | 16 ---------
meta-isar/conf/multiconfig/qemuamd64-stretch.conf | 13 -------
meta-isar/conf/multiconfig/qemuarm-bullseye.conf | 12 -------
meta-isar/conf/multiconfig/qemuarm-buster.conf | 12 -------
meta-isar/conf/multiconfig/qemuarm-stretch.conf | 12 -------
meta-isar/conf/multiconfig/qemuarm64-bullseye.conf | 12 -------
meta-isar/conf/multiconfig/qemuarm64-buster.conf | 12 -------
meta-isar/conf/multiconfig/qemuarm64-stretch.conf | 12 -------
meta-isar/conf/multiconfig/qemui386-bullseye.conf | 13 -------
meta-isar/conf/multiconfig/qemui386-buster.conf | 13 -------
meta-isar/conf/multiconfig/qemui386-stretch.conf | 13 -------
.../conf/multiconfig/qemumipsel-bullseye.conf | 12 -------
meta-isar/conf/multiconfig/qemumipsel-buster.conf | 12 -------
meta-isar/conf/multiconfig/qemumipsel-stretch.conf | 12 -------
.../conf/multiconfig/qemuriscv64-sid-ports.conf | 8 +++++
.../conf/multiconfig/sifive-fu540-sid-ports.conf | 7 ++++
.../recipes-bsp/opensbi/files/sifive-fu540-rules | 13 +++++++
.../opensbi/opensbi-sifive-fu540_0.5.bb | 23 ++++++++++++
.../example-module/example-module.bb | 1 +
...fpga-Rename-socfpga_cyclone5_de0_-sockit-.patch | 41 ----------------------
...ainline_4.19.88.bb => linux-mainline_5.4.10.bb} | 13 ++++---
.../scripts/lib/wic/canned-wks/sifive-fu540.wks | 10 ++++++
meta/classes/dpkg-base.bbclass | 2 ++
meta/conf/bitbake.conf | 2 ++
meta/conf/distro/debian-sid-ports.conf | 25 +++++++++++++
meta/conf/distro/debian-sid-ports.list | 2 ++
meta/conf/distro/debian-sid.list | 2 ++
.../u-boot-script/files/update-u-boot-script | 22 ++++++++----
.../base-apt/files/distributions.in | 2 +-
.../buildchroot/buildchroot-host.bb | 7 ++++
.../crossbuild-essential-riscv64_0.1-isar.bb | 11 ++++++
.../isar-apt/files/distributions.in | 2 +-
.../recipes-kernel/linux-module/files/debian/rules | 3 ++
.../linux/files/debian/isar/install.tmpl | 10 +++---
meta/recipes-kernel/linux/files/debian/rules.tmpl | 2 +-
meta/recipes-kernel/linux/linux-custom.inc | 2 ++
scripts/start_vm | 4 +++
46 files changed, 260 insertions(+), 270 deletions(-)
create mode 100644 meta-isar/conf/machine/qemuriscv64.conf
create mode 100644 meta-isar/conf/machine/sifive-fu540.conf
create mode 100644 meta-isar/conf/multiconfig/qemuriscv64-sid-ports.conf
create mode 100644 meta-isar/conf/multiconfig/sifive-fu540-sid-ports.conf
create mode 100644 meta-isar/recipes-bsp/opensbi/files/sifive-fu540-rules
create mode 100644 meta-isar/recipes-bsp/opensbi/opensbi-sifive-fu540_0.5.bb
delete mode 100644 meta-isar/recipes-kernel/linux/files/0001-ARM-dts-socfpga-Rename-socfpga_cyclone5_de0_-sockit-.patch
rename meta-isar/recipes-kernel/linux/{linux-mainline_4.19.88.bb => linux-mainline_5.4.10.bb} (64%)
create mode 100644 meta-isar/scripts/lib/wic/canned-wks/sifive-fu540.wks

Jan Kiszka

unread,
Jan 13, 2020, 3:28:21 AM1/13/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Will be relevant for RISC-V, might be already for MIPS.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta/recipes-kernel/linux/files/debian/rules.tmpl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/recipes-kernel/linux/files/debian/rules.tmpl b/meta/recipes-kernel/linux/files/debian/rules.tmpl
index bea21f98..46b56ec5 100755
--- a/meta/recipes-kernel/linux/files/debian/rules.tmpl
+++ b/meta/recipes-kernel/linux/files/debian/rules.tmpl
@@ -36,4 +36,4 @@ override_dh_auto_test:

PHONY: override_dh_strip
override_dh_strip:
- unset DEB_HOST_GNU_TYPE && dh_strip -Xvmlinux --no-automatic-dbgsym
+ unset DEB_HOST_GNU_TYPE && dh_strip -Xvmlinu --no-automatic-dbgsym
--
2.16.4

Jan Kiszka

unread,
Jan 13, 2020, 3:28:22 AM1/13/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta/recipes-kernel/linux/files/debian/isar/install.tmpl | 10 +++++-----
meta/recipes-kernel/linux/linux-custom.inc | 2 ++
2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/meta/recipes-kernel/linux/files/debian/isar/install.tmpl b/meta/recipes-kernel/linux/files/debian/isar/install.tmpl
index 568fb815..8a8aa8f2 100644
--- a/meta/recipes-kernel/linux/files/debian/isar/install.tmpl
+++ b/meta/recipes-kernel/linux/files/debian/isar/install.tmpl
@@ -22,9 +22,9 @@ do_install() {
kimage="$(${MAKE} O=${O} -s --no-print-directory image_name)"
krel="$(${MAKE} O=${O} -s --no-print-directory kernelrelease)"
case "${ARCH}" in
- mips|powerpc) kimage_path="boot/vmlinux-${krel}" ;;
- um) kimage_path="usr/bin/vmlinux-${krel}" ;;
- *) kimage_path="boot/vmlinuz-${krel}" ;;
+ mips|powerpc|riscv) kimage_path="boot/vmlinux-${krel}" ;;
+ um) kimage_path="usr/bin/vmlinux-${krel}" ;;
+ *) kimage_path="boot/vmlinuz-${krel}" ;;
esac

print_settings
@@ -56,8 +56,8 @@ install_image() {
install -m 755 -d ${deb_img_dir}/$(dirname ${kimage_path})
cp ${O}/${kimage} ${deb_img_dir}/${kimage_path}

- # Make sure arm64 kernels are decompressed
- if [ "${ARCH}" = "arm64" ]; then
+ # Make sure arm64 and riscv kernels are decompressed
+ if [ "${ARCH}" = "arm64" -o "${ARCH}" = "riscv" ]; then
mv ${deb_img_dir}/${kimage_path} ${deb_img_dir}/${kimage_path}.gz
gunzip -f ${deb_img_dir}/${kimage_path}.gz
fi
diff --git a/meta/recipes-kernel/linux/linux-custom.inc b/meta/recipes-kernel/linux/linux-custom.inc
index d31da3bb..753becff 100644
--- a/meta/recipes-kernel/linux/linux-custom.inc
+++ b/meta/recipes-kernel/linux/linux-custom.inc
@@ -97,6 +97,8 @@ def get_kernel_arch(d):
kernel_arch = "arm"
elif distro_arch == "mipsel":
kernel_arch = "mips"
+ elif distro_arch == "riscv64":
+ kernel_arch = "riscv"
else:
kernel_arch = ""
return kernel_arch
--
2.16.4

Jan Kiszka

unread,
Jan 13, 2020, 3:28:22 AM1/13/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

The Unleashed board (https://www.sifive.com/boards/hifive-unleashed) was
the first one running regular Linux. This target generates a Debian
sid image that starts fine from an SD-card in default boot mode.

The Debian kernel does not work, though, because of an excessive
initramfs being generated (45MB) that gets stuck. As the MMC driver is
in that image, we also cannot disable the initramfs. So build the
mainline kernel which is starts also faster.

We can use the binary U-Boot from Debian sid, though.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/conf/machine/sifive-fu540.conf | 15 ++++++++++++++
.../conf/multiconfig/sifive-fu540-sid-ports.conf | 7 +++++++
.../recipes-bsp/opensbi/files/sifive-fu540-rules | 13 ++++++++++++
.../opensbi/opensbi-sifive-fu540_0.5.bb | 23 ++++++++++++++++++++++
.../scripts/lib/wic/canned-wks/sifive-fu540.wks | 10 ++++++++++
5 files changed, 68 insertions(+)
create mode 100644 meta-isar/conf/machine/sifive-fu540.conf
create mode 100644 meta-isar/conf/multiconfig/sifive-fu540-sid-ports.conf
create mode 100644 meta-isar/recipes-bsp/opensbi/files/sifive-fu540-rules
create mode 100644 meta-isar/recipes-bsp/opensbi/opensbi-sifive-fu540_0.5.bb
create mode 100644 meta-isar/scripts/lib/wic/canned-wks/sifive-fu540.wks

diff --git a/meta-isar/conf/machine/sifive-fu540.conf b/meta-isar/conf/machine/sifive-fu540.conf
new file mode 100644
index 00000000..c815f4a8
--- /dev/null
+++ b/meta-isar/conf/machine/sifive-fu540.conf
@@ -0,0 +1,15 @@
+#
+# Copyright (c) Siemens AG, 2020
+#
+# SPDX-License-Identifier: MIT
+
+DISTRO_ARCH = "riscv64"
+
+KERNEL_NAME ?= "mainline"
+
+IMAGE_TYPE ?= "wic-img"
+WKS_FILE ?= "sifive-fu540"
+IMAGER_INSTALL += "opensbi-sifive-fu540"
+IMAGER_BUILD_DEPS += "opensbi-sifive-fu540"
+
+IMAGE_INSTALL += "u-boot-script"
diff --git a/meta-isar/conf/multiconfig/sifive-fu540-sid-ports.conf b/meta-isar/conf/multiconfig/sifive-fu540-sid-ports.conf
new file mode 100644
index 00000000..e4e0248c
--- /dev/null
+++ b/meta-isar/conf/multiconfig/sifive-fu540-sid-ports.conf
@@ -0,0 +1,7 @@
+#
+# Copyright (c) Siemens AG, 2020
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE = "sifive-fu540"
+DISTRO = "debian-sid-ports"
diff --git a/meta-isar/recipes-bsp/opensbi/files/sifive-fu540-rules b/meta-isar/recipes-bsp/opensbi/files/sifive-fu540-rules
new file mode 100644
index 00000000..c8feb715
--- /dev/null
+++ b/meta-isar/recipes-bsp/opensbi/files/sifive-fu540-rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+export CROSS_COMPILE=$(DEB_HOST_GNU_TYPE)-
+endif
+
+PARALLEL_BUILD=-j $(shell echo $$(($$(nproc) * 2)))
+
+override_dh_auto_build:
+ CFLAGS= LDFLAGS= $(MAKE) $(PARALLEL_BUILD) PLATFORM=sifive/fu540 FW_PAYLOAD_PATH=/usr/lib/u-boot/sifive_fu540/u-boot.bin
+
+%:
+ dh $@
diff --git a/meta-isar/recipes-bsp/opensbi/opensbi-sifive-fu540_0.5.bb b/meta-isar/recipes-bsp/opensbi/opensbi-sifive-fu540_0.5.bb
new file mode 100644
index 00000000..b9d0c3e1
--- /dev/null
+++ b/meta-isar/recipes-bsp/opensbi/opensbi-sifive-fu540_0.5.bb
@@ -0,0 +1,23 @@
+#
+# Copyright (c) Siemens AG, 2020
+#
+# SPDX-License-Identifier: MIT
+
+inherit dpkg
+
+SRC_URI = " \
+ https://github.com/riscv/opensbi/archive/v${PV}.tar.gz;downloadfilename=opensbi-${PV}.tar.gz \
+ file://sifive-fu540-rules"
+SRC_URI[sha256sum] = "bc82f1e63663cafb7976b324d8a01263510cfd816063dc89e0ccffb9763fb1dd"
+
+S = "${WORKDIR}/opensbi-${PV}"
+
+do_prepare_build[cleandirs] += "${S}/debian"
+do_prepare_build() {
+ cp ${WORKDIR}/sifive-fu540-rules ${WORKDIR}/rules
+ deb_debianize
+
+ sed -i 's/\(Build-Depends:.*\)/\1, u-boot-sifive/' ${S}/debian/control
+
+ echo "build/platform/sifive/fu540/firmware/fw_payload.bin /usr/lib/opensbi/sifive-fu540/" > ${S}/debian/install
+}
diff --git a/meta-isar/scripts/lib/wic/canned-wks/sifive-fu540.wks b/meta-isar/scripts/lib/wic/canned-wks/sifive-fu540.wks
new file mode 100644
index 00000000..445b9d02
--- /dev/null
+++ b/meta-isar/scripts/lib/wic/canned-wks/sifive-fu540.wks
@@ -0,0 +1,10 @@
+#
+# Copyright (c) Siemens AG, 2020
+#
+# SPDX-License-Identifier: MIT
+
+part --source rawcopy --sourceparams "file=/usr/lib/opensbi/sifive-fu540/fw_payload.bin" --ondisk mmcblk0 --fixed-size 8M --align 1 --part-type 2e54b353-1271-4842-806f-e436d6af6985
+
+part / --source rootfs-u-boot --ondisk mmcblk0 --fstype ext4 --label platform --active --align 1024 --sourceparams "no_initrd=yes,script_prepend=setenv fdtfile sifive/hifive-unleashed-a00.dtb"
+
+bootloader --ptable gpt --append "rootwait"
--
2.16.4

Jan Kiszka

unread,
Jan 28, 2020, 6:31:38 AM1/28/20
to isar-users
Any feedback from anyone on this?

Jan

--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

vijai kumar

unread,
Jan 28, 2020, 10:51:20 AM1/28/20
to isar-users
Hi Jan,

Actually I wanted to try this out. Do you have a tree from which I can get this series?

I am yet to set up my mail client to download patches. Sorry about that.

Thanks,
Vijai Kumar K

Jan Kiszka

unread,
Jan 28, 2020, 11:02:49 AM1/28/20
to vijai kumar, isar-users
On 28.01.20 16:51, vijai kumar wrote:
> Hi Jan,
>
> Actually I wanted to try this out. Do you have a tree from which I can
> get this series?
>
> I am yet to set up my mail client to download patches. Sorry about that.
>

No problem. Just pushed the branch (un-rebased) to
https://github.com/siemens/isar/commits/jan/queue.

vijai kumar

unread,
Jan 28, 2020, 11:09:04 AM1/28/20
to isar-users
Thank you. I will try this out tonight and let you know.

Best,
Vijai Kumar K

vijai kumar

unread,
Jan 28, 2020, 2:23:26 PM1/28/20
to isar-users
Hi Jan,

A couple of observations.

1. Entry for qemuriscv64-sid-ports is missing in BBMULTICONFIG.
2. My distro (Xubuntu 18.04) does not seem to have the latest qemu-debootstrap to support riscv. It fails with unknown arch.
I have to manually hack qemu-debootstrap to add an entry for riscv64.

If you have a buster host, it should work out of the box I guess. It has the latest debian package.

Thanks,
Vijai Kumar K

Henning Schild

unread,
Jan 28, 2020, 4:51:55 PM1/28/20
to [ext] Jan Kiszka, isar-users
Not sure i fully get it but this one seems almost independent of the
risc-v stuff. More like a generic cleanup to be applied before adding
risc-v. Might be worth factoring out for early merge.

Henning

Jan Kiszka

unread,
Jan 28, 2020, 5:06:15 PM1/28/20
to Henning Schild, isar-users
On 28.01.20 22:51, Henning Schild wrote:
> Not sure i fully get it but this one seems almost independent of the
> risc-v stuff. More like a generic cleanup to be applied before adding
> risc-v. Might be worth factoring out for early merge.

I think this can be freely moved to an earlier position in the queue. I
can try this when sending v3. But it does belong in this context as the
later part of series depends on the cleanup.

Jan

Jan Kiszka

unread,
Jan 28, 2020, 5:06:21 PM1/28/20
to vijai kumar, isar-users
On 28.01.20 20:23, vijai kumar wrote:
> Hi Jan,
>
> A couple of observations.
>
> 1. Entry for qemuriscv64-sid-ports is missing in BBMULTICONFIG.

Good catch. I was not using this but rather a local kas file, so this
slipped through.

> 2. My distro (Xubuntu 18.04) does not seem to have the latest
> qemu-debootstrap to support riscv. It fails with unknown arch.
> I have to manually hack qemu-debootstrap to add an entry for riscv64.
>
> If you have a buster host, it should work out of the box I guess. It has
> the latest debian package.

Always use kasproject/kas-isar when not building on Debian natively. I
do the same on SUSE. There is no point in worrying about *Ubuntu for us.

Thanks for testing,
Jan

>
> Thanks,
> Vijai Kumar K
>
> On Tuesday, January 28, 2020 at 9:32:49 PM UTC+5:30, Jan Kiszka wrote:
>
> On 28.01.20 16:51, vijai kumar wrote:
> > Hi Jan,
> >
> > Actually I wanted to try this out. Do you have a tree from which
> I can
> > get this series?
> >
> > I am yet to set up my mail client to download patches. Sorry
> about that.
> >
>
> No problem. Just pushed the branch (un-rebased) to
> https://github.com/siemens/isar/commits/jan/queue
> <https://github.com/siemens/isar/commits/jan/queue>.
>
> Jan
>
> --
> Siemens AG, Corporate Technology, CT RDA IOT SES-DE
> Corporate Competence Center Embedded Linux
>
> --
> You received this message because you are subscribed to the Google
> Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to isar-users+...@googlegroups.com
> <mailto:isar-users+...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/isar-users/946ae65d-ac00-4f74-870e-1be88dc2e741%40googlegroups.com
> <https://groups.google.com/d/msgid/isar-users/946ae65d-ac00-4f74-870e-1be88dc2e741%40googlegroups.com?utm_medium=email&utm_source=footer>.

Jan Kiszka

unread,
Jan 29, 2020, 5:30:08 AM1/29/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Move all the needless duplications from the multiconfigs into the
machine configs, reducing the multiconfigs to MACHINE and DISTRO
settings - with the only exception of qemuamd64-buster-tgz.conf.

Note that this also switches all qemui386 targets to the 686-pae kernel.
So far, only the stretch target used it - for whatever reason.

As the QEMU data is now in the machine config, start_vm also needs to be
updated to pull from there, no longer from any multiconfig.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/conf/machine/qemuamd64.conf | 17 +++++++++++++++--
meta-isar/conf/machine/qemuarm.conf | 16 ++++++++++++++--
meta-isar/conf/machine/qemuarm64.conf | 16 ++++++++++++++--
meta-isar/conf/machine/qemui386.conf | 14 ++++++++++++--
meta-isar/conf/machine/qemumipsel.conf | 16 ++++++++++++++--
meta-isar/conf/multiconfig/qemuamd64-bullseye.conf | 16 ----------------
meta-isar/conf/multiconfig/qemuamd64-buster-tgz.conf | 6 ------
meta-isar/conf/multiconfig/qemuamd64-buster.conf | 16 ----------------
meta-isar/conf/multiconfig/qemuamd64-stretch.conf | 13 -------------
meta-isar/conf/multiconfig/qemuarm-bullseye.conf | 12 ------------
meta-isar/conf/multiconfig/qemuarm-buster.conf | 12 ------------
meta-isar/conf/multiconfig/qemuarm-stretch.conf | 12 ------------
meta-isar/conf/multiconfig/qemuarm64-bullseye.conf | 12 ------------
meta-isar/conf/multiconfig/qemuarm64-buster.conf | 12 ------------
meta-isar/conf/multiconfig/qemuarm64-stretch.conf | 12 ------------
meta-isar/conf/multiconfig/qemui386-bullseye.conf | 13 -------------
meta-isar/conf/multiconfig/qemui386-buster.conf | 13 -------------
meta-isar/conf/multiconfig/qemui386-stretch.conf | 13 -------------
meta-isar/conf/multiconfig/qemumipsel-bullseye.conf | 12 ------------
meta-isar/conf/multiconfig/qemumipsel-buster.conf | 12 ------------
meta-isar/conf/multiconfig/qemumipsel-stretch.conf | 12 ------------
scripts/start_vm | 5 +----
22 files changed, 70 insertions(+), 212 deletions(-)
diff --git a/scripts/start_vm b/scripts/start_vm
index 71b55f25..321a8c0c 100755
--- a/scripts/start_vm
+++ b/scripts/start_vm
@@ -107,10 +107,7 @@ readonly IMAGE_DIR=$DEPLOY_DIR_IMAGE
readonly ISARROOT="$(dirname "$0")"/..

readonly MACHINE_CONF=$ISARROOT/meta-isar/conf/machine/qemu$ARCH.conf
-eval "$(egrep 'MACHINE_SERIAL' $MACHINE_CONF |bb2sh)"
-
-readonly CONFIG_CONF=$ISARROOT/meta-isar/conf/multiconfig/qemu$ARCH-$DISTRO.conf
-eval "$(egrep 'QEMU_' $CONFIG_CONF |bb2sh)"
+eval "$(egrep 'MACHINE_SERIAL|QEMU_' $MACHINE_CONF |bb2sh)"

eval $(bitbake -e mc:qemu$ARCH-$DISTRO:isar-image-base | grep "^IMAGE_TYPE=")
case "$IMAGE_TYPE" in
--
2.16.4

Jan Kiszka

unread,
Jan 29, 2020, 5:30:09 AM1/29/20
to isar-users, Cedric Hombourger, vijai kumar
Changes since v2:
- move qemu multiconfigs refactoring to the front
- fix start_vm regression caused by multiconfigs refactoring
- fix kernel image copy-out
- update help output of start_vm
- add missing BBMULTICONFIG entries to local.conf.sample
- add missing QEMU_ARCH to qemuriscv64.conf

Series is also available at https://github.com/siemens/isar/commits/jan/queue.

Jan


CC: Cedric Hombourger <Cedric_H...@mentor.com>
CC: vijai kumar <vijaikumar....@gmail.com>

Jan Kiszka (14):
meta-isar: Clean up qemu multiconfigs
meta: Decouple kernel copy-out from KERNEL_FILE
meta: Add debian-sid-ports distro config
meta: Add RISC-V architecture
meta: Allow cross-compilation for RISC-V
start_vm: Add RISC-V 64-bit support
meta-isar: Add qemuriscv64 virtual target
u-boot-script: Account for variations of kernel files and boot
commands
linux-custom: Tune strip rule to cover vmlinux images as well
linux-custom: Add support for RISC-V
linux-modules: Add support for RISC-V
linux-mainline: Avoid failing UBIFS test when defconfig does not
support it
linux-mainline: Update to 5.4.10
meta-isar: Add HiFive Unleashed board as physical RISC-V target

meta-isar/conf/local.conf.sample | 2 ++
meta-isar/conf/machine/qemuamd64.conf | 17 +++++++--
meta-isar/conf/machine/qemuarm.conf | 16 +++++++--
meta-isar/conf/machine/qemuarm64.conf | 16 +++++++--
meta-isar/conf/machine/qemui386.conf | 14 ++++++--
meta-isar/conf/machine/qemumipsel.conf | 16 +++++++--
meta-isar/conf/machine/qemuriscv64.conf | 25 +++++++++++++
meta/classes/image.bbclass | 5 ++-
meta/conf/bitbake.conf | 2 ++
meta/conf/distro/debian-sid-ports.conf | 25 +++++++++++++
meta/conf/distro/debian-sid-ports.list | 2 ++
meta/conf/distro/debian-sid.list | 2 ++
.../u-boot-script/files/update-u-boot-script | 22 ++++++++----
.../base-apt/files/distributions.in | 2 +-
.../buildchroot/buildchroot-host.bb | 7 ++++
.../crossbuild-essential-riscv64_0.1-isar.bb | 11 ++++++
.../isar-apt/files/distributions.in | 2 +-
.../recipes-kernel/linux-module/files/debian/rules | 3 ++
.../linux/files/debian/isar/install.tmpl | 10 +++---
meta/recipes-kernel/linux/files/debian/rules.tmpl | 2 +-
meta/recipes-kernel/linux/linux-custom.inc | 2 ++
scripts/start_vm | 11 +++---
48 files changed, 269 insertions(+), 276 deletions(-)
create mode 100644 meta-isar/conf/machine/qemuriscv64.conf
create mode 100644 meta-isar/conf/machine/sifive-fu540.conf
create mode 100644 meta-isar/conf/multiconfig/qemuriscv64-sid-ports.conf
create mode 100644 meta-isar/conf/multiconfig/sifive-fu540-sid-ports.conf
create mode 100644 meta-isar/recipes-bsp/opensbi/files/sifive-fu540-rules
create mode 100644 meta-isar/recipes-bsp/opensbi/opensbi-sifive-fu540_0.5.bb
delete mode 100644 meta-isar/recipes-kernel/linux/files/0001-ARM-dts-socfpga-Rename-socfpga_cyclone5_de0_-sockit-.patch
rename meta-isar/recipes-kernel/linux/{linux-mainline_4.19.88.bb => linux-mainline_5.4.10.bb} (64%)
create mode 100644 meta-isar/scripts/lib/wic/canned-wks/sifive-fu540.wks
create mode 100644 meta/conf/distro/debian-sid-ports.conf
create mode 100644 meta/conf/distro/debian-sid-ports.list
create mode 100644 meta/conf/distro/debian-sid.list
create mode 100644 meta/recipes-devtools/crossbuild-essential-riscv64/crossbuild-essential-riscv64_0.1-isar.bb

--
2.16.4

Jan Kiszka

unread,
Jan 29, 2020, 5:30:10 AM1/29/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Will be relevant for RISC-V, might be already for MIPS.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---

Jan Kiszka

unread,
Jan 29, 2020, 5:30:10 AM1/29/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

This builds a QEMU image for the RISC-V 64-bit architecture from Debian
sid ports. Run with "start_vm -a riscv64 -d sid-ports".

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/conf/local.conf.sample | 1 +
meta-isar/conf/machine/qemuriscv64.conf | 25 ++++++++++++++++++++++
.../conf/multiconfig/qemuriscv64-sid-ports.conf | 8 +++++++
.../example-module/example-module.bb | 1 +
4 files changed, 35 insertions(+)
create mode 100644 meta-isar/conf/machine/qemuriscv64.conf
create mode 100644 meta-isar/conf/multiconfig/qemuriscv64-sid-ports.conf

diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample
index 280e0072..9a602bee 100644
--- a/meta-isar/conf/local.conf.sample
+++ b/meta-isar/conf/local.conf.sample
@@ -54,6 +54,7 @@ BBMULTICONFIG = " \
qemumipsel-stretch \
qemumipsel-buster \
qemumipsel-bullseye \
+ qemuriscv64-sid-ports \
bananapi-buster \
de0-nano-soc-stretch \
hikey-stretch \
diff --git a/meta-isar/conf/machine/qemuriscv64.conf b/meta-isar/conf/machine/qemuriscv64.conf
new file mode 100644
index 00000000..f4f5312a
--- /dev/null
+++ b/meta-isar/conf/machine/qemuriscv64.conf
@@ -0,0 +1,25 @@
+# This software is a part of ISAR.
+# Copyright (C) 2015-2017 ilbers GmbH
+# Copyright (c) Siemens AG, 2020
+#
+# SPDX-License-Identifier: MIT
+
+DISTRO_ARCH ?= "riscv64"
+
+KERNEL_NAME ?= "riscv64"
+
+IMAGE_TYPE ?= "ext4-img"
+
+QEMU_ROOTFS_DEV ?= "vda"
+
+QEMU_ARCH ?= "riscv64"
+QEMU_MACHINE ?= "virt"
+QEMU_CPU ?= "rv64gcsu-v1.10.0"
+# TODO: start_vm doesn't support multiline vars
+QEMU_DISK_ARGS ?= "-drive file=##ROOTFS_IMAGE##,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0"
+
+MACHINE_SERIAL ?= "ttyS0"
+BAUDRATE_TTY ?= "115200"
+
+# when enabled, rebuilding the initramfs fails with out-of-space error
+IMAGE_INSTALL_remove = "enable-fsck"
diff --git a/meta-isar/conf/multiconfig/qemuriscv64-sid-ports.conf b/meta-isar/conf/multiconfig/qemuriscv64-sid-ports.conf
new file mode 100644
index 00000000..2556cf7f
--- /dev/null
+++ b/meta-isar/conf/multiconfig/qemuriscv64-sid-ports.conf
@@ -0,0 +1,8 @@
+# This software is a part of ISAR.
+# Copyright (C) 2017 ilbers GmbH
+# Copyright (c) Siemens AG, 2019-2020
+#
+# SPDX-License-Identifier: MIT
+

Jan Kiszka

unread,
Jan 29, 2020, 5:30:10 AM1/29/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

This arch is still special in that QEMU does not support directly
booting the kernel via "-kernel". Rather, you need to install opensbi on
the host and load fw_jump.elf as kernel while the actual kernel goes at
a magic address via the loader device.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
scripts/start_vm | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/scripts/start_vm b/scripts/start_vm
index 321a8c0c..eda49462 100755
--- a/scripts/start_vm
+++ b/scripts/start_vm
@@ -43,7 +43,7 @@ show_help() {
echo
echo "Parameters:"
echo " -a, --arch ARCH set isar machine architecture."
- echo " Supported: arm, i386, amd64, arm64, mipsel."
+ echo " Supported: arm, i386, amd64, arm64, mipsel, riscv64."
echo " -b, --build BUILD set path to build directory."
echo " -d, --distro DISTRO set isar Debian distribution."
echo " Supported: stretch, buster"
@@ -119,6 +119,10 @@ case "$IMAGE_TYPE" in

Jan Kiszka

unread,
Jan 29, 2020, 5:30:10 AM1/29/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

This arch still lacks crossbuild-essential-riscv64, so we need to stub
some pieces. Specifically, we have to create a dummy package of the same
name so that mk-build-deps works fine. For buildchroot-host, we replace
the package by open-coding its dependencies.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
new file mode 100644
index 00000000..eeefba92
--- /dev/null
+++ b/meta/recipes-devtools/crossbuild-essential-riscv64/crossbuild-essential-riscv64_0.1-isar.bb
@@ -0,0 +1,11 @@
+# This software is a part of ISAR.
+#
+# Copyright (c) Siemens AG, 2020
+#
+# SPDX-License-Identifier: MIT
+

Jan Kiszka

unread,
Jan 29, 2020, 5:30:11 AM1/29/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

The addition RISC-V revealed that we already had an issue with mipsel
regarding vmlinuz vs. vmlinux, it was just not stressed so far.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---

Jan Kiszka

unread,
Jan 29, 2020, 5:30:11 AM1/29/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Will be relevant for RISC-V.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---

Jan Kiszka

unread,
Jan 29, 2020, 5:30:11 AM1/29/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Needed for the HiFive Unleashed board that does not boot with the
Debian kernel due to oversized initramfs and also does not work with
that 4.19 kernel.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
...fpga-Rename-socfpga_cyclone5_de0_-sockit-.patch | 41 ----------------------
...ainline_4.19.88.bb => linux-mainline_5.4.10.bb} | 7 ++--
2 files changed, 2 insertions(+), 46 deletions(-)
delete mode 100644 meta-isar/recipes-kernel/linux/files/0001-ARM-dts-socfpga-Rename-socfpga_cyclone5_de0_-sockit-.patch

Jan Kiszka

unread,
Jan 29, 2020, 5:30:11 AM1/29/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---

Jan Kiszka

unread,
Jan 29, 2020, 5:30:11 AM1/29/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta/recipes-kernel/linux-module/files/debian/rules | 3 +++
1 file changed, 3 insertions(+)

diff --git a/meta/recipes-kernel/linux-module/files/debian/rules b/meta/recipes-kernel/linux-module/files/debian/rules
index 7a89e412..c476bf32 100755
--- a/meta/recipes-kernel/linux-module/files/debian/rules
+++ b/meta/recipes-kernel/linux-module/files/debian/rules
@@ -17,6 +17,9 @@ endif
ifeq ($(DEB_HOST_GNU_CPU), aarch64)
export ARCH=arm64
endif
+ifeq ($(DEB_HOST_GNU_CPU), riscv64)
+export ARCH=riscv
+endif
ifneq (,$(findstring 86,$(DEB_HOST_GNU_CPU)))
export ARCH=x86
endif
--
2.16.4

Jan Kiszka

unread,
Jan 29, 2020, 5:30:12 AM1/29/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

The Unleashed board (https://www.sifive.com/boards/hifive-unleashed) was
the first one running regular Linux. This target generates a Debian
sid image that starts fine from an SD-card in default boot mode.

The Debian kernel does not work, though, because of an excessive
initramfs being generated (45MB) that gets stuck. As the MMC driver is
in that image, we also cannot disable the initramfs. So build the
mainline kernel which is starts also faster.

We can use the binary U-Boot from Debian sid, though.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/conf/local.conf.sample | 1 +
meta-isar/conf/machine/sifive-fu540.conf | 15 ++++++++++++++
.../conf/multiconfig/sifive-fu540-sid-ports.conf | 7 +++++++
.../recipes-bsp/opensbi/files/sifive-fu540-rules | 13 ++++++++++++
.../opensbi/opensbi-sifive-fu540_0.5.bb | 23 ++++++++++++++++++++++
.../scripts/lib/wic/canned-wks/sifive-fu540.wks | 10 ++++++++++
6 files changed, 69 insertions(+)
create mode 100644 meta-isar/conf/machine/sifive-fu540.conf
create mode 100644 meta-isar/conf/multiconfig/sifive-fu540-sid-ports.conf
create mode 100644 meta-isar/recipes-bsp/opensbi/files/sifive-fu540-rules
create mode 100644 meta-isar/recipes-bsp/opensbi/opensbi-sifive-fu540_0.5.bb
create mode 100644 meta-isar/scripts/lib/wic/canned-wks/sifive-fu540.wks

diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample
index 9a602bee..eeea867f 100644
--- a/meta-isar/conf/local.conf.sample
+++ b/meta-isar/conf/local.conf.sample
@@ -60,6 +60,7 @@ BBMULTICONFIG = " \
hikey-stretch \
nand-ubi-demo-buster \
rpi-stretch \
+ sifive-fu540-sid-ports \
"

#
diff --git a/meta-isar/conf/machine/sifive-fu540.conf b/meta-isar/conf/machine/sifive-fu540.conf
new file mode 100644
index 00000000..c815f4a8
--- /dev/null
+++ b/meta-isar/conf/machine/sifive-fu540.conf
@@ -0,0 +1,15 @@
+#
+# Copyright (c) Siemens AG, 2020
+#
+# SPDX-License-Identifier: MIT
+
+DISTRO_ARCH = "riscv64"
+
+KERNEL_NAME ?= "mainline"
+
+IMAGE_TYPE ?= "wic-img"
+WKS_FILE ?= "sifive-fu540"
+IMAGER_INSTALL += "opensbi-sifive-fu540"
+IMAGER_BUILD_DEPS += "opensbi-sifive-fu540"
+
+IMAGE_INSTALL += "u-boot-script"
diff --git a/meta-isar/conf/multiconfig/sifive-fu540-sid-ports.conf b/meta-isar/conf/multiconfig/sifive-fu540-sid-ports.conf
new file mode 100644
index 00000000..e4e0248c
--- /dev/null
+++ b/meta-isar/conf/multiconfig/sifive-fu540-sid-ports.conf
@@ -0,0 +1,7 @@
+#
+# Copyright (c) Siemens AG, 2020
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE = "sifive-fu540"
+DISTRO = "debian-sid-ports"
diff --git a/meta-isar/recipes-bsp/opensbi/files/sifive-fu540-rules b/meta-isar/recipes-bsp/opensbi/files/sifive-fu540-rules
new file mode 100644
index 00000000..c8feb715
--- /dev/null
+++ b/meta-isar/recipes-bsp/opensbi/files/sifive-fu540-rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+export CROSS_COMPILE=$(DEB_HOST_GNU_TYPE)-
+endif
+
+PARALLEL_BUILD=-j $(shell echo $$(($$(nproc) * 2)))
+
+override_dh_auto_build:
+ CFLAGS= LDFLAGS= $(MAKE) $(PARALLEL_BUILD) PLATFORM=sifive/fu540 FW_PAYLOAD_PATH=/usr/lib/u-boot/sifive_fu540/u-boot.bin
+
+%:
+ dh $@
diff --git a/meta-isar/recipes-bsp/opensbi/opensbi-sifive-fu540_0.5.bb b/meta-isar/recipes-bsp/opensbi/opensbi-sifive-fu540_0.5.bb
new file mode 100644
index 00000000..b9d0c3e1
--- /dev/null
+++ b/meta-isar/recipes-bsp/opensbi/opensbi-sifive-fu540_0.5.bb
@@ -0,0 +1,23 @@
+#
+# Copyright (c) Siemens AG, 2020
+#
+# SPDX-License-Identifier: MIT
+
+inherit dpkg
+
+SRC_URI = " \
+ https://github.com/riscv/opensbi/archive/v${PV}.tar.gz;downloadfilename=opensbi-${PV}.tar.gz \
+ file://sifive-fu540-rules"
+SRC_URI[sha256sum] = "bc82f1e63663cafb7976b324d8a01263510cfd816063dc89e0ccffb9763fb1dd"
+
+S = "${WORKDIR}/opensbi-${PV}"
+
+do_prepare_build[cleandirs] += "${S}/debian"
+do_prepare_build() {
+ cp ${WORKDIR}/sifive-fu540-rules ${WORKDIR}/rules
+ deb_debianize
+
+ sed -i 's/\(Build-Depends:.*\)/\1, u-boot-sifive/' ${S}/debian/control
+
+ echo "build/platform/sifive/fu540/firmware/fw_payload.bin /usr/lib/opensbi/sifive-fu540/" > ${S}/debian/install
+}
diff --git a/meta-isar/scripts/lib/wic/canned-wks/sifive-fu540.wks b/meta-isar/scripts/lib/wic/canned-wks/sifive-fu540.wks
new file mode 100644
index 00000000..445b9d02
--- /dev/null
+++ b/meta-isar/scripts/lib/wic/canned-wks/sifive-fu540.wks
@@ -0,0 +1,10 @@
+#
+# Copyright (c) Siemens AG, 2020
+#
+# SPDX-License-Identifier: MIT
+

Baurzhan Ismagulov

unread,
Feb 12, 2020, 3:19:39 PM2/12/20
to isar-users
On Wed, Jan 29, 2020 at 11:29:52AM +0100, Jan Kiszka wrote:
> Changes since v2:
> - move qemu multiconfigs refactoring to the front
> - fix start_vm regression caused by multiconfigs refactoring
> - fix kernel image copy-out
> - update help output of start_vm
> - add missing BBMULTICONFIG entries to local.conf.sample
> - add missing QEMU_ARCH to qemuriscv64.conf

Applied to next, thanks.

With kind regards,
Baurzhan.
Reply all
Reply to author
Forward
0 new messages