libsel4vm
A guest hardware virtualisation library for X86 (32-bit) and ARM (aarch32 & aarch64) for use on seL4-based systems. 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 libsel4vm interface see here
Features
- Hardware virtualisation support for the following architectures:
- ARM
- ARMv7 (+ Virtualisation Extensions)
- ARMv8
- X86
- ia32 (Intel VTX)
- ARM
- IRQ Controller emulation
- GICv2 (aarch32, aarch64)
- PIC & LAPIC (ia32)
- Guest VM Memory and RAM Management
- Guest VCPU Fault and Context Management
- VM Runtime Management
Architecture Specific Features
ARM
- SMP support for GICv2 (ARM) platforms
X86
- IOPort fault registration handler
- VMCall handler registration interface
Potential future features (yet to be implemented)
Architecture Specific Features
ARM
- Virtual GICv3 support (aarch32 & aarch64)
-
- SMP support for GICv3 platforms
X86
- SMP support for GICv3 platforms
-
- x86-64 support (Intel VTX)
- SMP support on x86 platforms (ia32 & x86_64)
Note: This is a consolidated library composed of libraries previously known as (but now deprecated) ‘libsel4vmm’ (x86) and ‘libsel4arm-vmm’ (arm).
File included from github repo edit