bareflank-hypervisor/example
Rian Quinn e6ab83751b Syscall/ABI changes to support the execution of Guest VMs.
This patch provides
- A change to the way advance IP worked. It now also runs the
  the VS.
- Added two new ABIs to support changing the active VM. This
  allows exit handlers to determine which VM they want to
  work with, without having to run the VM to make this change
  occur
- Adds some sanity checks to some of the registers to ensure
  they are configured properly by extensions.
2021-09-24 06:43:39 -06:00
..
default Syscall/ABI changes to support the execution of Guest VMs. 2021-09-24 06:43:39 -06:00
default_rust Updates to match the changes to the BSL 2021-09-08 15:47:38 -06:00
nested_paging Fixes bugs with paging, and removes IA32 to make Intel/AMD consistent 2021-09-18 18:54:08 -06:00
README.md Update README.md 2021-03-30 08:03:08 -06:00

Description

The goal of each of these examples is to provide a starting point for creating your own extensions. For more information about how to create your own extension, please see Writing Your Own Extensions.

default

This example provide the minimum extension that is needed to start/stop the hypervisor. In other words, this is your typical "Hello World" example. If you plan to implement everything yourself, this is a good starting point. This example is also the "default" example if you don't specify an extension manually in the build system.

rdtsc

TBD - demonstrates how to hook the execution of the RDTSC and RDTSCP instructions.

msr

TBD - demonstrates how to hook the execution of specific MSR instructions using the MSR bitmap.

cr

TBD - demonstrates how to hook the execution of the control registers and properly emulate their execution, including how to hide certain bits from the OS using the control register shadows.

io

TBD - demonstrates how to hook the execution of port IO instructions.

ept

TBD - basic EPT example including how to handle the MTTRs on Intel. Just enough to turn EPT on.

uefi

TBD - Provides enough EPT, Unrestricted Guest Support, CR0/CR4 and INIT/SIPI logic to start the hypervisor from UEFI and then boot Windows/Linux

interrupts

TBD - Provides an example of how to trap on external interrupts and inject them back into the root OS.

ddimon

TBD - Provides an example with functionality similar to DdiMon from HyperPlatform, capable of hooking kernel level functions and monitoring there execution.