X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm.c;h=384b355d62a4abe85d9da46235a318bd0d5d5052;hb=d54fc24e6cfb62cc2fedfb63d3ae68ff636e3a01;hp=6d5a7f822b5dfd30abb9d4868ab77e0126bab415;hpb=a9cfeadcd23cc6832572e3855e33769fb38ef6ca;p=palacios-OLD.git diff --git a/palacios/src/palacios/svm.c b/palacios/src/palacios/svm.c index 6d5a7f8..384b355 100644 --- a/palacios/src/palacios/svm.c +++ b/palacios/src/palacios/svm.c @@ -456,8 +456,12 @@ int v3_svm_enter(struct guest_info * info) { // Conditionally yield the CPU if the timeslice has expired v3_yield_cond(info); + // Perform any additional yielding needed for time adjustment v3_adjust_time(info); + // Update timer devices prior to entering VM. + v3_update_timers(info); + // disable global interrupts for vm state transition v3_clgi(); @@ -505,7 +509,6 @@ int v3_svm_enter(struct guest_info * info) { } #endif - v3_update_timers(info); #ifdef CONFIG_TIME_HIDE_VM_COST v3_restart_time(info); #endif @@ -513,7 +516,7 @@ int v3_svm_enter(struct guest_info * info) { //V3_Print("Calling v3_svm_launch\n"); - v3_svm_launch((vmcb_t *)V3_PAddr(info->vmm_data), &(info->vm_regs), (vmcb_t *)host_vmcbs[info->cpu_id]); + v3_svm_launch((vmcb_t *)V3_PAddr(info->vmm_data), &(info->vm_regs), (vmcb_t *)host_vmcbs[info->host_cpu_id]); //V3_Print("SVM Returned: Exit Code: %x, guest_rip=%lx\n", (uint32_t)(guest_ctrl->exit_code), (unsigned long)guest_state->rip);