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.


Multithread handling of VNET
[palacios.git] / palacios / include / palacios / vmcs.h
index 2a7e42e..c80a23c 100644 (file)
 
 
 
+struct vmcs_field_encoding {
+    uint8_t access_type    : 1; /*  0 = full, 1 = high, (for accessing 64 bit fields on 32bit CPU) */
+    uint16_t index         : 9;
+    uint8_t type           : 2; /* 0=ctrl, 1=read-only, 2 = guest state, 3 = host state */
+    uint8_t rsvd1          : 1; /* MBZ */
+    uint8_t width          : 2; /* 0 = 16bit, 1 = 64bit, 2 = 32bit, 3 = natural width */
+    uint32_t rsvd2         : 17;
+} __attribute__((packed));
+
 
 typedef enum {
     VMCS_GUEST_ES_SELECTOR       = 0x00000800,
@@ -83,7 +92,7 @@ typedef enum {
     VMCS_LINK_PTR_HIGH                = 0x00002801,
     VMCS_GUEST_DBG_CTL               = 0x00002802,
     VMCS_GUEST_DBG_CTL_HIGH          = 0x00002803,
-    VMCS_GUEST_EFER                   = 0x00002805,
+    VMCS_GUEST_EFER                   = 0x00002806,
     VMCS_GUEST_EFER_HIGH              = 0x00002807,
     VMCS_GUEST_PERF_GLOBAL_CTRL       = 0x00002808,
     VMCS_GUEST_PERF_GLOBAL_CTRL_HIGH  = 0x00002809,
@@ -265,15 +274,21 @@ struct vmcs_segment {
 
 
 struct vmcs_interrupt_state {
-    uint32_t    sti_blocking    : 1;
-    uint32_t    mov_ss_blocking : 1;
-    uint32_t    smi_blocking    : 1;
-    uint32_t    nmi_blocking    : 1;
-    uint32_t    rsvd1           : 28;
+    union {
+       uint32_t val;
+       struct {
+           uint32_t    sti_blocking    : 1;
+           uint32_t    mov_ss_blocking : 1;
+           uint32_t    smi_blocking    : 1;
+           uint32_t    nmi_blocking    : 1;
+           uint32_t    rsvd1           : 28;
+       } __attribute__((packed));
+    } __attribute__((packed));
 } __attribute__((packed));
 
 
 
+
 struct vmcs_data {
     uint32_t revision ;
     uint32_t abort    ;