From: Patrick G. Bridges Date: Thu, 22 Sep 2011 18:57:46 +0000 (-0600) Subject: Merge branch 'devel' of ssh://newskysaw.cs.northwestern.edu/home/palacios/palacios... X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=commitdiff_plain;h=33bf43b34feba36dcbfa47f8f559e5862f531393;hp=-c Merge branch 'devel' of ssh://newskysaw.cs.northwestern.edu/home/palacios/palacios into devel --- 33bf43b34feba36dcbfa47f8f559e5862f531393 diff --combined palacios/src/palacios/vmx.c index 47c01c7,405bca8..1b286ae --- a/palacios/src/palacios/vmx.c +++ b/palacios/src/palacios/vmx.c @@@ -612,6 -612,14 +612,14 @@@ int v3_vmx_load_core(struct guest_info #endif + void v3_flush_vmx_vm_core(struct guest_info * core) { + struct vmx_data * vmx_info = (struct vmx_data *)(core->vmm_data); + vmcs_clear(vmx_info->vmcs_ptr_phys); + vmx_info->state = VMX_UNLAUNCHED; + } + + + static int update_irq_exit_state(struct guest_info * info) { struct vmx_exit_idt_vec_info idt_vec_info; @@@ -793,7 -801,7 +801,7 @@@ static void print_exit_log(struct guest */ int v3_vmx_enter(struct guest_info * info) { int ret = 0; - uint32_t tsc_offset_low, tsc_offset_high; + //uint32_t tsc_offset_low, tsc_offset_high; struct vmx_exit_info exit_info; struct vmx_data * vmx_info = (struct vmx_data *)(info->vmm_data); @@@ -838,10 -846,11 +846,10 @@@ // Perform last-minute time bookkeeping prior to entering the VM v3_time_enter_vm(info); - tsc_offset_high = (uint32_t)((v3_tsc_host_offset(&info->time_state) >> 32) & 0xffffffff); - tsc_offset_low = (uint32_t)(v3_tsc_host_offset(&info->time_state) & 0xffffffff); - check_vmcs_write(VMCS_TSC_OFFSET_HIGH, tsc_offset_high); - check_vmcs_write(VMCS_TSC_OFFSET, tsc_offset_low); - + // tsc_offset_high = (uint32_t)((v3_tsc_host_offset(&info->time_state) >> 32) & 0xffffffff); + // tsc_offset_low = (uint32_t)(v3_tsc_host_offset(&info->time_state) & 0xffffffff); + // check_vmcs_write(VMCS_TSC_OFFSET_HIGH, tsc_offset_high); + // check_vmcs_write(VMCS_TSC_OFFSET, tsc_offset_low); if (v3_update_vmcs_host_state(info)) { v3_enable_ints(); @@@ -860,19 -869,22 +868,22 @@@ ret = v3_vmx_resume(&(info->vm_regs), info, &(info->ctrl_regs)); } + + // PrintDebug("VMX Exit: ret=%d\n", ret); if (ret != VMX_SUCCESS) { uint32_t error = 0; - vmcs_read(VMCS_INSTR_ERR, &error); v3_enable_ints(); - PrintError("VMENTRY Error: %d\n", error); + PrintError("VMENTRY Error: %d (launch_ret = %d)\n", error, ret); return -1; } + + // Immediate exit from VM time bookkeeping v3_time_exit_vm(info);