libsel4vmmplatsupport

A library containing various VMM utilities and drivers that can be used to construct a Guest VM on a supported platform. This library makes use of ‘libsel4vm’ to implement VMM support. Reference implementations using this library are:

  • CAmkES VM (x86) - https://github.com/seL4/camkes-vm
  • CAmkES ARM VM (arm) - https://github.com/SEL4PROJ/camkes-arm-vm

For documentation on the libsel4vmmplatsupport interface see here

Features

  • Virtio Support/Drivers
    • Virtio PCI
    • Virtio Console
    • Virtio Net
  • Cross VM connection/communication driver
  • Guest image loading utilities (e.g. kernel, initramfs)
  • libsel4vm memory helpers and utilities
  • IOPorts management interface

Architecture Specific Features

ARM
  • VCPU fault handler module
    • HSR/Exception decoding
    • HSR/Exception handler dispatching
    • SMC decoding + handling
  • PSCI handlers - through VCPU fault (+SMC handler) interface
  • Generic virtual device interfaces
    • Generic access controlled devices - control read/write privileges to specific devices
    • Generic forwarding devices - interfaces for dispatching faults to external handlers
  • Guest reboot utilities
  • Virtual USB driver
  • Guest OS Boot interfaces (for Linux VM’s) : Boot VCPU initialisation
X86
  • ACPI table generation
  • PCI device passthrough helpers
  • Guest OS Boot interfaces (for Linux VM’s) : Boot VCPU initialisation, BIOS boot info structure generation, E820 map generation, VESA initialisation

Platform Specific Features

Exynos5422
  • Virtual Clock device driver (Access Controlled Device)
  • Virtual IRQ combiner device driver
  • Virtual GPIO device driver
  • Virtual Power device driver
  • Virtual MCT device driver
  • Virtual UART UART device driver

TK1

  • USB Reboot Hooks

Potential future features (yet to be implemented)

  • Additional Virtio Driver Support
    • e.g Virtio Blk, Virtio RNG, Virtio Balloon
  • Block Driver support

Architecture Specific Features

ARM
  • Additional virtual devices for various supported platforms
  • Additional platform/board support
    x86
  • Generic virtual device interface (as supported on ARM platforms)
  • Additional virtual device support

Note: This is a consolidated library composed of libraries previously known as (but now deprecated) ‘libsel4vmm’ (x86), ‘libsel4arm-vmm’ (arm), libsel4vmmcore and libsel4pci.

File included from github repo edit