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;
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
PrintDebug("SVM core %u: I am starting at CS=0x%x (base=0x%p, limit=0x%x), RIP=0x%p\n",
info->cpu_id, info->segments.cs.selector, (void *)(info->segments.cs.base),
- info->segments.cs.limit,(void *)(info->rip));
+ info->segments.cs.limit, (void *)(info->rip));
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;
break;
}
+
+
+ if (info->vm_info->run_state == VM_STOPPED) {
+ info->core_run_state = CORE_STOPPED;
+ break;
+ }
+
/*
if ((info->num_exits % 5000) == 0) {