#include <palacios/vmm_types.h>
#include <palacios/vmm_mem.h>
+#include <palacios/vmm_mem_hook.h>
#include <palacios/vmm_io.h>
#include <palacios/vmm_shadow_paging.h>
#include <palacios/vmm_intr.h>
#endif
-#ifdef CONFIG_VNET
-#include <palacios/vmm_vnet.h>
-#endif
-
-
#ifdef CONFIG_SYMBIOTIC
#include <palacios/vmm_symbiotic.h>
struct v3_sym_core_state;
#include <palacios/vmm_config.h>
-
struct v3_intr_state;
-
-
+/* per-core state */
struct guest_info {
uint64_t rip;
struct v3_shdw_pg_state shdw_pg_state;
addr_t direct_map_pt;
-
// This structure is how we get interrupts for the guest
struct v3_intr_core_state intr_core_state;
struct v3_vm_info * vm_info;
- // the logical cpu this guest context is executing on
- int cpu_id;
-#ifdef CONFIG_VNET_PROFILE
- struct v3_vnet_profile vnet_times;
-#endif
+ // the logical cpu on which this core runs
+ uint32_t cpu_id;
};
-
+/* shared state across cores */
struct v3_vm_info {
v3_vm_class_t vm_class;
addr_t mem_size; // In bytes for now
struct v3_mem_map mem_map;
+ v3_paging_size_t paging_size; // for nested paging
+
+ struct v3_mem_hooks mem_hooks;
struct v3_shdw_impl_state shdw_impl;