[Open Mic] UEFI runtime was a bad idea. How to engineer around it in rust in a novel way
Main Room // Grote Zaal,
Crabefi Is library to implement UEFI, that supports x86, aarch64 and riscv. One problem that kept biting it, was UEFI Set Virtual Address Mode. This runtime command allows the UEFI runtime to be called by the kernel in its preferred memory map. This does mean the runtime needs be able to relocate while running. No programming language has a proper solution for this. It's a huge footgun or in rust terminology, it's very unsafe.
Crabefi works around this in a novel way. The runtime is a standalone binary that does not need to relocate pointers. Rust also avoids unsafe/undefined behavior with panic. Panic is basically a guaranteed footgun, as the kernel calls UEFI in ring 0. This talk will also explain how to avoid these panics in a provable way.