Message ID | cover.1690488628.git.juli@incana.org |
---|---|
Headers |
Return-Path: <guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org> X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 697BB27BBE2; Thu, 27 Jul 2023 22:59:44 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 37AF727BBE9 for <patchwork@mira.cbaines.net>; Thu, 27 Jul 2023 22:59:41 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <guix-patches-bounces@gnu.org>) id 1qP8LC-0005Hy-Uq; Thu, 27 Jul 2023 17:16:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <Debian-debbugs@debbugs.gnu.org>) id 1qP8L7-0005Hm-8A for guix-patches@gnu.org; Thu, 27 Jul 2023 17:16:06 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <Debian-debbugs@debbugs.gnu.org>) id 1qP8L6-0001Sv-73; Thu, 27 Jul 2023 17:16:04 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from <Debian-debbugs@debbugs.gnu.org>) id 1qP8L4-0000Mh-FJ; Thu, 27 Jul 2023 17:16:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#64907] [PATCH 0/2] gnu: Add rvvm support packages. Resent-From: Juliana Sims <juli@incana.org> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces@debbugs.gnu.org> Resent-CC: efraim@flashner.co.il, ludo@gnu.org, vagrant@debian.org, guix-patches@gnu.org Resent-Date: Thu, 27 Jul 2023 21:16:02 +0000 Resent-Message-ID: <handler.64907.B.16904925231341@debbugs.gnu.org> Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 64907 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 64907@debbugs.gnu.org Cc: Juliana Sims <juli@incana.org>, Efraim Flashner <efraim@flashner.co.il>, Ludovic =?utf-8?q?Court=C3=A8s?= <ludo@gnu.org>, Vagrant Cascadian <vagrant@debian.org> X-Debbugs-Original-To: guix-patches@gnu.org X-Debbugs-Original-Xcc: Efraim Flashner <efraim@flashner.co.il>, Ludovic =?utf-8?q?Court=C3=A8s?= <ludo@gnu.org>, Vagrant Cascadian <vagrant@debian.org> Received: via spool by submit@debbugs.gnu.org id=B.16904925231341 (code B ref -1); Thu, 27 Jul 2023 21:16:02 +0000 Received: (at submit) by debbugs.gnu.org; 27 Jul 2023 21:15:23 +0000 Received: from localhost ([127.0.0.1]:43232 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces@debbugs.gnu.org>) id 1qP8KQ-0000LY-EM for submit@debbugs.gnu.org; Thu, 27 Jul 2023 17:15:22 -0400 Received: from lists.gnu.org ([2001:470:142::17]:50760) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juli@incana.org>) id 1qP8KM-0000LE-Vf for submit@debbugs.gnu.org; Thu, 27 Jul 2023 17:15:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <juli@incana.org>) id 1qP8K8-00055i-3D for guix-patches@gnu.org; Thu, 27 Jul 2023 17:15:05 -0400 Received: from relay9-d.mail.gandi.net ([217.70.183.199]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <juli@incana.org>) id 1qP8K4-00012T-1f for guix-patches@gnu.org; Thu, 27 Jul 2023 17:15:02 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id 2C5E5FF803; Thu, 27 Jul 2023 21:14:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=incana.org; s=gm1; t=1690492494; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=2sZlJN+3DdmqsmiwW2tq3IrYx0wqr1Ys3QF14HnKb9g=; b=Kngns+9FmsO/gog7KJ8AxBZAR4I5SF3JVXnj4XlR0loBcA2Kh+NQrc83j4yoaybZqAhkIi TiP2bHE94pHxEHCX42SlSgOHw35HWfy3GW4qdHJsPwgrk3xFAdhUdNwYuY0+6DyNRLaF8a TP2tL8f+c1L0NvWyP8mFnfJoQxsXAxBk8pE07xGpvscVXZUg6eZdqgs0gUMH3LcG0KzCUO bmo+DYj1zOz/f4VmXMGN2buhtJBM0epqZnMCPwg73cibbwhexKAArrlyQ/cBi46I/VoTVp lpiYqMReb01karg8tD5T0IV5jhz0FoJnVai9kzDeOIKEBp73xDlhjqUax+IBRw== From: Juliana Sims <juli@incana.org> Date: Thu, 27 Jul 2023 16:13:57 -0400 Message-ID: <cover.1690488628.git.juli@incana.org> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-GND-Sasl: juli@incana.org Received-SPF: pass client-ip=217.70.183.199; envelope-from=juli@incana.org; helo=relay9-d.mail.gandi.net X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: <guix-patches.gnu.org> List-Unsubscribe: <https://lists.gnu.org/mailman/options/guix-patches>, <mailto:guix-patches-request@gnu.org?subject=unsubscribe> List-Archive: <https://lists.gnu.org/archive/html/guix-patches> List-Post: <mailto:guix-patches@gnu.org> List-Help: <mailto:guix-patches-request@gnu.org?subject=help> List-Subscribe: <https://lists.gnu.org/mailman/listinfo/guix-patches>, <mailto:guix-patches-request@gnu.org?subject=subscribe> Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches |
Series |
gnu: Add rvvm support packages.
|
|
Message
Juliana Sims
July 27, 2023, 8:13 p.m. UTC
Hello, These patches create specialized U-Boot and OpenSBI packages to use with RVVM by applying RVVM's author's patches to those projects. Additionally, they build this patched version of U-Boot into OpenSBI's `fw_payload.bin`, mimicking the binary release from RVVM. The RVVM author claims faster execution than QEMU. As such, the ultimate goal of these packages is to create a system service which will allow developers to easily run Guix under RVVM for the purpose of development, much like hurd-vm-service-type provides a way to run Hurd under Guix. However, that's a larger project, and getting these packaged as they are will already prove useful. Anyone wishing to use them can simply run: ``` guix shell --pure rvvm opensbi-rvvm rvvm /gnu/store/<hash>-opensbi-rvvm-<version>/fw_payload.bin -i <os>.img [...] ``` I have tested these packages with the FreeBSD-13.2 RV64 raw disk image, so I know they run successfully. It's worth noting that opensbi-generic works fine with RVVM. However, it does not provide `fw_payload.bin` - only `fw_jump.bin` - so this version provides more flexibility. That said, opensbi-rvvm is 5.3 MB compared to opensbi-generic's 1.3 MB. Because of that, I'm ambivalent about adding it. I leave the decision on whether or not to include it entirely up to others; there's no sense in throwing away work I already did if it may be useful. It may be worth noting that RVVM also has patches for the Linux kernel. However, upon inspection they seem to primarily be concerned with decreasing binary size, which can be worked around if needed. The linux-libre-riscv64-generic package should work just fine, but this has not been tested. Thanks, Juli Juliana Sims (2): gnu: Add u-boot-rvvm. gnu: Add opensbi-rvvm. gnu/packages/bootloaders.scm | 23 +++++++ gnu/packages/firmware.scm | 32 +++++++++ .../patches/opensbi-rvvm-lowram-fdt.patch | 21 ++++++ .../patches/u-boot-rvvm-support.patch | 67 +++++++++++++++++++ 4 files changed, 143 insertions(+) create mode 100644 gnu/packages/patches/opensbi-rvvm-lowram-fdt.patch create mode 100644 gnu/packages/patches/u-boot-rvvm-support.patch base-commit: 35c8d631d2bd63c64e863b5509f29fdcb7f856e6
Comments
Hello, Juliana Sims <juli@incana.org> skribis: > These patches create specialized U-Boot and OpenSBI packages to use with RVVM by > applying RVVM's author's patches to those projects. Additionally, they build > this patched version of U-Boot into OpenSBI's `fw_payload.bin`, mimicking the > binary release from RVVM. Vagrant, Efraim: could you take a look? https://issues.guix.gnu.org/64907 I’ll take this as an opportunity to remove myself from the ‘embedded’ team, where I ended up unwillingly in 7cf606a5a0515b9a124fb58a06e3daa24a4a4e69. :-) Ludo’.
On 2023-07-27, Juliana Sims wrote: > These patches create specialized U-Boot and OpenSBI packages to use with RVVM by > applying RVVM's author's patches to those projects. Additionally, they build > this patched version of U-Boot into OpenSBI's `fw_payload.bin`, mimicking the > binary release from RVVM. It could be a lot of work over time to maintain a patched version of u-boot and/or opensbi, especially if those patches are not going to be merged upstream at some point... > The RVVM author claims faster execution than QEMU. How much faster? Knowing nothing about RVVM, When I asked on irc.libera.chat #riscv that was basically the question I got... So if going that route, would want to make sure the performance difference is significant. > As such, the ultimate goal of > these packages is to create a system service which will allow developers to > easily run Guix under RVVM for the purpose of development, much like > hurd-vm-service-type provides a way to run Hurd under Guix. However, that's a > larger project, and getting these packaged as they are will already prove > useful. Anyone wishing to use them can simply run: > > ``` > guix shell --pure rvvm opensbi-rvvm > rvvm /gnu/store/<hash>-opensbi-rvvm-<version>/fw_payload.bin -i <os>.img [...] > ``` > > I have tested these packages with the FreeBSD-13.2 RV64 raw disk image, so I > know they run successfully. > > It's worth noting that opensbi-generic works fine with RVVM. However, it does > not provide `fw_payload.bin` - only `fw_jump.bin` - so this version provides > more flexibility. That said, opensbi-rvvm is 5.3 MB compared to > opensbi-generic's 1.3 MB. Because of that, I'm ambivalent about adding it. I > leave the decision on whether or not to include it entirely up to others; > there's no sense in throwing away work I already did if it may be useful. If it requires patches, I am a bit concerned about long-term maintenence... If it does not require patches, that does not seem like a huge increase, or an alternate build that also ships the fw_payload.bin file. > It may be worth noting that RVVM also has patches for the Linux kernel. However, > upon inspection they seem to primarily be concerned with decreasing binary size, > which can be worked around if needed. The linux-libre-riscv64-generic package > should work just fine, but this has not been tested. Worked around how? live well, vagrant
On 2023-08-29, Vagrant Cascadian wrote: > On 2023-07-27, Juliana Sims wrote: >> These patches create specialized U-Boot and OpenSBI packages to use with RVVM by >> applying RVVM's author's patches to those projects. Additionally, they build >> this patched version of U-Boot into OpenSBI's `fw_payload.bin`, mimicking the >> binary release from RVVM. ... >> It's worth noting that opensbi-generic works fine with RVVM. However, it does >> not provide `fw_payload.bin` - only `fw_jump.bin` - so this version provides >> more flexibility. That said, opensbi-rvvm is 5.3 MB compared to >> opensbi-generic's 1.3 MB. Because of that, I'm ambivalent about adding it. I >> leave the decision on whether or not to include it entirely up to others; >> there's no sense in throwing away work I already did if it may be useful. > > If it requires patches, I am a bit concerned about long-term > maintenence... If it does not require patches, that does not seem like a > huge increase, or an alternate build that also ships the fw_payload.bin > file. Thinking a little more, from what I recall, the whole point of fw_jump.bin is so that you can dynamically specify the payload at runtime ... why do we need a separate fw_payload.bin created at build-time, if you can just pass a (potentially custom) payload at runtime? It has been a while since I have used these components for virtual riscv systems, so my memory may be a little rusty or recent usage may have changed... :) live well, vagrant
Hi Vagrant, > It could be a lot of work over time to maintain a patched version of > u-boot and/or opensbi, especially if those patches are not going to be > merged upstream at some point... I make a point of periodically updating and checking for the continued functionality of all new packages I submit to Guix. There is a fair bit of RISC-V work I would like to do over the next years so I would have no problem extending this personal policy to these packages as well. > How much faster? Knowing nothing about RVVM, When I asked on > irc.libera.chat #riscv that was basically the question I got... No idea, but having done a fair bit of RISC-V development on emulators, I'm willing to take anything I can get XD > Worked around how? So, that turn of phrase was pretty arbitrary, but the sentiment I wished to communicate is that I doubt most developers need Linux to be tiny. I don't even understand *why* Linux needs to be shrunk for rvvm; perhaps to minimize the disk space or memory given to it? If that's the case, then the work-around would be to give it more disk and memory from the host. > Thinking a little more, from what I recall, the whole point of > fw_jump.bin is so that you can dynamically specify the payload at > runtime ... why do we need a separate fw_payload.bin created at > build-time, if you can just pass a (potentially custom) payload at > runtime? As mentioned in the cover letter, you can drop the opensbi patch if you like. I didn't think to test opensbi-generic before packaging this patched version, and figured "waste not; want not." However, rvvm does not work with any version of u-boot currently in Guix. Hope this helps with any concerns. Let me know if I need to make any changes to the patch(es). Thanks, Juli
RVVM developer here. First of all, thanks for package support. There is v0.6 released which has stable networking and a lot of small features/fixes. The opensbi patch is not necessary at all. It is kinda an internal optimization patch I use because I like to optimize stuff, and when patches aren't getting accepted I put them in my repo. Generic OpenSBI works without a problem there. RVVM generally tries to be very compatible with QEMU, but some devices are different - for example instead of Virtio-blk, NVMe drives are emulated. This configuration is also possible on QEMU, so it's not like it's entirely incompatible - more like a minimal subset of it. The U-Boot patch is needed because, for some reason QEMU U-Boot config doesn't enable NVMe boot (however you can choose NVMe drives with QEMU, and they too won't work there). I believe this is an oversight on U-Boot side. I also enabled EFI framebuffer which is needed by Haiku OS guests. QEMU doesn't have an EFI framebuffer, but adding another feature into U-Boot doesn't hurt. It still works on QEMU afterwards. I also see mentions that I am purposely making RVVM incompatible with QEMU, and I want to remind you that this is not the case at all. The U-Boot issue is simply a lacking build option on their side, which affects some QEMU usecases too. It's more like QEMU U-Boot is incompatible with anything other than the default unconfigured QEMU Virt board. The real solution would be to reach upstream U-Boot and ask to enable NVMe boot hook, and options `VIDEO` `VIDEO_SIMPLE`. Example (notice it has other stuff enabled, not intended for upstream): https://github.com/LekKit/patches-misc/blob/master/uboot/uboot2024_rvvm_support.patch