libsel4vm: Updated README Updated README with further information regarding current features and potential future features.
diff --git a/libsel4vm/README.md b/libsel4vm/README.md index a49379b..7de18d7 100644 --- a/libsel4vm/README.md +++ b/libsel4vm/README.md
@@ -12,10 +12,44 @@ # libsel4vm -A guest hardware virtualisation library for X86 (32-bit) and ARM (aarch32 & aarch64). This is -a consolidated library composed of libraries previously known as (but now deprecated) 'libsel4vmm' (x86) -and 'libsel4arm-vmm' (arm). - +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](docs/) + +### Features +* Hardware virtualisation support for the following architectures: + * ARM + * ARMv7 (+ Virtualisation Extensions) + * ARMv8 + * X86 + * ia32 (Intel VTX) +* 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 +* 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).*
diff --git a/libsel4vm/docs/README.md b/libsel4vm/docs/README.md new file mode 100644 index 0000000..4e1ab37 --- /dev/null +++ b/libsel4vm/docs/README.md
@@ -0,0 +1,37 @@ +<!-- + Copyright 2020, 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) +--> + +# libsel4vm docs + +See below for usage documentation on various libsel4vm interfaces: + +### Common Interfaces +* [sel4vm/boot.h](libsel4vm_boot.md): An interface for creating, initialising and configuring VM instances +* [sel4vm/guest_irq_controller.h](libsel4vm_guest_irq_controller.md): Abstractions around initialising a guest VM IRQ controller +* [sel4vm/guest_memory_helpers.h](libsel4vm_guest_memory_helpers.md): Helpers for using the guest memory interface +* [sel4vm/guest_vcpu_fault.h](libsel4vm_guest_vcpu_fault.md): Useful methods to query and configure vcpu objects that have faulted during execution +* [sel4vm/guest_vm.h](libsel4vm_guest_vm.md): Provides base definitions of the guest vm datastructure and primitives to run the VM instance +* [sel4vm/guest_iospace.h](libsel4vm_guest_iospace.md): Enables the registration and management of a guest VM's IO Space +* [sel4vm/guest_memory.h](libsel4vm_guest_memory.md): Useful abstractions to manage your guest VM's physical address space +* [sel4vm/guest_ram.h](libsel4vm_guest_ram.md): A set of methods to manage, register, allocate and copy to/from a guest VM's RAM +* [sel4vm/guest_vm_util.h](libsel4vm_guest_vm_util.md): A set of utilties to query a guest vm instance + +### Architecture Specific Interfaces + +#### ARM +* [sel4vm/arch/guest_arm_context.h](libsel4vm_guest_arm_context.md): Provides a set of useful getters and setters on ARM vcpu thread contexts +* [sel4vm/arch/guest_vm_arch.h](libsel4vm_arm_guest_vm.md): Provide definitions of the arm guest vm datastructures and primitives to configure the VM instance +#### X86 +* [sel4vm/arch/guest_x86_context.h](libsel4vm_guest_x86_context.md): Provides a set of useful getters and setters on x86 vcpu thread contexts +* [sel4vm/arch/guest_vm_arch.h](libsel4vm_x86_guest_vm.md): Provide definitions of the x86 guest vm datastructures and primitives to configure the VM instance +* [sel4vm/arch/vmcall.h](libsel4vm_x86_vmcall.md): Methods for registering and managing vmcall instruction handlers +* [sel4vm/arch/ioports.h](libsel4vm_x86_ioports.md): Abstractions for initialising, registering and handling ioport events