Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


7 years agoCompile fixes for GCC 5.4+ (core VMM only) devel
Peter Dinda [Mon, 9 Jan 2017 20:14:55 +0000]
Compile fixes for GCC 5.4+  (core VMM only)

- Correct new undefined behavior warning (overflow)
- Correct kconfig tool build (non-static inline function)

7 years agoInadvertently missing makefile
Peter Dinda [Mon, 9 Jan 2017 18:40:41 +0000]
Inadvertently missing makefile

7 years agoCompile fix for Nautilus changes
Peter Dinda [Wed, 4 Jan 2017 18:28:45 +0000]
Compile fix for Nautilus changes

8 years agoExtensions to HVM ROS userspace library corresponding to HVM enhancements
Peter Dinda [Thu, 14 Jul 2016 23:49:20 +0000]
Extensions to HVM ROS userspace library corresponding to HVM enhancements

- ability to mirror/unmirror GDT and other segment state from ROS process to HRT
- ability to handle HRT events forwarded to ROS (syscalls, page faults, exceptions)
- corrections to stack alignment issue in HRT->ROS signals
- log file selection

8 years agoHVM Enhancements + Bug Fixes
Kyle Hale [Thu, 14 Jul 2016 20:56:35 +0000]
HVM Enhancements + Bug Fixes

- a ROS->HRT GDT merger facility is now available
  (this is used by Multiverse)
- upcall mechanisms are now selectable at build-time
- hypercalls are (temporarily) acquiring a lock
- HRT->ROS event (signal) mechanism is enhanced with
  additional state to avoid race conditions between
  an event completion, startup of a new event, and
  fetching the result value from the previous event
- HRT->ROS event injection now starts with a 16-byte
  aligned stack (important for SSE)
- other general cleanup

8 years agoEnhanced debugging output for GDTs
Kyle Hale [Thu, 14 Jul 2016 19:22:31 +0000]
Enhanced debugging output for GDTs

8 years agoFurther text-mode console client enhancements
Peter Dinda [Thu, 14 Jul 2016 00:09:43 +0000]
Further text-mode console client enhancements

- cleanup of color handling in both curses clients
- v3_cons_tc cleanup for function key, etc, handling
- v3_console selects the better of _tc and _sc depending
  on which have been built in the instalation

8 years agoMore Linux 3.19+ kernel compatability fixes
Peter Dinda [Thu, 14 Jul 2016 00:09:03 +0000]
More Linux 3.19+ kernel compatability fixes

8 years agoEnhancements to text mode console clients
Kyle Hale [Wed, 13 Jul 2016 18:08:01 +0000]
Enhancements to text mode console clients

- v3_cons_sc now does color and arrow keys
- new v3_cons_tc does this and more
- v3_cons_tc is non-default, needs installation of libtermkey

8 years agoCleanup and fixes based on Coverity pass
Peter Dinda [Fri, 3 Jun 2016 21:43:03 +0000]
Cleanup and fixes based on Coverity pass

8 years agoRevised Nautilus Aerokernel Host Functionality
Peter Dinda [Wed, 1 Jun 2016 01:29:38 +0000]
Revised Nautilus Aerokernel Host Functionality

- use of current allocator
- use of enhanced virtual console
- support for multiple VMs

8 years agoVGA bug fix
Peter Dinda [Wed, 1 Jun 2016 01:16:19 +0000]
VGA bug fix

8 years agoMinor VMX NPT bug fix (printing)
Peter Dinda [Wed, 1 Jun 2016 01:15:51 +0000]
Minor VMX NPT bug fix (printing)

9 years agoNautilus Host Support (proof of concept)
James Whang [Mon, 28 Dec 2015 23:08:43 +0000]
Nautilus Host Support (proof of concept)

This is a simple proof-of-concept implementation of the Palacios
host interface on top of the Nautilusi kernel.   It is sufficient to allow
us to boot a guest OS running Linux.  There are several caveats
which can be seen in the comments.

9 years agoLinux user updates for more recent distros (Ubuntu 14.04 as target)
Peter Dinda [Tue, 22 Dec 2015 20:41:17 +0000]
Linux user updates for more recent distros (Ubuntu 14.04 as target)

These are minor compilation tweaks to avoid scary warnings and
to break the assumption that /bin/sh == /bin/bash

9 years agoLinux kernel compatability enhancements (through 3.19)
Peter Dinda [Tue, 22 Dec 2015 00:43:11 +0000]
Linux kernel compatability enhancements (through 3.19)
and other bug fixes

9 years agoHVM capability enhancement: asynchronous upcalls to ROS userspace
Peter Dinda [Sun, 27 Sep 2015 21:15:11 +0000]
HVM capability enhancement: asynchronous upcalls to ROS userspace

This adds the ability for the HRT, ROS, or other component of
the VMM to send what looks like a "user interrupt" (e.g. signal)
to a process running in the ROS.

This mechanism looks similar to signals:  the ROS process
installs a handler and stack (our library hides the details), the VMM
then dispatches to the handler by switching stacks, building
what looks like a CPL 3 -> CPL 3 interrupt frame (with error code)
on the selected stack, and then points rip to a userspace wrapper
that handles register save/restore + iret, wrapping around a call
to the user's handler.

Whoever raises the signal supplies the error code, which is then
coerced into an argument for the user's handler.

Only a single process in the ROS can register a handler at a time.
The context includes not only the stack and handler function, but
also the CR3 extant at registration time, and CPL 3 at injection time.

9 years agoLinux compatibility fixes
Kyle Hale [Fri, 25 Sep 2015 19:39:50 +0000]
Linux compatibility fixes

This includes some changes for proc, vfs, and IOMMU code to account
for interfaces changes in Linux

9 years agoCorrect VM deallocation on fail before nested paging init
Peter Dinda [Sun, 20 Sep 2015 20:51:07 +0000]
Correct VM deallocation on fail before nested paging init

9 years agoHRT image replacement from ROS application
Peter Dinda [Thu, 17 Sep 2015 20:52:54 +0000]
HRT image replacement from ROS application

This adds the capability for a ROS application to dynamically replace
the HRT image within the HVM.  Combined with HRT boot and other
capabilities, this allows the ROS to essentially fork and exec an
HRT that operates over its address space.

9 years agoAdded missing HVM reset function to Linux library...
Peter Dinda [Wed, 9 Sep 2015 20:14:04 +0000]
Added missing HVM reset function to Linux library...

9 years agoLinux guest user library and test application for ROS<->HRT interaction in an HVM
Peter Dinda [Wed, 9 Sep 2015 19:52:04 +0000]
Linux guest user library and test application for ROS<->HRT interaction in an HVM

9 years agoupdate outdated CR4 definitions
Kyle Hale [Sun, 6 Sep 2015 23:28:08 +0000]
update outdated CR4 definitions

9 years agofix potential overflow condition in VMX assist
Kyle Hale [Sun, 6 Sep 2015 20:01:20 +0000]
fix potential overflow condition in VMX assist

9 years agoHVM support for forwarding events to ROS
Peter Dinda [Tue, 8 Sep 2015 22:41:34 +0000]
HVM support for forwarding events to ROS

Protocol and hypercall logic to support forwarding
of system calls and page faults from the HRT to the ROS

This allows an HRT with a merged address space to rely on
the ROS for page faults on the shared part of the address
space, and it allows the HRT to make system calls on the
ROS, provided all arguments, directly or indirectly, are
in the shared part of the address space.

9 years agoMore init checks to allow graceful fail out when VM cannot be created
Peter Dinda [Tue, 8 Sep 2015 22:32:22 +0000]
More init checks to allow graceful fail out when VM cannot be created

9 years agoMinor tweak to fix handling of extensions without initializers
Peter Dinda [Mon, 7 Sep 2015 16:29:20 +0000]
Minor tweak to fix handling of extensions without initializers

9 years agoCleanup and sanity-checking of assorted additional issues from second pass (Coverity...
Peter Dinda [Tue, 1 Sep 2015 21:47:54 +0000]
Cleanup and sanity-checking of assorted additional issues from second pass (Coverity static analysis)

9 years agoCleanup and sanity-checking of unintentional integer overflow, unsigned/zero comparis...
Peter Dinda [Tue, 1 Sep 2015 21:12:15 +0000]
Cleanup and sanity-checking of unintentional integer overflow, unsigned/zero comparisons, untrusted or tainted data tracking, weird operator choice (Coverity static analysis)

There are a fair number of uses of tainted data (e.g., from user or file) -
I left most of these alone for now.

9 years agoCleanup and sanity-checking of endianness, dead code, unchecked returns (Coverity...
Peter Dinda [Tue, 1 Sep 2015 20:51:01 +0000]
Cleanup and sanity-checking of endianness, dead code, unchecked returns (Coverity static analysis)

9 years agoCleanup and sanity-checking of switch issues, negative array indexes, operand indepen...
Peter Dinda [Tue, 1 Sep 2015 20:21:34 +0000]
Cleanup and sanity-checking of switch issues, negative array indexes, operand independence (Coverity static analysis)

9 years agoCleanup and sanity-checking of integer overflow, null comparisons, dead code (Coverit...
Peter Dinda [Tue, 1 Sep 2015 19:54:38 +0000]
Cleanup and sanity-checking of integer overflow, null comparisons, dead code (Coverity static analysis)

9 years agoCleanup and sanity-checking of explicit null derefs (Coverity static analysis)
Peter Dinda [Tue, 1 Sep 2015 19:11:36 +0000]
Cleanup and sanity-checking of explicit null derefs (Coverity static analysis)

9 years agoCleanup and sanity-checking of divide-by-zero and floating point use bugs (Coverity...
Peter Dinda [Tue, 1 Sep 2015 18:28:59 +0000]
Cleanup and sanity-checking of divide-by-zero and floating point use bugs (Coverity static analysis)

Note that varargs use within Palacios itself is problematic
as the varargs implementation used handles floating point as well
as integer.  This means that an innocuous use of a va_list
results in FP register reads.

9 years agoCleanup and sanity-checking of before/after null-check and copy+paste errors (Coverit...
Peter Dinda [Tue, 1 Sep 2015 16:47:14 +0000]
Cleanup and sanity-checking of before/after null-check and copy+paste errors (Coverity static analysis)

9 years agoCleanup and sanity-checking of OOB accesses and pointer-to-local issues (Coverity...
Peter Dinda [Mon, 31 Aug 2015 23:18:28 +0000]
Cleanup and sanity-checking of OOB accesses and pointer-to-local issues (Coverity static analysis)

9 years agoCleanup and sanity-checking of use of strncpy/strcpy (Coverity static analysis)
Peter Dinda [Mon, 31 Aug 2015 22:21:34 +0000]
Cleanup and sanity-checking of use of strncpy/strcpy (Coverity static analysis)

9 years agoAssorted cleanup of memory-related user-level stuff
Peter Dinda [Mon, 31 Aug 2015 20:44:28 +0000]
Assorted cleanup of memory-related user-level stuff

- adjust guest memory access library to handle truncated
  output describing VMs with too many base regions (can happen with cache part)
- adjust memory allocation utility to handle fractional amounts
  (tiny chunks are best for cache part) while not allowing
  the amounts to be too tiny
- seperate concept of memory block size and base region size
  when configuring palacios - cachepart needs a base region
  size that is generally smaller than the memory block size
  because there are other page allocations (e.g., vmcb bitmasks)
  that are larger than one page

- removal of debug cruft in cachepart

9 years agoCache partitioning support
Peter Dinda [Mon, 31 Aug 2015 20:34:00 +0000]
Cache partitioning support

This is an experimental feature that allows you to map all
of a VM's page allocations such that they map to a partition
of the last level cache.

The syntax is:

  <cachepart
        block_size=BLOCK_SIZE
        num_colors=NUM_COLORS
        min_color=MIN_COLOR
        max_color=MAX_COLOR />

The BLOCK_SIZE needs to be one page, and your base region
size for the VM needs to be one page, and your allocations of
physical memory to Palacios needs to support enough one page
allocations to satisfy the constraints and the amount of memory
you are asking for.

NUM_COLORS is your view of how many colors (distinct pages) the
abstract cache has while MIN_COLOR to MAX_COLOR are the range
of cache pages of the abstract cache you want to use.  The
system will conform this requested color range on your abstract
cache to a real color range on the actual cache, provided it is
possible.

Note that currently this is implemented (on Linux) by having
the allocator (the buddy allocator) filter prospective free
blocks by their color (the color of their first page).  As
a consequence, allocating the VM is slow:  you need to allocate a
lot of separate pages (one page per base region), and each page
needs to be the right color.

9 years agoImplementation of resource control host os interface for Linux
Peter Dinda [Mon, 31 Aug 2015 20:20:23 +0000]
Implementation of resource control host os interface for Linux

This associates a pointer to a resource control structure with
each thread created by Palacios.   If this structure exists, its
contents are then used to control resource allocations.  Currently,
the controls are on page allocation: alignment, numa node, and
page allocation filtering.  The latter is what cache partitioning
builds on.

This also changes the /proc/v3vee/v3-guest-info-details output
slightly.  For a guest with too many cores or memory regions to
display, the output is now truncated in a graceful way.

9 years agoResource control extensions to host OS interface
Peter Dinda [Mon, 31 Aug 2015 20:12:45 +0000]
Resource control extensions to host OS interface
plus changes internal to Palacios to use them

The basic idea here is that on creating a thread, Palacios
can hand the host a resource control structure for that thread.
For resource allocations (e.g., page allocations) made by
that thread, the host can then use the resource control
structure to decide which resources will be provided.
This makes it possible for code in Palacios to be
resource aware despite separation of concerns.

This is used by cache partitioning to make any subsequent
page allocations by a core thread (e.g., in nested or shadow
page fault handling) to obey the cache placement constraints.

9 years agomultiboot memory header corrections
Kyle Hale [Mon, 31 Aug 2015 19:51:32 +0000]
multiboot memory header corrections

9 years agoHVM synchronous operation facility
Peter Dinda [Mon, 3 Aug 2015 22:19:23 +0000]
HVM synchronous operation facility

This lets the ROS and HRT synchronize, via the VMM, on a memory
location for for future synchronization indepedent of the VMM

9 years agoRemoval of debugging code from halt code
Peter Dinda [Mon, 3 Aug 2015 01:20:03 +0000]
Removal of debugging code from halt code

9 years agoMinor fix
Peter Dinda [Sun, 2 Aug 2015 23:45:05 +0000]
Minor fix

9 years agoHVM capability enhancments
Peter Dinda [Sun, 2 Aug 2015 23:31:43 +0000]
HVM capability enhancments

- ROS / HRT boot-time interaction protocol enhancements
- ROS / HRT / VMM run-time interaction protocol
- ROS->HRT resets
- ROS->HRT address space merges
- ROS->HRT sequential and parallel function invocations
- More generalized paging environment build for HRT
  including offsets, PIC, etc.
- Refactoring between multiboot and HVM
- More consistent magic numbers
- Descriptor, EFER, and ctrl reg corrections

9 years agoIDE/ATAPI bug fix - allow sense and other requests to read past
Peter Dinda [Sun, 2 Aug 2015 23:26:54 +0000]
IDE/ATAPI bug fix - allow sense and other requests to read past
end of transfer length as long as not past the end of the IDE buffer
This is technically correct, and common for modern atapi drivers
talking to old drives

9 years agoHave unregistered hypercalls fail to guest
Peter Dinda [Sun, 2 Aug 2015 23:15:28 +0000]
Have unregistered hypercalls fail to guest

9 years agoLeave a HLT on exception injection
Peter Dinda [Sun, 2 Aug 2015 23:14:02 +0000]
Leave a HLT on exception injection

9 years agoAvoid physical/virtual contiguity assumptions using new guest memory access functions
Peter Dinda [Sun, 2 Aug 2015 23:12:33 +0000]
Avoid physical/virtual contiguity assumptions using new guest memory access functions

9 years agoSVM Bug Fixes and Enhancements (Missing changed file)
Peter Dinda [Sun, 2 Aug 2015 23:08:44 +0000]
SVM Bug Fixes and Enhancements (Missing changed file)

9 years agoDeallocation bug fix in device manager to allow backing out from VM creation failure
Peter Dinda [Sun, 2 Aug 2015 23:03:22 +0000]
Deallocation bug fix in device manager to allow backing out from VM creation failure

if VM creation fails before the device manager is inited, for example on
running out of memory, device manager deinit needs to avoid running

9 years agoSVM Bug Fixes and Enhancements
Peter Dinda [Sun, 2 Aug 2015 22:59:49 +0000]
SVM Bug Fixes and Enhancements

- Correct behavior of exit during injection of SW intr / exception / other events (BIG ONE)
- Sanity-checked deallocations
- VMCB, etc, modernized to current versions
- Sanity-check to see if we are on old hardware that doesn't do nrip / SW intr
- Spot interrupt shadows

9 years agoCache information interface and implementation for AMD and Intel on Linux
Peter Dinda [Mon, 13 Jul 2015 21:17:35 +0000]
Cache information interface and implementation for AMD and Intel on Linux

9 years agoCleanup of linkage issues for non-Linux hosts
Peter Dinda [Sun, 12 Jul 2015 21:50:03 +0000]
Cleanup of linkage issues for non-Linux hosts

- minor asm fixes to allow -fPIC
- elimination of unneeded global
- conditional compilation of assorted string functions

9 years ago Cleanup based on cppcheck pass (Core)
Peter Dinda [Wed, 1 Jul 2015 22:42:43 +0000]
 Cleanup based on cppcheck pass (Core)

9 years ago Cleanup based on cppcheck pass (Devices and Extensions)
Peter Dinda [Wed, 1 Jul 2015 22:38:56 +0000]
 Cleanup based on cppcheck pass (Devices and Extensions)

9 years ago Cleanup based on cppcheck pass (VNET)
Peter Dinda [Wed, 1 Jul 2015 22:37:52 +0000]
 Cleanup based on cppcheck pass (VNET)

9 years ago Cleanup based on cppcheck pass (GEARS)
Peter Dinda [Wed, 1 Jul 2015 22:36:11 +0000]
 Cleanup based on cppcheck pass (GEARS)

9 years ago Cleanup based on cppcheck pass (GEARS)
Peter Dinda [Wed, 1 Jul 2015 22:35:24 +0000]
 Cleanup based on cppcheck pass (GEARS)

9 years agoCleanup based on cppcheck pass (Linux module and user)
Peter Dinda [Wed, 1 Jul 2015 22:33:41 +0000]
Cleanup based on cppcheck pass (Linux module and user)

9 years agoDebugging output changes to pci_front
Peter Dinda [Mon, 29 Jun 2015 18:31:18 +0000]
Debugging output changes to pci_front

9 years agoExpose HVM state to host + Linux host /proc additions for it
Peter Dinda [Mon, 29 Jun 2015 18:26:10 +0000]
Expose HVM state to host + Linux host /proc additions for it

9 years agoVM Reset Bugfixes
Peter Dinda [Mon, 29 Jun 2015 18:22:05 +0000]
VM Reset Bugfixes

- ROS reset does not clobber HRT
- Missing keyboard reset command added
- More debugging output

9 years agoMinor cleanup (eliminate dead code, correct errno return)
William Gross and Akhil Guliani [Tue, 23 Jun 2015 00:40:03 +0000]
Minor cleanup (eliminate dead code, correct errno return)

9 years agoDevice File Virtualization Proof of Concept (Host Shadow + Patches)
William Gross and Akhil Guliani [Tue, 23 Jun 2015 00:25:42 +0000]
Device File Virtualization Proof of Concept (Host Shadow + Patches)

This is an implementation of device file virtualization in Palacios
for a Linux Host.   Please consult palacios/gears/services/devfile/README
for more information.

9 years agoDevice File Virtualization Proof of Concept (Kernel+Preload)
Akhil Guliani and William Gross [Tue, 23 Jun 2015 00:12:32 +0000]
Device File Virtualization Proof of Concept (Kernel+Preload)

This is an implementation of device file virtualization in Palacios
for a Linux Host.   Please consult palacios/gears/services/devfile/README
for more information.

9 years agoMinor bugfix
Peter Dinda [Fri, 19 Jun 2015 15:13:20 +0000]
Minor bugfix

9 years agoMultiboot and HVM reset integrated into VMX
Peter Dinda [Thu, 18 Jun 2015 22:41:21 +0000]
Multiboot and HVM reset integrated into VMX

9 years agoExpose VM reset capability to Linux and Linux user
Peter Dinda [Thu, 18 Jun 2015 22:33:54 +0000]
Expose VM reset capability to Linux and Linux user

9 years agoVM reset from keyboard controller
Peter Dinda [Thu, 18 Jun 2015 22:26:15 +0000]
VM reset from keyboard controller

9 years agoVM reset capability
Peter Dinda [Thu, 18 Jun 2015 22:20:37 +0000]
VM reset capability

Allows reset of "normal" VM, a multiboot VM, or either the
ROS or HRT components of an HVM

9 years agoSVM reset capability + integration with multiboot+hvm reset capability
Peter Dinda [Thu, 18 Jun 2015 22:17:30 +0000]
SVM reset capability + integration with multiboot+hvm reset capability

9 years agoHVM enhancements
Peter Dinda [Thu, 18 Jun 2015 22:10:56 +0000]
HVM enhancements

- more integration with multiboot
- init scratch stacks for HRT cores
- reset capability

9 years agoMultiboot enhancements
Peter Dinda [Thu, 18 Jun 2015 22:06:07 +0000]
Multiboot enhancements

- enhancements to HRT info block
- clear of BSS (expected by MB kernel)
- actually included header file
- reset capability

9 years agoDetailed segmentation output from v3_debug
Peter Dinda [Thu, 18 Jun 2015 22:02:55 +0000]
Detailed segmentation output from v3_debug

9 years agoGuest mem gpa/gva memset functions
Peter Dinda [Thu, 18 Jun 2015 21:59:05 +0000]
Guest mem gpa/gva memset functions

9 years agoFactoring of BIOS setup so that it can be reused during reset
Peter Dinda [Thu, 18 Jun 2015 21:54:06 +0000]
Factoring of BIOS setup so that it can be reused during reset

9 years agoSubset barrier support (counting barriers)
Peter Dinda [Thu, 18 Jun 2015 21:47:38 +0000]
Subset barrier support (counting barriers)

9 years agoSEABIOS updates to support reset and to simplify
Peter Dinda [Thu, 18 Jun 2015 21:41:46 +0000]
SEABIOS updates to support reset and to simplify

9 years agoDisallow symbiotic functionality unless a compatible bios is in use
Peter Dinda [Thu, 18 Jun 2015 16:19:24 +0000]
Disallow symbiotic functionality unless a compatible bios is in use

The symspy page is by default mapped at a location that will conflict
with a larger bios.  This is a non-issue when booting a non-symbiotic
kernel or even booting a symbiotic kernel the first time, but leads
to a mess on a VM reset

9 years agoAvoid strict-aliasing related issues when compiling with optimization
Peter Dinda [Sun, 14 Jun 2015 16:22:57 +0000]
Avoid strict-aliasing related issues when compiling with optimization

9 years agoAPIC bug fixes and cleanup
Peter Dinda [Tue, 9 Jun 2015 20:36:13 +0000]
APIC bug fixes and cleanup

- handle access to unsupported registers gracefully (return 0 on read, drop writes)
- correct handling of APIC address MSR write (do not delete memory region twice)
- cleanup of debugging output

9 years agopci_front bugfix - do not propagate cmd reg write twice
Peter Dinda [Mon, 8 Jun 2015 20:00:26 +0000]
pci_front bugfix - do not propagate cmd reg write twice

9 years agoAbility to add remappable roms for pci front-end devices.
Peter Dinda [Tue, 19 May 2015 16:36:43 +0000]
Ability to add remappable roms for pci front-end devices.

Syntax:

  <file id="file_id" ...>

  <device class="PCI_FRONT" ...>
    <rom file="file_id" />
  </device>

Note that for ROM that is not remappable (fixed address), the <bios> block
can be used to add it.

9 years agoCleanup of locking in host device interface
Peter Dinda [Tue, 19 May 2015 16:36:11 +0000]
Cleanup of locking in host device interface

9 years agoAddition of basic multiboot functionality plus refactor of HVM
Peter Dinda [Tue, 19 May 2015 16:27:47 +0000]
Addition of basic multiboot functionality plus refactor of HVM
functionality to extend multiboot

9 years agoMinor compile warning fixup and error checks
Peter Dinda [Tue, 28 Apr 2015 17:03:40 +0000]
Minor compile warning fixup and error checks

9 years agoGeneralization of constraints on page allocation and implementation/use
Peter Dinda [Fri, 17 Apr 2015 17:11:43 +0000]
Generalization of constraints on page allocation and implementation/use

The idea here is to allow Palacios code to request pages that satisfy some
filter function.  For example, a filter function might reject allocations
above the 4GB line, or it might reject allocations that map to undesirable
cache lines.

- it removes the notion of a constraint mask in page allocation
- eliminates the < 4GB flag
- adds the notion of constraints in page allocation as filter
  functions
- modifies the implementation and uses to match

9 years agoExpose vmalloc-like os interface to Palacios, and updates to use it
Peter Dinda [Fri, 17 Apr 2015 15:11:53 +0000]
Expose vmalloc-like os interface to Palacios, and updates to use it

The purpose of finally exposing virtually contiguous /
not necessarily physically contiguous allocations to Palacios
is to get around a catch-22.   We support arbitrarily small
base region chunks at this point, down to a page size.  We
also support host kernels that do not provide large contiguous
physical page allocations.    The result is that we can
end up needing to build a base region chunk array that is
larger than the amount of memory we can either malloc or
contiguously page alloc to support it. Yet the base region
array itself does not need to be physically contiguous.

Two places where this currently burns us is:   large memory
VM allocated over linux host that does not support hot remove;
moderate memory VM using tiny chunk size, for example in
cache partitioning

9 years agoQCOW2 block storage backend for Palacios
Yang Yang and Weixiao Fu [Wed, 1 Apr 2015 20:57:51 +0000]
QCOW2 block storage backend for Palacios

This commit adds a new backend, qcowdisk, that allows
the use of QCOW2 format files as the storage for
virtual hard drives, cds, virtio block devices, etc.

- Backing stores are supported
- Snapshots are not supported
- Encryption is not supported

9 years agoMinor tweak to fix accidental new feature leak
Peter Dinda [Wed, 1 Apr 2015 20:55:49 +0000]
Minor tweak to fix accidental new feature leak

9 years agoTypo fix
Peter Dinda [Wed, 25 Mar 2015 21:24:24 +0000]
Typo fix

9 years agoBasic HRT startup for HVM, plus assorted cleanup
Peter Dinda [Wed, 25 Mar 2015 21:18:53 +0000]
Basic HRT startup for HVM, plus assorted cleanup

This builds and launches a basic guest environment for an HRT
It does not yet handle ELF load, but it is able to bootstrap
a simple code blob, including with interrupts, on HRT cores
while ROS cores happily run Linux

9 years agoSupport HVM partitioning for APICs
Peter Dinda [Mon, 23 Mar 2015 21:13:19 +0000]
Support HVM partitioning for APICs

This allows us to treat the APICs as belonging to two
groups:  the "ROS" group and the "HRT" group.   Semantics
for lowest priority, broadcast, etc, are determined by
the HVM logic for an HVM VM.

9 years agoHVM configuration logic (create mptables, acpi tables, etc, based on ROS config)
Peter Dinda [Mon, 23 Mar 2015 21:11:00 +0000]
HVM configuration logic (create mptables, acpi tables, etc, based on ROS config)

This updates the various ways we tell the guest what hardware is available.
In an HVM, we describe only the ROS components of the guest, not the
additional components (e.g., cores, memory, etc) that the HRT can also see.

9 years agoAdd HVM configuration capability, init/deinit, etc
Peter Dinda [Mon, 23 Mar 2015 21:09:33 +0000]
Add HVM configuration capability, init/deinit, etc

9 years agoHVM updates to support apic partitioning
Peter Dinda [Mon, 23 Mar 2015 20:59:03 +0000]
HVM updates to support apic partitioning

9 years agoBasic HVM data structures and functions
Peter Dinda [Sun, 22 Mar 2015 23:06:04 +0000]
Basic HVM data structures and functions

9 years agoUse page allocation for base memory region array
Peter Dinda [Sun, 22 Mar 2015 23:02:40 +0000]
Use page allocation for base memory region array

This allows us to support a much larger number of base regions
than the heap allocation allows.   Important for page-by-page
management, for example for swapping and cache partitioning