coreboot for risc-v was upstreamed in 2014 for rv-32, and 2015 for rv64, in priv mode, i.e., not 2019 as mentioned in the slides. oreboot (Rust) was released in 2019. As Rust capabilities have grown, oreboot went through an almost complete rewrite in 2022, becoming smaller and better. I removed 80KLOC that we no longer needed.
The 2015 coreboot work included an SBI. We've recently revived that SBI for coreboot, as it is considerably simpler, and relies on the new Linux support for
handling load/store traps. I recently removed the unaligned load/store support; in 2015, it was very small, but by 2024, with the growing complexity of RISC-V, the code had ballooned, and I don't trust C code that large, ever. Plus, somebody had "improved" it at some point, trying to catch up with the ever-more-complex risc-v architecture, and it was not working in all cases any more anyway.
The comment that coreboot does not support SMP is not quite right IMHO. The SMP startup in RISC-V was always assumed to happen in kernel, with spinloops,
although that is now deprecated in favor of HSM (which adds still more complexity and state in SBI, which worries me). I still would prefer to have Linux handle SMP startup, but that's not going to happen.
If you want to try a simpler SBI, you can look at coreboot's implementation, though it is not caught up with the SBI spec, which literally changes monthly. If you want to get away from C (good idea!) you can check out RustSBI, which is used in oreboot. OpenSBI is the most up to date and compliant with the spec.
I'm experimenting with an SBI in Go, using TinyGo, because TinyGo compiled code is competitive with, and sometimes better than, Rust on size, speed, and jitter measures. That surprised me too, but the TinyGo project is really something.