X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm.c;h=a1fad8d7b2947dfe2a580656ba9d9ed965513e70;hb=2fb33705f951901f43a9fed966e96074fc693609;hp=f66d90e3eea5fd8e59afaddd5f4352150b5991d0;hpb=b91af04aa542bc3837f88c576c26f5c6ed946197;p=palacios.git diff --git a/palacios/src/palacios/svm.c b/palacios/src/palacios/svm.c index f66d90e..a1fad8d 100644 --- a/palacios/src/palacios/svm.c +++ b/palacios/src/palacios/svm.c @@ -87,7 +87,6 @@ static void Init_VMCB_BIOS(vmcb_t * vmcb, struct guest_info * core) { ctrl_area->svm_instrs.STGI = 1; ctrl_area->svm_instrs.CLGI = 1; ctrl_area->svm_instrs.SKINIT = 1; - ctrl_area->svm_instrs.RDTSCP = 1; ctrl_area->svm_instrs.ICEBP = 1; ctrl_area->svm_instrs.WBINVD = 1; ctrl_area->svm_instrs.MONITOR = 1; @@ -99,8 +98,8 @@ static void Init_VMCB_BIOS(vmcb_t * vmcb, struct guest_info * core) { ctrl_area->instrs.HLT = 1; #ifdef CONFIG_TIME_VIRTUALIZE_TSC - ctrl_area->instrs.rdtsc = 1; - ctrl_area->svm_instrs.rdtscp = 1; + ctrl_area->instrs.RDTSC = 1; + ctrl_area->svm_instrs.RDTSCP = 1; #endif // guest_state->cr0 = 0x00000001; // PE @@ -587,6 +586,12 @@ int v3_start_svm_guest(struct guest_info * info) { v3_start_time(info); while (1) { + + if (info->vm_info->run_state == VM_STOPPED) { + info->core_run_state = CORE_STOPPED; + break; + } + if (v3_svm_enter(info) == -1) { vmcb_ctrl_t * guest_ctrl = GET_VMCB_CTRL_AREA((vmcb_t*)(info->vmm_data)); addr_t host_addr; @@ -623,6 +628,13 @@ int v3_start_svm_guest(struct guest_info * info) { break; } + + + if (info->vm_info->run_state == VM_STOPPED) { + info->core_run_state = CORE_STOPPED; + break; + } + /* if ((info->num_exits % 5000) == 0) {