A dedicated unikernel for microservices

Saturday, June 27, 2020

Status of the port of Toro to microvm

Since May I am working on porting TORO to the new microvm machine, which is a simplified QEMU machine with a reduced device model and an improved booting time, among others very interesting features (see https://github.com/qemu/qemu/blob/master/docs/microvm.rst). For Toro, I am interested in removing all the support for legacy hardware and to have virtio-vsocket and virtio-fs working on this kind of machine. I splitted the work into the following items:
1. Compile Toro as a PVH kernel and support PVH configuration during booting
  - Issue #390
  - Issue #391
2. Add support for multicore by identifying cores on the MP table.
  - Issue #392
3. Add support for LAPIC and IOAPIC
 - Issue #395
4. Use KVM clock to get current time
- Issue #366
5. Add mmio transport layer for virtio-vsocket
- Issue #403
6. Add mmio transport layer for virtio-fs
- Issue #404
Work items from 1 to 4 are already implemented. These were tasks that removed support for legacy hardware like 8259 and the CMOS. IRQs are now handled by the LAPIC and the IOAPIC. The issues 5 and 6 mainly add support for the virtio-mmio transport layer for these drivers. The detection of mmio devices is simpler than by using PCI. The information about virtio-devices is passed in the kernel command line. The driver has to parse the kernel command line and gets the base address and the irq base. The driver for virtio-vsocket has been already ported. I am currently working on porting the driver for virtio-fs. I hope this work is finished in about a month. Stay tuned! 

Matias E. Vara Larsen