* [PATCH 1/5] meta: Add debian-sid-ports distro config
2020-01-10 17:26 [PATCH 0/5] RISC-V support Jan Kiszka
@ 2020-01-10 17:26 ` Jan Kiszka
2020-01-10 17:26 ` [PATCH 2/5] meta: base/isar-apt: Add RISC-V architecture Jan Kiszka
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Jan Kiszka @ 2020-01-10 17:26 UTC (permalink / raw)
To: isar-users
From: Jan Kiszka <jan.kiszka@siemens.com>
This provides unstable ports configuration for the purpose of building
RISC-V targets. As this requires the archive keyring that is not
installed by default in the base system, we pull the current (2020)
archive key directly.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
meta/conf/distro/debian-sid-ports.conf | 21 +++++++++++++++++++++
meta/conf/distro/debian-sid-ports.list | 2 ++
meta/conf/distro/debian-sid.list | 2 ++
3 files changed, 25 insertions(+)
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
diff --git a/meta/conf/distro/debian-sid-ports.conf b/meta/conf/distro/debian-sid-ports.conf
new file mode 100644
index 00000000..70b4bdbf
--- /dev/null
+++ b/meta/conf/distro/debian-sid-ports.conf
@@ -0,0 +1,21 @@
+# This software is a part of ISAR.
+
+require debian-common.conf
+
+BASE_DISTRO_CODENAME = "sid"
+
+HOST_DISTRO ?= "debian-sid"
+
+DEBIAN_PORTS_KEY = "https://www.ports.debian.org/archive_2020.key;sha256sum=d24c6d2fe55e563ff0d998666b5e55dd8058742517a6839d9c23d201b48180c8"
+
+DISTRO_APT_SOURCES ?= "conf/distro/debian-${BASE_DISTRO_CODENAME}-ports.list"
+DISTRO_BOOTSTRAP_KEYS += "${DEBIAN_PORTS_KEY}"
+DISTRO_CONFIG_SCRIPT ?= "debian-configscript.sh"
+DISTRO_KERNELS ?= "riscv64"
+
+HOST_DISTRO_APT_SOURCES_append = " ${DISTRO_APT_SOURCES}"
+THIRD_PARTY_APT_KEYS += "${DEBIAN_PORTS_KEY}"
+
+IMAGE_PREINSTALL += "init"
+
+WIC_IMAGER_INSTALL += "python3-distutils"
diff --git a/meta/conf/distro/debian-sid-ports.list b/meta/conf/distro/debian-sid-ports.list
new file mode 100644
index 00000000..f699cbca
--- /dev/null
+++ b/meta/conf/distro/debian-sid-ports.list
@@ -0,0 +1,2 @@
+deb http://deb.debian.org/debian-ports sid main contrib non-free
+deb-src http://deb.debian.org/debian-ports sid main contrib non-free
diff --git a/meta/conf/distro/debian-sid.list b/meta/conf/distro/debian-sid.list
new file mode 100644
index 00000000..2b8158cc
--- /dev/null
+++ b/meta/conf/distro/debian-sid.list
@@ -0,0 +1,2 @@
+deb http://deb.debian.org/debian sid main contrib non-free
+deb-src http://deb.debian.org/debian sid main contrib non-free
--
2.16.4
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/5] meta: base/isar-apt: Add RISC-V architecture
2020-01-10 17:26 [PATCH 0/5] RISC-V support Jan Kiszka
2020-01-10 17:26 ` [PATCH 1/5] meta: Add debian-sid-ports distro config Jan Kiszka
@ 2020-01-10 17:26 ` Jan Kiszka
2020-01-10 17:26 ` [PATCH 3/5] meta: Allow cross-compilation for RISC-V Jan Kiszka
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Jan Kiszka @ 2020-01-10 17:26 UTC (permalink / raw)
To: isar-users
From: Jan Kiszka <jan.kiszka@siemens.com>
Allows to build/cache packages for this architecture.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
meta/recipes-devtools/base-apt/files/distributions.in | 2 +-
meta/recipes-devtools/isar-apt/files/distributions.in | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 3/5] meta: Allow cross-compilation for RISC-V
2020-01-10 17:26 [PATCH 0/5] RISC-V support Jan Kiszka
2020-01-10 17:26 ` [PATCH 1/5] meta: Add debian-sid-ports distro config Jan Kiszka
2020-01-10 17:26 ` [PATCH 2/5] meta: base/isar-apt: Add RISC-V architecture Jan Kiszka
@ 2020-01-10 17:26 ` Jan Kiszka
2020-01-10 17:26 ` [PATCH 4/5] start_vm: Add RISC-V 64-bit support Jan Kiszka
2020-01-10 17:26 ` [PATCH 5/5] meta-isar: Add qemuriscv64 virtual target Jan Kiszka
4 siblings, 0 replies; 6+ messages in thread
From: Jan Kiszka @ 2020-01-10 17:26 UTC (permalink / raw)
To: isar-users
From: Jan Kiszka <jan.kiszka@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.kiszka@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
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 4/5] start_vm: Add RISC-V 64-bit support
2020-01-10 17:26 [PATCH 0/5] RISC-V support Jan Kiszka
` (2 preceding siblings ...)
2020-01-10 17:26 ` [PATCH 3/5] meta: Allow cross-compilation for RISC-V Jan Kiszka
@ 2020-01-10 17:26 ` Jan Kiszka
2020-01-10 17:26 ` [PATCH 5/5] meta-isar: Add qemuriscv64 virtual target Jan Kiszka
4 siblings, 0 replies; 6+ messages in thread
From: Jan Kiszka @ 2020-01-10 17:26 UTC (permalink / raw)
To: isar-users
From: Jan Kiszka <jan.kiszka@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.kiszka@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
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 5/5] meta-isar: Add qemuriscv64 virtual target
2020-01-10 17:26 [PATCH 0/5] RISC-V support Jan Kiszka
` (3 preceding siblings ...)
2020-01-10 17:26 ` [PATCH 4/5] start_vm: Add RISC-V 64-bit support Jan Kiszka
@ 2020-01-10 17:26 ` Jan Kiszka
4 siblings, 0 replies; 6+ messages in thread
From: Jan Kiszka @ 2020-01-10 17:26 UTC (permalink / raw)
To: isar-users
From: Jan Kiszka <jan.kiszka@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.kiszka@siemens.com>
---
meta-isar/conf/machine/qemuriscv64.conf | 7 +++++++
.../conf/multiconfig/qemuriscv64-sid-ports.conf | 21 +++++++++++++++++++++
.../recipes-kernel/example-module/example-module.bb | 1 +
3 files changed, 29 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..b43c2853
--- /dev/null
+++ b/meta-isar/conf/machine/qemuriscv64.conf
@@ -0,0 +1,7 @@
+# This software is a part of ISAR.
+# Copyright (C) 2015-2017 ilbers GmbH
+
+MACHINE_SERIAL ?= "ttyS0"
+BAUDRATE_TTY ?= "115200"
+
+IMAGE_TYPE ?= "ext4-img"
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..942b7ed3
--- /dev/null
+++ b/meta-isar/conf/multiconfig/qemuriscv64-sid-ports.conf
@@ -0,0 +1,21 @@
+# This software is a part of ISAR.
+# Copyright (C) 2017 ilbers GmbH
+# Copyright (c) Siemens AG, 2019-2020
+
+MACHINE ?= "qemuriscv64"
+
+DISTRO ?= "debian-sid-ports"
+DISTRO_ARCH ?= "riscv64"
+
+KERNEL_NAME ?= "riscv64"
+
+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"
+
+# when enabled, rebuilding the initramfs fails with out-of-space error
+IMAGE_INSTALL_remove = "enable-fsck"
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
^ permalink raw reply [flat|nested] 6+ messages in thread