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.
Peter Dinda [Wed, 1 Jul 2015 22:35:24 +0000]
Cleanup based on cppcheck pass (GEARS)
Peter Dinda [Wed, 1 Jul 2015 22:33:41 +0000]
Cleanup based on cppcheck pass (Linux module and user)
Peter Dinda [Mon, 29 Jun 2015 18:31:18 +0000]
Debugging output changes to pci_front
Peter Dinda [Mon, 29 Jun 2015 18:26:10 +0000]
Expose HVM state to host + Linux host /proc additions for it
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
William Gross and Akhil Guliani [Tue, 23 Jun 2015 00:40:03 +0000]
Minor cleanup (eliminate dead code, correct errno return)
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.
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.
Peter Dinda [Fri, 19 Jun 2015 15:13:20 +0000]
Minor bugfix
Peter Dinda [Thu, 18 Jun 2015 22:41:21 +0000]
Multiboot and HVM reset integrated into VMX
Peter Dinda [Thu, 18 Jun 2015 22:33:54 +0000]
Expose VM reset capability to Linux and Linux user
Peter Dinda [Thu, 18 Jun 2015 22:26:15 +0000]
VM reset from keyboard controller
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
Peter Dinda [Thu, 18 Jun 2015 22:17:30 +0000]
SVM reset capability + integration with multiboot+hvm reset capability
Peter Dinda [Thu, 18 Jun 2015 22:10:56 +0000]
HVM enhancements
- more integration with multiboot
- init scratch stacks for HRT cores
- reset capability
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
Peter Dinda [Thu, 18 Jun 2015 22:02:55 +0000]
Detailed segmentation output from v3_debug
Peter Dinda [Thu, 18 Jun 2015 21:59:05 +0000]
Guest mem gpa/gva memset functions
Peter Dinda [Thu, 18 Jun 2015 21:54:06 +0000]
Factoring of BIOS setup so that it can be reused during reset
Peter Dinda [Thu, 18 Jun 2015 21:47:38 +0000]
Subset barrier support (counting barriers)
Peter Dinda [Thu, 18 Jun 2015 21:41:46 +0000]
SEABIOS updates to support reset and to simplify
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
Peter Dinda [Sun, 14 Jun 2015 16:22:57 +0000]
Avoid strict-aliasing related issues when compiling with optimization
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
Peter Dinda [Mon, 8 Jun 2015 20:00:26 +0000]
pci_front bugfix - do not propagate cmd reg write twice
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.
Peter Dinda [Tue, 19 May 2015 16:36:11 +0000]
Cleanup of locking in host device interface
Peter Dinda [Tue, 19 May 2015 16:27:47 +0000]
Addition of basic multiboot functionality plus refactor of HVM
functionality to extend multiboot
Peter Dinda [Tue, 28 Apr 2015 17:03:40 +0000]
Minor compile warning fixup and error checks
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
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
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
Peter Dinda [Wed, 1 Apr 2015 20:55:49 +0000]
Minor tweak to fix accidental new feature leak
Peter Dinda [Wed, 25 Mar 2015 21:24:24 +0000]
Typo fix
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
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.
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.
Peter Dinda [Mon, 23 Mar 2015 21:09:33 +0000]
Add HVM configuration capability, init/deinit, etc
Peter Dinda [Mon, 23 Mar 2015 20:59:03 +0000]
HVM updates to support apic partitioning
Peter Dinda [Sun, 22 Mar 2015 23:06:04 +0000]
Basic HVM data structures and functions
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
Peter Dinda [Thu, 12 Mar 2015 02:00:40 +0000]
Add proper cleanup for a nested VMX guest This also fixes a bug that was preventing such a guest from being freed
Peter Dinda [Thu, 5 Mar 2015 00:46:43 +0000]
IDE/ATA enhancements and bug-fixing: DMA operation
This makes DMA operation with ATA hard drives work
by fixing multiple issues and making it conform to
the physical hardware model
Remaining issues:
DMA disabled on CDs due to bad identity info
UDMA5 not seen (probably not consequential since
programatic model is identical to all the rest)
Peter Dinda [Thu, 5 Mar 2015 00:40:00 +0000]
PCI Fix: do not let buggy guest turn off I/O bit in an I/O BAR
An example of such a "guest" is the fucking SEABIOS
Peter Dinda [Wed, 4 Mar 2015 21:24:22 +0000]
IDE/ATA enhancements: read/write multiple, lba48 addressing, cleanup
This commit cleans up the code and adds:
- ATA PIO READ/WRITE MULTIPLE support
- LBA48 Addressing (Allowing >128 GB volumes)
- General cleanup of type sizes, and assorted other
mods to support LBA48
Peter Dinda [Wed, 4 Mar 2015 18:22:21 +0000]
IDE / ATA rewrites (1st step)
This adds functional support for ATA hard drives in PIO mode
giving both read and write access. It also does a bit of
bugfixing throughout.
Kyle Hale [Mon, 29 Dec 2014 19:54:15 +0000]
FPU stub change to support more recent kernels
Kyle Hale [Mon, 22 Dec 2014 22:21:33 +0000]
Missing user space library
Peter Dinda [Mon, 22 Dec 2014 22:21:04 +0000]
Userspace tool compile fix
Maciek Swiech [Thu, 9 Oct 2014 22:44:30 +0000]
More debugging output (APIC, LDT, etc)
- APIC state can now be dumped
- LDT is included
- LDT/GDT/IDT/TSS can now be dumped via v3_debug
Maciek Swiech [Thu, 9 Oct 2014 18:16:55 +0000]
Added guest GDT and IDT printing
- 32bit functionality untested
- LDT printing unsupported
Peter Dinda [Sun, 21 Sep 2014 20:13:01 +0000]
Revert mistakenly overwritten lazy FP change (no functional change)
Peter Dinda [Thu, 11 Sep 2014 22:24:38 +0000]
Initial cut at handling configuration of qemu devices
Kyle Hale [Tue, 26 Aug 2014 18:13:51 +0000]
add ability to load custom BIOS ROMs.
This patch allows you to override the default ROMBIOS and VGABIOS with
your own ROM binaries in the guest pal file.
here's an example overriding the default rombios and vgabios, with
another non-default BIOS rom:
<files>
<file id="somebios" filename="/path/to/mybios.bin"/>
<file id="somevgabios" filename="/path/to/myvgabios.bin"/>
<file id="somerombin" filename="/path/to/myrom.bin"/>
</files>
here's the new PAL syntax:
<bioses>
<disable_rombios/> <--- kills the default rombios
<disable_vgabios/> <--- kills the default vgabios
<bios file="somebios" address="0xf0000"/>
<bios file="somevgabios" address="0xc0000"/>
<bios file="somerombin" address="0xe70000"/>
</bioses>
Kyle Hale [Tue, 26 Aug 2014 18:10:23 +0000]
add userspace shared library for QEMU use
This is more or less a wrapper around v3_user_host_dev but
is intended to encompass anything that is QEMU-specific.
Kyle Hale [Tue, 26 Aug 2014 18:06:29 +0000]
changes and fixes to support QEMU integration with pci_front
Most of these changes (in pci.c and pci_front.c) involve properly
directing PCI config space and BAR reads and writes down to
the host device. Other changes are minor.
Kyle Hale [Tue, 26 Aug 2014 18:04:19 +0000]
prevent oops in generic device when port mode not correctly provided
Peter Dinda [Sun, 31 Aug 2014 22:00:07 +0000]
P-State more detailed hw info from ACPI
Peter Dinda [Sun, 31 Aug 2014 20:10:22 +0000]
P-State control - minor tweaks and change to proc interface
Kyle Hale [Wed, 27 Aug 2014 22:23:04 +0000]
P-State: add notifier block for linux frequency transitions, bug fixes
Kyle Hale [Wed, 27 Aug 2014 20:02:43 +0000]
fix pstate set lockup by setting frequency using linux work queues
Peter Dinda [Tue, 26 Aug 2014 15:41:40 +0000]
P-State (DVFS) Enhancements
- Change of pstate interface to be opaque 64 bit number
- Nearly complete "direct" implementation for Intel
Kyle Hale [Sat, 23 Aug 2014 03:40:10 +0000]
added linux cpufreq interface to dvfs code.
Writes (setting of frequency/governors) currently
occur in sysfs via linux userspace helper API.
Reads occur through the cpufreq policy interface.
Peter Dinda [Wed, 20 Aug 2014 14:35:38 +0000]
DVFS - added forgotten user-space library
Peter Dinda [Fri, 15 Aug 2014 18:29:43 +0000]
Additional functionality for pstate-ctrl
Kyle Hale, Shiva Rao, and Peter Dinda [Wed, 13 Aug 2014 00:05:25 +0000]
P-State control on Linux - User Utility and Library
Kyle Hale, Shiva Rao, and Peter Dinda [Wed, 13 Aug 2014 00:03:12 +0000]
P-State control interface - Linux implementation
Kyle Hale, Shiva Rao, and Peter Dinda [Wed, 13 Aug 2014 00:02:08 +0000]
P-State (DVFS) control host interface
Peter Dinda [Sun, 27 Jul 2014 20:33:40 +0000]
Update host device framework to support PCI and other interrupt types
Oscar Mondragon [Mon, 25 Aug 2014 01:34:36 +0000]
v3_cpu_mapper_admit_vm function call moved from start_thread to create_thread
Peter Dinda [Sun, 24 Aug 2014 20:22:17 +0000]
Bug fix and cleanup
- fix create/start thread distinction
- clean up distinction to make it clearer what happens throughout vmm and kernel module
- compilation tweak for swapping
Oscar Mondragon [Mon, 18 Aug 2014 21:37:57 +0000]
Hook for thread creation split into create and start thread
Kyle Hale [Tue, 22 Jul 2014 18:30:54 +0000]
change default guest name in guest config script
since there is a directory in the palacios tree named 'guest',
v3_config_guest shouldn't use this as the default guest directory
Peter Dinda [Mon, 7 Jul 2014 21:13:37 +0000]
Missing commit (compilation with memmory tracking off)
Peter Dinda [Mon, 7 Jul 2014 18:43:42 +0000]
Assorted bug fixes and defensive programming
- Sanity check top-level v3_ calls from host
- Eliminate vm free bug when config of shadow-paging vm terminates before passthrough paging is initialized
- Linux module - avoid v3_stop/free on cleanup for orphaned VMs (guest_map out of sync)
Peter Dinda [Mon, 7 Jul 2014 18:42:21 +0000]
IDE bug fix
- corrected interrupt assignment for secondary channel
Peter Dinda [Mon, 30 Jun 2014 22:35:59 +0000]
Minor cleanup in memory tracking
Peter Dinda [Mon, 30 Jun 2014 22:35:05 +0000]
Visualization and stats scripts for memory access tracking
Peter Dinda [Mon, 30 Jun 2014 19:25:10 +0000]
Better support for dynamic changes to page event callbacks
Peter Dinda [Mon, 30 Jun 2014 19:22:07 +0000]
Add shared-exclusive (readers-writer) locks
Peter Dinda [Fri, 27 Jun 2014 00:55:36 +0000]
Linux user-space tools for memory tracking functionality
Peter Dinda [Fri, 27 Jun 2014 00:54:50 +0000]
Linux front-end for memory tracking interface
Peter Dinda [Fri, 27 Jun 2014 00:52:56 +0000]
Add memory tracking functionality to Palacios
This creates an abstraction for tracking memory references
at the granularity of pages, regardless of the paging mechanism
being used.
Peter Dinda [Mon, 23 Jun 2014 18:05:13 +0000]
Guest control cleanup
Peter Dinda [Sun, 22 Jun 2014 23:05:39 +0000]
Expose swapping and pinning to host + add visibility to linux module
/proc/v3vee/v3-guests-details will now show the swapped or pinned state
of regions
Peter Dinda [Sun, 22 Jun 2014 23:04:20 +0000]
Minor bug fixes and defensive programming
Daniel Zuo, Nikhat Karimi, Ahalya Srinivasan, Peter Dinda [Sat, 21 Jun 2014 02:08:54 +0000]
Add swapping and pinning capability to Palacios
This commit adds allows swapping of VMs at the granularity of
base regions. Since base regions down to the page granularity are
possible, this swapper can swap down to page granularity as well.
The functionality can be selected at compile time, and the use of
swapping is determined at run time with a new "swapping" block, like
this:
<mem ... >N_MB</mem> Size of memory in the GPA
<swapping enable="y">
<allocated>M_MB</allocated> Allocated space (M_MB <= N_MB)
<file>FILENAME</file> Where to swap to
<strategy>STRATEGY</strategy> Victim picker to use NEXT_FIT, RANDOM (default), LRU, DEFAULT
</swapping>
Pinning is also supported
Peter Dinda [Sat, 21 Jun 2014 01:33:33 +0000]
Make newly created files 0600 by default
Peter Dinda [Mon, 9 Jun 2014 23:01:46 +0000]
Minor fixes
- friendlier yield in vtime
- VMM launch observes started vcores (from checkpoint resume with >1 vcores)
Peter Dinda [Mon, 9 Jun 2014 22:38:27 +0000]
Refactoring and additions to direct paging (nested and passthrough)
- SVM and VMX nested paging are better integrated, so there
is now a single concept of "nested paging" at the "v3_" level
- VMX nested paging now has a parallel interface to SVM nested paging,
so you can, for example invalidate regions, etc.
- Nested paging now has an event callback mechanism
- Direct paging now has an event callback mechanism
- v3_ functions related to nested and direct paging
now return the GPA ranges they affect, as do
the new event callbacks
Chunxiao Diao, Daniel Zuo, Yuanbo Fan [Mon, 26 May 2014 21:23:04 +0000]
Convert shadow paging to use 32 PAE (Remove 32 Bit Restrictions)
This changes shadow paging to use, at minimum, 32PAE
shadow page tables. This makes it possible to place
a guest using shadow paging anywhere in host physical
memory instead of just the first 4 GB
This patch removes the concept of "Shadow Safe" memory
from Palacios, and it removes all places where it was used,
most importantly, in the allocation of the guest itself.
These patches must be used together.
Peter Dinda [Mon, 26 May 2014 21:20:01 +0000]
Convert shadow paging to use 32 PAE (Require Long Mode)
This changes shadow paging to use, at minimum, 32PAE
shadow page tables. This makes it possible to place
a guest using shadow paging anywhere in host physical
memory instead of just the first 4 GB
This change requires Palacios to be initialized and
run in long mode. At minimum, we need PAE to be
available, and ideally, we want the version of PAE
developed for long mode to the one we use, not
the Intel legacy PAE stuff for 32 bit mode.
These patches need to be used together.
Peter Dinda [Mon, 26 May 2014 21:15:24 +0000]
Convert shadow paging to use 32 PAE (VMX)
This changes shadow paging to use, at minimum, 32PAE
shadow page tables. This makes it possible to place
a guest using shadow paging anywhere in host physical
memory instead of just the first 4 GB
This patch adds support to VMX for this functionality:
- cr4 is read-shadowed to the shadow pager's guest cr4
- PAE is forced on
- vmx assist does not overwrite cr4 control, just masks it
- cleaner activation of passthrough PTs
Note that this is able to boot a BOCHS BIOS and a Linux guest.
It fails to boot the SEABIOS (Trap 0x8), but then that bug
is confirmed to be independent of these patches.
Chunxiao Diao, Daniel Zuo, Yuanbo Fan [Mon, 26 May 2014 21:11:44 +0000]
Convert shadow paging to use 32 PAE (SVM)
This changes shadow paging to use, at minimum, 32PAE
shadow page tables. This makes it possible to place
a guest using shadow paging anywhere in host physical
memory instead of just the first 4 GB
This patch updates SVM so that the shadow pts are activated
and CR4 reads as well as writes are intercepted.
Note that all patches with this name need to be used together
for this to work.
Chunxiao Diao, Daniel Zuo, Yuanbo Fan [Mon, 26 May 2014 20:58:49 +0000]
Convert shadow paging to use 32 PAE (Direct Paging)
This changes shadow paging to use, at minimum, 32PAE
shadow page tables. This makes it possible to place
a guest using shadow paging anywhere in host physical
memory instead of just the first 4 GB
This patch converts the direct pager to use 32PAE.
The direct pager is active when the guest has no
installed page tables. All patches of this name
need to be applied for this to work.
Chunxiao Diao, Daniel Zuo, Yuanbo Fan [Mon, 26 May 2014 20:54:18 +0000]
Convert shadow paging to use 32 PAE (Core)
This changes shadow paging to use, at minimum, 32PAE
shadow page tables. This makes it possible to place
a guest using shadow paging anywhere in host physical
memory instead of just the first 4 GB
This first patch adds core functionality to the VTLB
pager, as well as change to CR4 handling. The
other patches with this name need to be applied for
this to work.
Chunxiao Diao [Sun, 6 Apr 2014 22:13:49 +0000]
Corrected corner case in VTLB (shadow paging) handling
Peter Dinda [Sun, 6 Apr 2014 21:48:21 +0000]
Assorted minor fixes to the transactional memory code
Kyle Hale [Mon, 24 Mar 2014 17:43:16 +0000]
don't let PCI BAR updates go through when device IO-space disabled
Kyle Hale [Wed, 26 Mar 2014 05:35:31 +0000]
XEND instruction now correctly generates GPF when not in RTM mode