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 [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
Kyle Hale [Wed, 26 Mar 2014 00:44:24 +0000]
small fixes in RTM code
Kyle Hale [Wed, 26 Mar 2014 00:06:09 +0000]
RTM code: abort on extern irqs and fixed bug in abort handling
Kyle Hale [Tue, 25 Mar 2014 22:02:59 +0000]
correct XTEST behavior in RTM code
Kyle Hale [Tue, 25 Mar 2014 21:55:19 +0000]
steps toward correct exception emulation in RTM code
Kyle Hale [Tue, 25 Mar 2014 21:15:20 +0000]
RAX is now set with a status code on aborts for RTM, as per Intel spec
Kyle Hale [Tue, 25 Mar 2014 18:44:50 +0000]
expose RTM cap in CPUID
Maciek Swiech [Tue, 25 Mar 2014 15:44:31 +0000]
addition of print macros for RTM code
Kyle Hale [Tue, 25 Mar 2014 00:09:37 +0000]
significant refactoring of RTM emulation code
This is the first cut at a refactor of the transactional memory
extension. Most changes have been to reduce large function sizes, and
to reduce footprint in changes to Palacios core files. There are
several bug fixes as well, and this gets us to the point where we
can run thousand-transaction benchmarks on single-core.
At this point our main limitations are yet-to-be implemented
architectural features (coming soon) and limitations in the
quix86 decoder.
Signed-off-by: Maciek Swiech <dotpyfe@u.northwestern.edu>
Kevin Pedretti [Fri, 4 Apr 2014 21:53:36 +0000]
Add comment
Kevin Pedretti [Fri, 4 Apr 2014 21:49:37 +0000]
Fix xed build error
Peter Dinda [Mon, 24 Mar 2014 21:59:03 +0000]
Ignore frees of null in all cases (kfree, vfree, pagefree)
Kyle Hale [Mon, 24 Mar 2014 21:42:39 +0000]
add ability to destroy hashtable iterators
Kyle Hale [Sun, 23 Mar 2014 20:02:59 +0000]
doc fix for config_v3vee
Peter Dinda [Tue, 11 Mar 2014 16:09:42 +0000]
HPET does not abort load/save
Peter Dinda [Thu, 6 Mar 2014 19:33:35 +0000]
Minor bug fix
Kyle Hale [Thu, 6 Mar 2014 19:19:28 +0000]
Added HPET (High Precision Event Timer) device
This is an initial implementation of a virtual HPET. Does not support
checkpoint save/restore yet. The HPET is currently defined to run at
1/16th of guest time
Note that a typical guest will check for the existence of the HPET
via an ACPI table. To force the current SeaBios to build this table
apply the following patch to it. This will eventually be automatic.
rem diff --git a/bios/seabios/src/acpi.c b/bios/seabios/src/acpi.c
rem index 95575a1..da7c9e9 100644
rem --- a/bios/seabios/src/acpi.c
rem +++ b/bios/seabios/src/acpi.c
rem @@ -673,9 +673,9 @@ acpi_bios_init(void)
rem ACPI_INIT_TABLE(build_fadt(pci));
rem ACPI_INIT_TABLE(build_ssdt());
rem ACPI_INIT_TABLE(build_madt());
rem - if (pci) {
rem + //if (pci) {
rem ACPI_INIT_TABLE(build_hpet());
rem - }
rem + //}
rem ACPI_INIT_TABLE(build_srat());
rem
rem u16 i, external_tables = qemu_cfg_acpi_additional_tables();
Peter Dinda [Sat, 22 Feb 2014 00:26:17 +0000]
APIC bugfix - corrected MSR read/write behavior
Jack Lange [Thu, 20 Feb 2014 18:47:48 +0000]
virtio-blk now handles config requests for non-declared config info
Peter Dinda [Tue, 18 Feb 2014 01:18:57 +0000]
Minor cleanups on shadow paging build/debug
Maciek Swiech [Wed, 22 Jan 2014 22:54:08 +0000]
Addition of state to checkpoint
- now includes memory and cpu modes and CPL
- CPL sanity check
Maciek Swiech [Fri, 17 Jan 2014 22:20:35 +0000]
v3_stream argument number bugfix
Peter Dinda [Tue, 14 Jan 2014 00:13:08 +0000]
Additional sanity-checks for guest configuration (v3_config_guest.pl)
Peter Dinda [Tue, 14 Jan 2014 00:04:02 +0000]
Error checking fixes, minor bug in keyed stream, minor bug in checkpoint
All allocations now zeroed by default
Maciej Swiech [Fri, 10 Jan 2014 23:23:28 +0000]
Apic initialization bugfix
Kyle Hale [Tue, 7 Jan 2014 23:31:45 +0000]
Added ATA PIO write, other ide cleanup
Kyle Hale [Mon, 6 Jan 2014 17:46:28 +0000]
arg length bugfix in v3_stream
Chen Jin, Bharath Pattabiraman, and Patrick Foley [Fri, 3 Jan 2014 21:19:49 +0000]
Guest PXE boot code
Peter Dinda [Sun, 22 Dec 2013 22:16:36 +0000]
Boot sequenece selection for nvram
Peter Dinda [Sat, 21 Dec 2013 18:45:28 +0000]
Add logic to VGA for vertical/horizontal retrace
Kyle Hale [Sat, 21 Dec 2013 18:43:45 +0000]
Add missing case to print all debugging info in vmm_debug
Maciek Swiech [Fri, 6 Dec 2013 19:14:40 +0000]
Fix for floating point save/restore in case where fp context switching is turned off
Ruba Merza [Sun, 1 Dec 2013 01:23:39 +0000]
Guest-side test tools, config, and X11 stuff for PARAGRAPH graphics device
Peter Dinda [Tue, 26 Nov 2013 01:52:14 +0000]
Updated defaults to reflect former behavior for CPUID, MSRs, FP-Switching
The user must explicitly enable custom cpuid, strict msrs, and fp-swithing
Peter Dinda [Tue, 26 Nov 2013 01:39:51 +0000]
Bugfix to base memory region lookup
Peter Dinda [Tue, 26 Nov 2013 01:37:40 +0000]
Minor tweaks
- vmxassist doesn't print errors for information output
- guest config script cleanup
Peter Dinda [Tue, 26 Nov 2013 01:35:07 +0000]
Allow strict MSR semantics
When enabled, reads/writes to MSRs we do not handle cause GPF to be injected.
This is the architecturally specified reaction.
When disabled, our more lenient behavior is used (read=0, write=ignored)
Peter Dinda [Tue, 26 Nov 2013 01:32:00 +0000]
Allow custom CPUID
- when enabled, guest sees a strictly controlled cpuid result
with a "V3VEE" cpu vendor, etc. This is intended to help with
cross-architecture migrations where we want to prevent the
the guest from doing anything specific to the eratta of the
startup CPU.
- when disabled, guest sees former behavior (cpuid of host
masked for functionality we cannot support)
Kyle Hale [Tue, 26 Nov 2013 01:30:16 +0000]
atapi and ioapic bugfixes
atapi: allow start/stop cd rom - needed for some kernels
ioapic: assure it's zeroed out at startup
Peter Dinda [Fri, 25 Oct 2013 23:30:39 +0000]
Floating point context-switching and checkpoint/load
This integrates:
- the option to do floating point context-switching
- conservative code to do context-switching in Palacios
- a lazy floating point save/restore host interface
- an implementation of this interface in the linux module
- liberal code to use this interface in Palacios
- floating point checkpointing
This also includes a performance tuning element that
is hard to separate
Peter Dinda [Mon, 25 Nov 2013 23:23:07 +0000]
VGA bugfixes
This patch corrects the behavior of VGA write modes 2 and 3 and
VGA read mode 1. This repairs ugly output in typical graphics use
Kyle Hale [Tue, 8 Oct 2013 21:20:45 +0000]
fix GEARS code inject dependency
Kyle Hale [Tue, 8 Oct 2013 21:04:04 +0000]
remove assertions in power monitoring initialization
Peter Dinda [Thu, 10 Oct 2013 20:27:12 +0000]
Switch VNET to use adaptive yielding by default, to reduce busy-waiting in the bridge and transmit-kick threads
Peter Dinda [Thu, 10 Oct 2013 20:22:01 +0000]
Dynamic migration of memory from node to node
This adds the ability to move memory regions of a VM from user space:
v3_mem_move /dev/v3-vmX guest_paddr host_cpuid
This will move the memory region in which guest_paddr is contained
from its current numa node to the one affiliated with host_cpuid
Combined with v3_core_move, this should provide the ability to
dynamically manipulate NUMA mappings at runtime, to the granularity
of the v3_mem_block_size (which is selected at insmod time)
Kyle Hale [Tue, 8 Oct 2013 17:54:17 +0000]
bring GEARS up to date with interface changes
Kyle Hale [Tue, 8 Oct 2013 17:45:53 +0000]
error checking in file close
Kyle Hale [Tue, 8 Oct 2013 17:08:56 +0000]
clean up v3_mem errors
Kyle Hale [Mon, 7 Oct 2013 20:29:12 +0000]
more paranoid error checking
These changes handle the case in which v3_free_vm is called
before several subsystems have been initialized. The ones that are particularly
prone are the non-pointers in the v3_vm_info struct that have list_head elements.
Kyle Hale [Mon, 7 Oct 2013 20:17:24 +0000]
Reduced debugging output from consoles / ioctls
Kyle Hale [Mon, 7 Oct 2013 20:16:23 +0000]
Guest configurator cleanup (nvram, vnet)
Peter Dinda [Fri, 4 Oct 2013 22:12:23 +0000]
Handle oddball NUMA alloc/dealloc cases when kernel provides memory on undesired node
Peter Dinda [Fri, 4 Oct 2013 18:22:49 +0000]
Clean up hashtable frees to fix rmmod crash on redhat
Peter Dinda [Fri, 4 Oct 2013 15:18:03 +0000]
VNET memory interface and deinit cleanup
Peter Dinda [Fri, 4 Oct 2013 15:16:24 +0000]
Restructure device configuration menus to make things clearer -
we have too many devices to just have a giant list
Peter Dinda [Fri, 4 Oct 2013 15:11:52 +0000]
Added guest configurator and renamed v3vee configurator
Peter Dinda [Fri, 4 Oct 2013 15:10:05 +0000]
v3_config emits memory allocations balanced across numa nodes
Patrick G. Bridges [Tue, 1 Oct 2013 18:59:17 +0000]
EDF scheduler bugfixes from Oscar
Peter Dinda [Fri, 20 Sep 2013 22:08:23 +0000]
Graceful teardown of seabios fw config and fix of memory leak
Peter Dinda [Fri, 20 Sep 2013 21:27:39 +0000]
Fixed spurious warning when memory block size is overrriden
Peter Dinda [Fri, 20 Sep 2013 21:02:16 +0000]
Assorted cleanup
Peter Dinda [Thu, 19 Sep 2013 23:26:54 +0000]
minor numa interface cleanup, and make sure initialization occurs
Peter Dinda [Thu, 19 Sep 2013 22:25:42 +0000]
Cleaned up deinitialization of VMM and free of VMs
Peter Dinda [Sun, 15 Sep 2013 22:43:08 +0000]
Memory management and /proc enhancements
- /proc/v3vee/v3-info projects up useful information about the dynamic configuration of Palacios
- v3_mem uses this functionality to catch common problems before making kernel
requests. It also can now search for appropriate memory to offline given the numa domain
Patrick Bridges [Sun, 15 Sep 2013 22:42:22 +0000]
Basic host scheduler bug fix
Peter Dinda [Sun, 15 Sep 2013 19:58:33 +0000]
Clean up debugging output
Peter Dinda [Wed, 28 Aug 2013 13:58:57 +0000]
Checkpoint/Restore fixes
- handles multi-base region VMs with distinct tags for each base region
- checks to see if restore VM's region setup is identical to the checkpoint
VM's before proceeding (this will eventually be expanded to do translation)
- minor fix to keyed stream to support large files
- minor error fix to save/restore of serial
Peter Dinda [Wed, 28 Aug 2013 13:56:18 +0000]
mptable no longer errors out if it doesn't find the mptable target area
in the VM. This area does not exist if the seabios is used. With this fix
if you have an mptable in a VM that is instantiated with seabios, it will just
not create an mptable. instead, the seabios will create one
Peter Dinda [Wed, 21 Aug 2013 20:17:23 +0000]
Updated userspace guest memory access tools for regions, plus added new fast functionality for
copies, hashes, and applies
Peter Dinda [Tue, 20 Aug 2013 23:25:18 +0000]
Made memory manager reset distinct from removal of memory
Peter Dinda [Tue, 20 Aug 2013 23:14:30 +0000]
Memory management enhancements: dynamic removal, cleanup at module remove time
Peter Dinda [Tue, 20 Aug 2013 23:07:59 +0000]
Enhanced configuration generation (now handles memory removal/offlining
Peter Dinda [Tue, 20 Aug 2013 23:06:36 +0000]
v3_mem enhancements - managed offlining; ability to deallocate memory (obviates v3_mem_free)
Peter Dinda [Sun, 18 Aug 2013 22:12:33 +0000]
Improved /proc/v3vee/v3-guests* output
Peter Dinda [Sun, 18 Aug 2013 21:01:07 +0000]
Constraints in page allocation, and code changes to use them; shadow paging allocations below 4 GB
This updates the page allocation os hook to take a "constraints" parameter. Currently,
there only one constraint, allocation below 4 GB. The buddy allocator and other elements
of the support code now obey this constraint. I have vetted page allocations in Palacios
so that with a guest using shadow paging, any allocation that could become part of the
guest memory map, and any allocation done in 32 bit shadow paging (page tables) is done
with this constraint. THis includes direct paging. Nested paging should be unaffected.
Peter Dinda [Sun, 18 Aug 2013 20:57:27 +0000]
Bug fixes to v3_mem
Peter Dinda [Thu, 8 Aug 2013 00:37:11 +0000]
Configuration Generation tool for Linux Embedding
This attempts to wrap the complexity of memory configuration, devmem, etc
to tune to the user's environment and to their needs
Peter Dinda [Wed, 7 Aug 2013 22:48:38 +0000]
VNET compatibility with NUMA interfaces
Peter Dinda [Wed, 7 Aug 2013 21:37:13 +0000]
v3_mem fixes
- memory offlining now contingent on a block being both removable
and not already offline
- re-onlines memory on failure for additional cases