X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmx.c;h=3fede2b3e1677a64d5446de6ee7bf2815c87ce9d;hb=ef99d19f9ee3ff28d07f83c240a557938b3ab0d5;hp=ed5140fad09fd70c1765518600f0b3f8d340f886;hpb=25569fd796d1e1bb160b1b25ece9d4d3422720be;p=palacios.git diff --git a/palacios/src/palacios/vmx.c b/palacios/src/palacios/vmx.c index ed5140f..3fede2b 100644 --- a/palacios/src/palacios/vmx.c +++ b/palacios/src/palacios/vmx.c @@ -187,6 +187,7 @@ static int init_vmcs_bios(struct guest_info * core, struct vmx_data * vmx_state) vmx_state->pin_ctrls.ext_int_exit = 1; + /* We enable the preemption timer by default to measure accurate guest time */ if (avail_pin_ctrls.active_preempt_timer) { V3_Print("VMX Preemption Timer is available\n"); @@ -239,6 +240,11 @@ static int init_vmcs_bios(struct guest_info * core, struct vmx_data * vmx_state) // Setup Guests initial PAT field vmx_ret |= check_vmcs_write(VMCS_GUEST_PAT, 0x0007040600070406LL); + // Capture CR8 mods so that we can keep the apic_tpr correct + vmx_state->pri_proc_ctrls.cr8_ld_exit = 1; + vmx_state->pri_proc_ctrls.cr8_str_exit = 1; + + /* Setup paging */ if (core->shdw_pg_mode == SHADOW_PAGING) { PrintDebug("Creating initial shadow page table\n"); @@ -524,6 +530,7 @@ static int init_vmcs_bios(struct guest_info * core, struct vmx_data * vmx_state) #endif + if (v3_update_vmcs_ctrl_fields(core)) {