X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmx.c;h=23d631a79f1c61a088c091f1945fad007b6479fd;hb=3650bf4aaa4f83afae52c8fee98fce6e3ee68deb;hp=aba80c76a1c187dd09d1a5a03691e43f25cf773d;hpb=a7cacea293dbc2fbbbe36421054eff95f88390d4;p=palacios.git diff --git a/palacios/src/palacios/vmx.c b/palacios/src/palacios/vmx.c index aba80c7..23d631a 100644 --- a/palacios/src/palacios/vmx.c +++ b/palacios/src/palacios/vmx.c @@ -44,6 +44,10 @@ #include #include +#ifdef V3_CONFIG_MEM_TRACK +#include +#endif + #ifndef V3_CONFIG_DEBUG_VMX #undef PrintDebug #define PrintDebug(fmt, args...) @@ -329,7 +333,7 @@ static int init_vmcs_bios(struct guest_info * core, struct vmx_data * vmx_state) - if (v3_init_ept(core, &hw_info) == -1) { + if (v3_init_nested_paging_core(core, &hw_info) == -1) { PrintError(core->vm_info, core, "Error initializing EPT\n"); return -1; } @@ -427,7 +431,7 @@ static int init_vmcs_bios(struct guest_info * core, struct vmx_data * vmx_state) ((struct cr0_32 *)&(core->shdw_pg_state.guest_cr0))->ne = 1; ((struct cr0_32 *)&(core->shdw_pg_state.guest_cr0))->cd = 0; - if (v3_init_ept(core, &hw_info) == -1) { + if (v3_init_nested_paging_core(core, &hw_info) == -1) { PrintError(core->vm_info, core, "Error initializing EPT\n"); return -1; } @@ -978,6 +982,10 @@ int v3_vmx_enter(struct guest_info * info) { // Conditionally yield the CPU if the timeslice has expired v3_schedule(info); +#ifdef V3_CONFIG_MEM_TRACK + v3_mem_track_entry(info); +#endif + // Update timer devices late after being in the VM so that as much // of the time in the VM is accounted for as possible. Also do it before // updating IRQ entry state so that any interrupts the timers raise get @@ -1178,6 +1186,10 @@ int v3_vmx_enter(struct guest_info * info) { v3_handle_timeouts(info, guest_cycles); } +#ifdef V3_CONFIG_MEM_TRACK + v3_mem_track_exit(info); +#endif + return 0; } @@ -1186,6 +1198,20 @@ int v3_start_vmx_guest(struct guest_info * info) { PrintDebug(info->vm_info, info, "Starting VMX core %u\n", info->vcpu_id); +#ifdef V3_CONFIG_MULTIBOOT + if (v3_setup_multiboot_core_for_boot(info)) { + PrintError(info->vm_info, info, "Failed to setup Multiboot core...\n"); + return -1; + } +#endif + +#ifdef V3_CONFIG_HVM + if (v3_setup_hvm_hrt_core_for_boot(info)) { + PrintError(info->vm_info, info, "Failed to setup HRT core...\n"); + return -1; + } +#endif + while (1) { if (info->core_run_state == CORE_STOPPED) { if (info->vcpu_id == 0) {