#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>
#include <palacios/vmm_msr.h>
#include <palacios/vmm_hypercall.h>
#include <palacios/vmm_cpuid.h>
-
+#include <palacios/vmm_regs.h>
#ifdef CONFIG_TELEMETRY
#include <palacios/vmm_telemetry.h>
#endif
-#ifdef CONFIG_SYMBIOTIC_SWAP
-#include <palacios/vmm_sym_swap.h>
-#endif
-
-
-
-
#ifdef CONFIG_SYMBIOTIC
#include <palacios/vmm_symbiotic.h>
#include <palacios/vmm_config.h>
-
struct v3_intr_state;
-#ifdef CONFIG_SYMBIOTIC_SWAP
-struct v3_sym_swap_state;
-#endif
-
-
+/* 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;
v3_cpu_mode_t cpu_mode;
v3_mem_mode_t mem_mode;
- uint_t addr_width;
+
struct v3_gprs vm_regs;
struct v3_ctrl_regs ctrl_regs;
struct v3_vm_info * vm_info;
- // the logical cpu this guest context is executing on
- int cpu_id;
-};
+ // 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;
#ifdef CONFIG_SYMBIOTIC
// Symbiotic state
struct v3_sym_vm_state sym_vm_state;
-#ifdef CONFIG_SYMBIOTIC_SWAP
- struct v3_sym_swap_state swap_state;
-#endif
#endif