X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm.c;h=7b33c8c9d875da6d2e4a77de8db431bc43f0aaee;hb=e531d13b53ac8b32bca19131dd7a2824cb17eff9;hp=35eef9cbf952f9104d378dad5163b20176ee42b7;hpb=6a686aa0cf80126e77d4f0f3a0eb882a7d302ae0;p=palacios.git diff --git a/palacios/src/palacios/svm.c b/palacios/src/palacios/svm.c index 35eef9c..7b33c8c 100644 --- a/palacios/src/palacios/svm.c +++ b/palacios/src/palacios/svm.c @@ -44,6 +44,12 @@ #include +#ifndef CONFIG_DEBUG_SVM +#undef PrintDebug +#define PrintDebug(fmt, args...) +#endif + + uint32_t v3_last_exit; // This is a global pointer to the host's VMCB @@ -113,7 +119,7 @@ static void Init_VMCB_BIOS(vmcb_t * vmcb, struct guest_info * core) { ctrl_area->instrs.NMI = 1; - ctrl_area->instrs.SMI = 1; + ctrl_area->instrs.SMI = 0; // allow SMIs to run in guest ctrl_area->instrs.INIT = 1; ctrl_area->instrs.PAUSE = 1; ctrl_area->instrs.shutdown_evts = 1; @@ -476,7 +482,8 @@ int v3_svm_enter(struct guest_info * info) { // guest_ctrl->TSC_OFFSET = info->time_state.guest_tsc - info->time_state.cached_host_tsc; //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_Print("SVM Returned: Exit Code: %x, guest_rip=%lx\n", (uint32_t)(guest_ctrl->exit_code), (unsigned long)guest_state->rip); @@ -540,6 +547,7 @@ int v3_svm_enter(struct guest_info * info) { v3_yield_cond(info); + if (v3_handle_svm_exit(info, exit_code, exit_info1, exit_info2) != 0) { PrintError("Error in SVM exit handler\n"); return -1;