libsel4vmmplatsupport: Updated README

Updated README with further information regarding current features
and potential future features.
diff --git a/libsel4vmmplatsupport/README.md b/libsel4vmmplatsupport/README.md
index 670aa71..a5e1ecf 100644
--- a/libsel4vmmplatsupport/README.md
+++ b/libsel4vmmplatsupport/README.md
@@ -12,12 +12,70 @@
 
 # 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.
-This is a consolidated library composed of libraries previously known as (but now deprecated) 'libsel4vmm' (x86),
-'libsel4arm-vmm' (arm), libsel4vmmcore and libsel4pci.
-
+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.*
diff --git a/libsel4vmmplatsupport/docs/README.md b/libsel4vmmplatsupport/docs/README.md
new file mode 100644
index 0000000..4dd2e70
--- /dev/null
+++ b/libsel4vmmplatsupport/docs/README.md
@@ -0,0 +1,44 @@
+<!--
+     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)
+-->
+
+# libsel4vmmplatsupport docs
+
+See below for usage documentation on various libsel4vmmplatsupport interfaces:
+
+### Common Interfaces
+* [sel4vmmplatsupport/device.h](libsel4vmmplatsupport_device.md): Provides a series of datastructures and helpers to manage VMM devices.
+* [sel4vmmplatsupport/device_utils.h](libsel4vmmplatsupport_device_utils.md): Provides various helpers to establish different types devices for a given VM instance
+* [sel4vmmplatsupport/guest_image.h](libsel4vmmplatsupport_guest_image.md): Provides general utilites to load guest vm images (e.g. kernel, initrd, modules)
+* [sel4vmmplatsupport/guest_memory_util.h](libsel4vmmplatsupport_guest_memory_util.md): Provides various utilities and helpers for using the libsel4vm guest memory interface
+* [sel4vmmplatsupport/guest_vcpu_util.h](libsel4vmmplatsupport_guest_vcpu_util.md): Provides abstractions and helpers for managing libsel4vm vcpus
+* [sel4vmmplatsupport/ioports.h](libsel4vmmplatsupport_ioports.md): Useful abstraction for initialising, registering and handling ioport events for a guest VM instance
+* [sel4vmmplatsupport/drivers/cross_vm_connection.h](libsel4vmmplatsupport_cross_vm_connection.md): Facilitates the creation of communication channels between VM's and other components on a seL4-based system
+* [sel4vmmplatsupport/drivers/pci.h](libsel4vmmplatsupport_pci.md): Interface presents a VMM PCI Driver, which manages the host's PCI devices, and handles guest OS PCI config space read & writes
+* [sel4vmmplatsupport/drivers/pci_helper.h](libsel4vmmplatsupport_pci_helper.md): This interface presents a series of helpers when using the VMM PCI Driver
+* [sel4vmmplatsupport/drivers/virtio_con.h](libsel4vmmplatsupport_virtio_con.md): This interface provides the ability to initalise a VMM virtio console driver
+* [sel4vmmplatsupport/drivers/virtio_net.h](libsel4vmmplatsupport_virtio_net.md): This interface provides the ability to initalise a VMM virtio net driver
+
+### Architecture Specific Interfaces
+
+#### ARM
+* [sel4vmmplatsupport/arch/generic_forward_device.h](libsel4vmmplatsupport_arm_generic_forward_device.md): This interface facilitates the creation of a virtual device used for dispatching faults to external handlers
+* [sel4vmmplatsupport/arch/guest_boot_init.h](libsel4vmmplatsupport_arm_guest_boot_init.md): Provides helpers to initialise the booting state of a VM instance
+* [sel4vmmplatsupport/arch/guest_reboot,h](libsel4vmmplatsupport_arm_guest_reboot.md): Provides a series of helpers for registering callbacks when rebooting the VMM
+* [sel4vmmplatsupport/arch/guest_vcpu_fault.h](libsel4vmmplatsupport_arm_guest_vcpu_fault.md): Provides a module for registering and processing ARM vcpu faults
+* [sel4vmmplatsupport/arch/guest_vcpu_util.h](libsel4vmmplatsupport_arm_guest_vcpu_util.md): Provides abstractions and helpers for managing libsel4vm vcpus on an ARM platform
+* [sel4vmmplatsupport/arch/vpci.h](libsel4vmmplatsupport_arm_vpci.md): Presents a Virtual PCI driver for ARM-based VM's
+* [sel4vmmplatsupport/arch/vusb.h](libsel4vmmplatsupport_arm_vusb.md): Presents a Virtual USB driver for ARM-based VM's
+* [sel4vmmplatsupport/arch/ac_device.h](libsel4vmmplatsupport_arm_ac_device.md): Facilitates the creation of generic virtual devices in a VM instance with access control permissions over the devices addressable memory
+#### X86
+* [sel4vmmplatsupport/arch/acpi.h](libsel4vmmplatsupport_x86_acpi.md): Provides support for generating ACPI table in a guest x86 VM
+* [sel4vmmplatsupport/arch/guest_boot_init.h](libsel4vmmplatsupport_x86_guest_boot_init.md): Provides helpers to initialise the booting state of a VM instance
+* [sel4vmmplatsupport/arch/drivers/vmm_pci_helper.h](libsel4vmmplatsupport_x86_vmm_pci_helper.md): Interface presents a series of helpers for establishing VMM PCI support on x86 platforms