Commit graph

16 commits

Author SHA1 Message Date
Rian Quinn
91886c75d9 Adds an example extension written in Rust and fixes a number of bugs
This patch:
- Adds a complete extension written in Rust, with all of the build
  system logic to support Rust development as well.
- Fixes an issues on Intel systems where the MSR bitmaps were not
  set up properly.
- Fixes a number of issues with UEFI.
- Fixes a number of issues with Windows, including a BSOD issue
  with narrow contracts.
2021-10-21 08:53:22 -06:00
Rian Quinn
6daaff26e5 Completes all of the unit tests for the VMM
This patch:
- Completes all of the unit tests for the VMM
- Completes all of the unit tests for the syscall library
- Compleses all of the unit tests for the runtime library
- Completes all of the unit tests for the lib library
- Fixes a number of bugs identified during testing.
2021-10-11 15:45:29 -06:00
Rian Quinn
fd7e6bee3c Fix fail handler logic, TLB flushing, Windows support
This patch:
- Fixes some bugs with Windows. It is working again
- Fixes a long-time issue with Linux on some Intel CPUs that
  would cause any attempt to load the driver to crash due to
  the GDT being marked as read only, and the Linux APIs
  for this will triple fault your system if these APIs are
  not used very quickly (a bug that probably should be
  reported to Linux).
- Fixes issues with how the fail logic worked. You can not
  fail inside the fail handler. New integration tests were
  added to ensure that this case works as expected. In
  general, the hypervisor has less assembly, and should be
  more robust as a result.
- Fixes how TLB flushing is done, and adds TLB flushing APIs.
  A future PR will use this code to implement free_page and
  free_huge.
- Continued work on removing the heap logic that is no longer
  supported.
2021-10-05 16:43:10 -06:00
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
Rian Quinn
6850437bb9 Updates to match the changes to the BSL
This patch addresses the following:
- Adds a number of addition hypercall that are needed for MicroV
- Updates the code to support the changes made to the BSL including
  better checking of safe integrals and narrow contracts
- Adds a lib folder to contain code shared between the kernel and
  extensions where possible.
- Minor initial additions for Rust. Still lots of work to do here
2021-09-08 15:47:38 -06:00
Rian Quinn
b828c763a0 Minor bug fixes 2021-07-29 16:57:48 -06:00
Rian Quinn
23a8627ab7 Minor bug fixes 2021-07-26 14:31:58 -06:00
Rian Quinn
0c1fe2ce80 Fixes bugs with Clang Tidy and adds some more unit tests 2021-07-15 15:18:01 -06:00
Rian Quinn
f5f39193e5 Unit/Integration Test and ARM support changes
This patch contains a massive number of changes that are the
result of finally adding unit/integration tests and ARM
support. ARM support moved a number of files that were duplicates
while the unit and integration tests identified a massive number
of structural issues. The cost of waiting so long to finally
add tests.
2021-06-29 20:30:53 -06:00
Rian Quinn
6c89d88b6d Update the ABI docs 2021-03-30 07:39:03 -06:00
Rian Quinn
3d5b494f6c Update the ABI docs 2021-03-30 07:36:13 -06:00
Rian Quinn
1aca14988b Update the ABI docs 2021-03-30 07:30:08 -06:00
Rian Quinn
7e3f101819 Bareflank 3.0 Initial Upload
This patch provides the initial upload for Bareflank 3.0.
It should be noted that this initial upload does not contain
all of the intended features for 3.0, and instead provides
a starting point for further development and review.
2021-01-29 08:01:19 -07:00
Connor Davis
15ef8be360 Move broot to scripts/cmake
Signed-off-by: Connor Davis <davisc@ainfosec.com>
2019-03-30 19:58:46 -06:00
Connor Davis
c20027621c Update cmake documentation
- Fix filepath in cmake.txt
- Make doxygen generate to the 'docs' dir rather than doc

Signed-off-by: Connor Davis <davisc@ainfosec.com>
2019-03-18 20:31:09 -06:00
Connor Davis
b533c628ed Add CMake root interface library targets
The current approach to propagating build options, include directories,
link dependencies etc. requires the user to keep track of them every
time a new downstream dependent, like an extension, is introduced.

This forces users to know the details of how to build and link a
target because they have to preserve the build options for each target.
There is also no transitivity; if B links against A, and C links against B,
the link will fail for C if its link command only specifies B. *Every*
dependency (recursively) must be listed at *every* link site.

To address these issues, a new subproject "bfroot" is created that
creates one INTERFACE library for each prefix. Each root library
specifies the build requirements each project must use under that
prefix. Any target that links against a root INTERFACE will "inherit"
all the compile options, include directories, link directories,
etc. specified in the INTERFACE, e.g.

    target_link_libraries(bfvmm PUBLIC vmm::bfroot)

will ensure that bfvmm and _all_its_dependents_ build with the interface
specified in vmm::bfroot. Please see docs/cmake.txt for details on how
this works.

Signed-off-by: Connor Davis <davisc@ainfosec.com>
2019-03-18 20:31:09 -06:00