Commit graph

17 commits

Author SHA1 Message Date
Rian Quinn
ed5fb3532c
VMX Bug Fix (#633)
Signed-off-by: Rian Quinn <rianquinn@gmail.com>
2018-03-01 09:56:34 -07:00
Chris Pavlina
276db173ca Add platform_info_t, support runtime serial port address (#632)
platform_info_t is used to pass platform-specific information from the
kernel into the vmm. On aarch64, this is used to map the serial
peripheral and pass the resulting virtual address.

Closes #527

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>
2018-02-28 08:39:45 -07:00
Rian Quinn
4736df450a
Changes to support EAPIs (#627)
The following changes support the EAPIs, as well as provide consistency
across the projects.

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
2018-02-20 15:10:40 -07:00
Rian Quinn
01842b4c77
Convert Hypervisor to use Delegates (#610)
This patch converts the hypervisor to use delegates, dramatically
reducing the complexity of the hypervisor, while also providing a
cleaner interface for extensions.

[RFC]: https://github.com/Bareflank/hypervisor/issues/602

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
2018-02-14 05:25:49 -07:00
Rian Quinn
573de577bf
Fix crash with Windows (#578)
The latest versions of Windows do not like having aligned memory freed
using "free", resulting in a segfault. Alighed memory is no longer
needed so this can be removed.

[ISSUE]: https://github.com/Bareflank/hypervisor/issues/576

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
2018-01-23 06:39:10 -07:00
Rian Quinn
aab477a590
Build System Bug Fixes (#575)
This patch addresses several bugs with the build system:
- Lack of Windows support
- Clang Tidy was not working properly
- Making modifications to the source code would compile, but would not
re-link resulting in issues
- Removed excess file copying
- Make clean now works
- Removed unused or confusing folders in the build folder as part of the
build process. It is now much easier to traverse the build folder for
dependencies
- The targets didn't work with extensions. This has been fixed.

In addition, the following was also done under this patch
- Intrinsics was moved to the top level and out of the VMM
- Platform files are now in a folder called "platform" instead of
"arch"
- All subprojects have the same include/src/tests files structure
- All intel specific code is properly organized to match intended
namespacing
- Removed dead code
- A small part of the VMCS was converted to use the delegate pattern
- All dependencies are now downloaded at configure time instead of
compile time.
- The cache directory is now cached by Travis CI
- CMake output better matches old build system
- Added make rebuild and separate clean targets to remove various parts
of the build depending on needs.
- Added targets for Clean, Tidy, Rebuild and Format for each subproject
- Re-organized the cmake logic so that macros are not spread out
- New validation removes unneeded complexity
- Removed the need for the compiler wrapper, and in doing so, we now
provide a simpilar set of toolchain files
- Removed the need for Git repos. All external dependencies are
downloaded using a zip or tarball
- Libcxx and Libcxxabi are now in their own files. Much similar logic
- Unit test CMake files have been greatly simplified
- Each subproject is unaware of it's prefix and no long use VMM,
USERSPACE or TEST variables in their cmake files
- Fixed bugs with the flags
- Renamed the varbiables in the default.cmake config to be more
consistent and easier to follow in the rest of the code

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
2018-01-22 12:45:07 -07:00
Rian Quinn
408805bafc
Delegate Implementation (#531)
This patch cleans up some issues with formatting, and adds support
for C++ delegates. This implementation doesn't need malloc/free
and is as fast as a regular vtable lookup. Before the release
of v1.2, a lot of the inheritance currently being used with be
converted to delegates to increase modularity.

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
2017-11-27 09:17:24 -07:00
Chris Pavlina
1d39f27db7 Add PL011 serial driver, genericize portio interface
Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>
2017-10-25 14:41:29 -06:00
Chris Pavlina
2a218d858e Add bfarch.h to detect architecture and set flags (#513)
This header tests for predefined macros on both supported compilers to
determine the architecture being compiled for. Once detected, it defines
two macros:

    - BF_ARCH       string containing architecture name
    - BF_{archname} empty macro for #ifdef tests

Currently supported combinations are:

    - x64 on MSVC (via _MSC_VER and _X64)
    - x64 on GCC and clang (via __GNUC__, __clang__, and __x86_64__)
    - aarch64 on GCC and clang (via __GNUC__, __clang__, and __aarch64__)

Additionally, this header allows the user or the build system to modify
the architecture externally: defining BF_ARCH with -D disables the
checks and allows you to force an architecture flag.

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>
2017-10-17 12:58:41 -06:00
Chris Pavlina
07df5e776a Rename serial_port_intel_x64 to serial_port_ns16550a.h (#510)
Related to (but not a complete solution to) #507 - prepares for the
inclusion of ARM support in the serial driver.

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>
2017-10-10 18:50:00 -05:00
Rian Quinn
d88b6c370b Header Updates (#504)
This patch cleans up the headers of each file, and removes the
authors fields as they are not needed and are confusing.

Signed-off-by: rianquinn <“rianquinn@gmail.com”>
2017-10-07 13:45:24 -06:00
Rian Quinn
0dbf1d62f9 Windows Support (#489)
This patch provides support for Windows in v1.2

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>
2017-09-20 08:34:47 -07:00
Rian Quinn
496b135c72 missing bfdriver unit tests (#484)
Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>
2017-09-05 15:44:21 -06:00
Rian Quinn
ef33f574fa BFSDK missing unit tests (#477)
Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>
2017-08-28 15:59:48 -06:00
Rian Quinn
dbbfa86e34 BFM cleanup. (#475)
Completes the BFM source code and finishes it's unit tests. This
also addresses issues with the build system.

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>
2017-08-27 14:42:25 -06:00
Rian Quinn
d92a78f7d5 cygwin updates (#472)
Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>
2017-08-19 05:58:29 -06:00
Rian Quinn
40a448d8fe Merge Repos into the Hypervisor Repo (#470)
This PR mereges all of the repos into a single repo for simplificty. It
also adds static / shared library build types, release / debug builds,
and ensures parallel builds work properly.

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>
2017-08-17 10:49:49 -06:00