// Disable printing io exits due to bochs debug messages
//if (!((exit_code == VMEXIT_IOIO) && ((ushort_t)(guest_ctrl->exit_info1 >> 16) == 0x402))) {
- PrintDebug("SVM Returned: Exit Code: %x \t\t(tsc=%ul)\n",exit_code, (uint_t)info->time_state.guest_tsc);
+ PrintDebug("SVM Returned: Exit Code: 0x%x \t\t(tsc=%ul)\n",exit_code, (uint_t)info->time_state.guest_tsc);
// }
// PrintDebugVMCB((vmcb_t*)(info->vmm_data));
// handle_svm_intr(info);
+ } else if (exit_code == VMEXIT_SMI) {
+
+ // handle_svm_smi(info); // ignored for now
+
} else if (exit_code == VMEXIT_HLT) {
PrintDebug("Guest halted\n");
if (handle_svm_halt(info) == -1) {
if (info->intr_state.excp_error_code) {
guest_ctrl->EVENTINJ.error_code = info->intr_state.excp_error_code;
guest_ctrl->EVENTINJ.ev = 1;
+ PrintDebug("Injecting error code %x\n", guest_ctrl->EVENTINJ.error_code);
}
guest_ctrl->EVENTINJ.vector = excp;
+ guest_ctrl->EVENTINJ.valid = 1;
PrintDebug("Injecting Interrupt %d (EIP=%x)\n", guest_ctrl->EVENTINJ.vector, info->rip);
injecting_intr(info, excp, EXCEPTION);
break;