Open Source
My upstream work centers on firmware that boots servers and devices, the protocols they use to prove what they are running, and getting software to run well on new hardware. Everything below is merged upstream; each item links to the change itself.
Boot firmware
u-root (LinuxBoot)
u-root is the Go userland that LinuxBoot uses to replace UEFI’s boot stage with Linux. I added RISC-V support to its kexec path.
- pkg/boot: add riscv64 kexec support
—
kexec_loadused to return ENOSYS on riscv64. Adds a parser for the RISC-VImageheader, EFI-stub kernels included, and the riscv64 load path. - pkg/boot/zimage: accept a longer kernel size entry
- cmds/core/reboot: add reboot command
- integration: attach socket NICs with -netdev/-device
Android Generic Bootloader (AOSP libbootloader)
Fixes to the documented QEMU flows for GBL, each one a command that failed as written on a current distribution:
- Attach virtio-blk in riscv64 QEMU example — the example only worked on one side of QEMU 9.0’s change to default drive attachment; checked on QEMU 8.2 and 10.2.
- Fix OVMF firmware path in standalone QEMU instructions
- Fix rust-gdb prebuilt path in launch_qemu_gdb.sh
Platform security
DMTF libspdm
libspdm is DMTF’s reference implementation of SPDM, the protocol devices use to authenticate and establish secure sessions with the platform.
- Fix key update rollback for Specula cluster A.1 and A.3
— a failed
KEY_UPDATEcould leave a session with half-updated keys and no way back. The fix marks the backup valid before deriving new keys and rolls back every failure arm, with unit tests that fail against the old code.
LLM inference on RISC-V
llama.cpp
Matrix kernels for the SpacemiT X60’s IME matrix extension:
- ggml-cpu: add Q8_0 IME1 matrix kernel for SpacemiT X60 — prefill on Qwen2.5-0.5B went from 10.7 to 95.3 tokens/s on a Milk-V Jupiter board.
- ggml-cpu: conditionally add SpacemiT IME kernel sources
Android kernel
Documentation fixes in the Android Common Kernel (kernel/common), for the
binder, dma-buf, dma-heap and UFS interfaces:
- binder: fix kernel-doc for struct binder_priority
- dma-buf: fix kernel-doc for dma_buf_set_name()
- dma-heap: document the return values of the exported helpers
- dma-heap: restore struct dma_heap kernel-doc lost in a merge
- scsi: ufs: fix kernel-doc for the UPIU prepare helpers
Systems tools
- elfuse (7 merged) — runs Arm64 and
x86-64 Linux ELF binaries on macOS. My changes bring its Linux syscall
emulation closer to the kernel: futex refusals,
CLONE_THREADexit signalling,AT_EMPTY_PATH, deferred stack unmapping. - codetrial (6 merged) — a live technical interview simulator.
- frama-c-mcp (3 merged) — an MCP server that gives AI agents the Frama-C formal verification tools.
- shecc — a regression test for the self-hosting, educational C compiler.
- sse2neon — dropped a
<fenv.h>dependency that leakedFE_*macros into every includer.