start_cycles = v3_get_host_time(&info->time_state);
- while (!v3_intr_pending(info) && (info->vm_info->run_state == VM_RUNNING)) {
+ while (!v3_intr_pending(info) &&
+ !v3_excp_pending(info) &&
+ (info->vm_info->run_state == VM_RUNNING)) {
uint64_t t, cycles;
t = v3_get_host_time(&info->time_state);
// participate in any barrier that might be raised
v3_wait_at_barrier(info);
- // stop if the VM is being halted
- if (info->core_run_state == CORE_STOPPED) {
+ // stop if the VM is being halted or core is being reset
+ if (info->core_run_state == CORE_STOPPED || info->core_run_state == CORE_RESETTING) {
break;
}
/* V3_Print(info->vm_info, info, "palacios: done with halt\n"); */
info->rip += 1;
+
}
return 0;