public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
* [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