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.


Resource control extensions to host OS interface
[palacios.git] / palacios / include / palacios / vm_guest.h
index 3029c3c..84468b2 100644 (file)
@@ -39,6 +39,7 @@
 #include <palacios/vmm_regs.h>
 #include <palacios/vmm_extensions.h>
 #include <palacios/vmm_barrier.h>
+#include <palacios/vmm_subset.h>
 #include <palacios/vmm_timeout.h>
 #include <palacios/vmm_exits.h>
 #include <palacios/vmm_events.h>
@@ -69,11 +70,17 @@ struct v3_sym_core_state;
 #include <palacios/vmm_mem_track.h>
 #endif
 
+#ifdef V3_CONFIG_MULTIBOOT
+#include <palacios/vmm_multiboot.h>
+#endif
+
 #ifdef V3_CONFIG_HVM
 #include <palacios/vmm_hvm.h>
 #endif
 
-
+#ifdef V3_CONFIG_CACHEPART
+#include <palacios/vmm_cachepart.h>
+#endif
 
 #include <palacios/vmm_config.h>
 
@@ -94,6 +101,9 @@ struct guest_info {
     struct v3_core_timeouts timeouts;
     void * sched_priv_data;
 
+    // Resource constraints/etc for the thread running this core
+    v3_resource_control_t  resource_control;
+
     v3_paging_mode_t shdw_pg_mode;
     // arch-independent state of shadow pager
     struct v3_shdw_pg_state shdw_pg_state;
@@ -197,6 +207,11 @@ struct v3_vm_info {
     char name[128];
 
     v3_vm_class_t vm_class;
+
+    // Resource control for whole VM - determined early and used
+    // when building the VM, then cloned to each core
+    v3_resource_control_t resource_control;
+
     struct v3_fw_cfg_state fw_cfg_state;
 
     // This is always the total RAM (addresses 0...mem_size)
@@ -264,10 +279,22 @@ struct v3_vm_info {
     struct v3_vm_mem_track memtrack_state;
 #endif
 
+#ifdef V3_CONFIG_MULTIBOOT
+    struct v3_vm_multiboot  mb_state;
+#endif
+
 #ifdef V3_CONFIG_HVM
     struct v3_vm_hvm  hvm_state;
 #endif
 
+    // used to implement reset of regular VM and ROS
+    v3_counting_barrier_t  reset_barrier;
+
+#ifdef V3_CONFIG_CACHEPART
+    v3_cachepart_t  cachepart_state;
+#endif
+
+
     uint64_t yield_cycle_period;