| <!-- |
| Copyright 2019, Data61 |
| Commonwealth Scientific and Industrial Research Organisation (CSIRO) |
| ABN 41 687 119 230. |
| |
| This software may be distributed and modified according to the terms of |
| the BSD 2-Clause license. Note that NO WARRANTY is provided. |
| See "LICENSE_BSD2.txt" for details. |
| |
| @TAG(DATA61_BSD) |
| --> |
| |
| # 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](docs/) |
| |
| ### 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.* |