Skip to content

v0.4.0 — VirtIO Block Device & Boot Fix

Choose a tag to compare

@quantumnic quantumnic released this 18 Feb 03:34
· 87 commits to main since this release

🚀 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