🚀 What's New
VirtIO MMIO Block Device
- Full VirtIO MMIO v2 transport implementation
- Block device backend with read/write support via virtqueue descriptor chains
- Disk image file attachment (
--disk image.raw)
- Interrupt-driven I/O completion via PLIC (IRQ 8)
- Memory-mapped at
0x10001000 with DTB integration
🐛 Critical Boot ROM Fix
- Fixed:
lui on RV64 sign-extends 32-bit immediates, so addresses ≥ 0x80000000 (like DRAM_BASE) became 0xFFFFFFFF_80000000 — breaking the boot trampoline entirely
- Boot ROM now uses
slli/srli to zero-extend addresses in the high 32-bit range
Tests
- 8 new tests (VirtIO register interface, boot ROM address handling)
- 48 total tests, all passing
Usage
# Boot a kernel with a disk image
microvm run --kernel Image --disk rootfs.img --memory 256
What's Next
- OpenSBI + Linux kernel boot testing
- VirtIO console device
- PMP (Physical Memory Protection)
- SBI interface implementation