X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm.c;h=955849e3d87b1f5b2e3b9c008b6d6000143df5cb;hp=1a9f1b8eb5edae238182deaffaae0fb99c055d7c;hb=bf091be03d4a623fa1a9b3151698a4564a8339ba;hpb=d964570646e2b882848b3291d59e5cf60f568533 diff --git a/palacios/src/palacios/svm.c b/palacios/src/palacios/svm.c index 1a9f1b8..955849e 100644 --- a/palacios/src/palacios/svm.c +++ b/palacios/src/palacios/svm.c @@ -170,12 +170,19 @@ static void Init_VMCB_BIOS(vmcb_t * vmcb, struct guest_info vm_info) { ctrl_area->instrs.INVLPG = 1; ctrl_area->instrs.INVLPGA = 1; + /* JRL: This is a performance killer, and a simplistic solution */ + /* We need to fix this */ + ctrl_area->TLB_CONTROL = 1; + + + guest_state->g_pat = 0x7040600070406ULL; guest_state->cr0 |= 0x80000000; + } else if (vm_info.shdw_pg_mode == NESTED_PAGING) { // Flush the TLB on entries/exits - //ctrl_area->TLB_CONTROL = 1; + // Enable Nested Paging //ctrl_area->NP_ENABLE = 1; @@ -250,7 +257,7 @@ static int start_svm_guest(struct guest_info *info) { CLGI(); - // PrintDebug("SVM Entry...\n"); + PrintDebug("SVM Entry to rip=%x...\n", info->rip); rdtscll(info->time_state.cached_host_tsc); guest_ctrl->TSC_OFFSET = info->time_state.guest_tsc - info->time_state.cached_host_tsc;