Re: [PATCH 1/1] Proposal to assign SBI Implementation ID 5 to Diosix

Alistair Francis <alistair.francis@...>

On Thu, 2020-10-29 at 03:09 -0700, Chris Williams wrote:
Hello all,

This is a proposal to request SBI Implementation ID 5 for the
open-source Diosix project:

Diosix is a bare-metal hypervisor written in Rust for 32- and 64-bit
RISC-V-compatible systems. It uses the RISC-V privileged
architecture's physical memory protection (PMP) functionality to
isolate and context-switch between individual guest environments. As
the RISC-V hypervisor extension approaches ratification, Diosix will
also support that functionality to manage guest environments, if
available. Diosix can start RISC-V Linux kernels in separate guest
environments, and service their SBI calls, such as early boot message
output. The ultimate goal of the project is to provide a fully
native hypervisor for RISC-V that can multiplex a mix of guest
operating systems on one or more processors, and handle their SBI
calls as per the API specification.
It's so great to see more and more Rust implementations!

Diosix runs within Qemu, and the project is containerized, allowing
developers to spin up an instance of the hypervisor using Docker or
Google Cloud Run. Work is underway to verify the software runs on
hardware, such as SiFive's HiFive Unleashed board, which is in the
project's possession. Diosix parses and generates Device Tree
structures, in memory-safe Rust, allowing it to start on pretty much
any compatible system, and describe configurable virtual environments
to guests.
Awesome! I like how you have split the crates out. Any plan on
submitting them to With more and more embedded Rust work
ongoing it would be great to re-use a lot of the code.

The filesystem you are working on is a great candidate for this :)

Also, the usual shoutout about using the Tock register interfaces:, as I think it' a nice API for

I believe Diosix is an important and unique project in the RISC-V
ecosystem as it is specifically targeted at RISC-V features and is
written from the ground up in Rust, a systems programming language
focused on security and speed. The hypervisor is designed to run not
just guest operating system and applications in isolated virtual
environments but also system services, such as network filters,
graphical user interfaces, filing systems, and so on, as required. It
is for this reason that I respectfully request an implementation ID
for the Diosix project so that not only can it be identified by
guest-level software, but also provide functionality via the firmware
specific extension space as well as implementing the SBI

Below is a patch to assign implementation ID 5 to Diosix. Thank you
for your consideration,

Signed-off-by: Chris Williams <diodesign@...>
Reviewed-by: Alistair Francis <alistair.francis@...>


riscv-sbi.adoc | 1 +
1 file changed, 1 insertion(+)

diff --git a/riscv-sbi.adoc b/riscv-sbi.adoc
index a339f43..d021891 100644
--- a/riscv-sbi.adoc
+++ b/riscv-sbi.adoc
@@ -184,6 +184,7 @@ value for any of these CSRs.
| 2 | Xvisor
| 3 | KVM
| 4 | RustSBI
+| 5 | Diosix

== Legacy SBI Extension, Extension IDs 0x00 through 0x0F

Join { to automatically receive all group messages.