* [PATCH 0/5] RISC-V support
@ 2020-01-10 17:26 Jan Kiszka
2020-01-10 17:26 ` [PATCH 1/5] meta: Add debian-sid-ports distro config Jan Kiszka
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Jan Kiszka @ 2020-01-10 17:26 UTC (permalink / raw)
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* [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
end of thread, other threads:[~2020-01-10 17:26 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [PATCH 3/5] meta: Allow cross-compilation for RISC-V 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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox