exit_code = guest_ctrl->exit_code;
- if ((info->intr_state.irq_pending) && (guest_ctrl->guest_ctrl.V_IRQ = 0)) {
+ if ((info->intr_state.irq_pending == 1) && (guest_ctrl->guest_ctrl.V_IRQ == 0)) {
// Interrupt was taken in the guest
+ PrintDebug("Interrupt taken by guest\n");
v3_injecting_intr(info, info->intr_state.irq_vector, EXTERNAL_IRQ);
- info->intr_state.irq_pending = 0;
}
+ info->intr_state.irq_pending = 0;
// Disable printing io exits due to bochs debug messages
info->intr_state.excp_num = 0;
info->intr_state.excp_error_code = 0;
+ info->intr_state.irq_pending = 0;
+ info->intr_state.irq_vector = 0;
+
+
INIT_LIST_HEAD(&(info->intr_state.controller_list));
memset((uchar_t *)(info->intr_state.hooks), 0, sizeof(struct v3_irq_hook *) * 256);