X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmx.c;h=54ccd3cbf2b7ed478c18834403cf7f82eecf0e4e;hb=c58da27ff29c9cd0511c7c3f64eff2644fa85961;hp=03dab64576ef5547dd300530faf3bfedd5580b57;hpb=d6c39d69e162e32b158d7014f902f281cd7753f5;p=palacios.git diff --git a/palacios/src/palacios/vmx.c b/palacios/src/palacios/vmx.c index 03dab64..54ccd3c 100644 --- a/palacios/src/palacios/vmx.c +++ b/palacios/src/palacios/vmx.c @@ -758,7 +758,9 @@ int v3_vmx_enter(struct guest_info * info) { v3_update_timers(info); if (vmcs_store() != vmx_info->vmcs_ptr_phys) { + vmcs_clear(vmx_info->vmcs_ptr_phys); vmcs_load(vmx_info->vmcs_ptr_phys); + vmx_info->state = VMX_UNLAUNCHED; } v3_vmx_restore_vmcs(info); @@ -787,30 +789,6 @@ int v3_vmx_enter(struct guest_info * info) { check_vmcs_write(VMCS_TSC_OFFSET, tsc_offset_low); - /* determine if we need to move to a different physical core */ - if(info->core_move_state == CORE_MOVE_PENDING) { - vmcs_clear(vmx_info->vmcs_ptr_phys); - - v3_enable_ints(); - - if(V3_MOVE_THREAD_TO_CPU(info->target_pcpu_id, info->core_thread) != 0){ - PrintError("Failed to move vcore %d to CPU %d\n", info->vcpu_id, info->target_pcpu_id); - } else { - info->pcpu_id = info->target_pcpu_id; - PrintDebug("Core move done, vcore %d is running on CPU %d now\n", info->vcpu_id, V3_Get_CPU()); - } - - /* disable global interrupts, - * NOTE now it is being running on a different CPU - */ - v3_disable_ints(); - - vmcs_load(vmx_info->vmcs_ptr_phys); - vmx_info->state = VMX_UNLAUNCHED; - info->core_move_state= CORE_MOVE_DONE; - } - - if (v3_update_vmcs_host_state(info)) { v3_enable_ints(); PrintError("Could not write host state\n"); @@ -820,6 +798,7 @@ int v3_vmx_enter(struct guest_info * info) { if (vmx_info->state == VMX_UNLAUNCHED) { vmx_info->state = VMX_LAUNCHED; + info->vm_info->run_state = VM_RUNNING; ret = v3_vmx_launch(&(info->vm_regs), info, &(info->ctrl_regs)); } else {