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.


Add dynamic VMM Driven/Guest Driven mode switch in VNET devices
[palacios.git] / palacios / include / palacios / vmx.h
index a34cd46..fd5e6ce 100644 (file)
@@ -1,5 +1,3 @@
-
-
 /* 
  * This file is part of the Palacios Virtual Machine Monitor developed
  * by the V3VEE Project with funding from the United States National 
@@ -183,6 +181,11 @@ struct vmx_basic_msr {
 typedef enum { 
     VMXASSIST_DISABLED,
     VMXASSIST_ENABLED
+} vmxassist_state_t;
+
+typedef enum {
+    VMX_UNLAUNCHED,
+    VMX_LAUNCHED
 } vmx_state_t;
 
 struct tss_descriptor {
@@ -214,14 +217,22 @@ struct vmcs_host_state {
     struct v3_segment  tr;
 };
 
+
+
+
+
 struct vmx_data {
     vmx_state_t state;
+    vmxassist_state_t assist_state;
     struct vmcs_host_state host_state;
 
     addr_t vmcs_ptr_phys;
 
     uint8_t ia32e_avail;
 
+    v3_reg_t guest_cr4; /// corresponds to the CR4 Read shadow
+
+
     /* VMX Control Fields */
     struct vmx_pin_ctrls pin_ctrls;
     struct vmx_pri_proc_ctrls pri_proc_ctrls;
@@ -231,8 +242,15 @@ struct vmx_data {
 };
 
 int v3_is_vmx_capable();
+
 void v3_init_vmx_cpu(int cpu_id);
+void v3_deinit_vmx_cpu(int cpu_id);
+
+int v3_start_vmx_guest(struct guest_info* info);
+int v3_vmx_enter(struct guest_info * info);
 
+int v3_init_vmx_vmcs(struct guest_info * info, v3_vm_class_t vm_class);
+int v3_deinit_vmx_vmcs(struct guest_info * core);
 
 #endif // ! __V3VEE__