From: Kyle Hale Date: Wed, 22 Jun 2011 22:02:59 +0000 (-0500) Subject: added swintr support to update_irq_entry_state X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=commitdiff_plain;h=da9b43b18c14357412422fc404d3a9c573c867d5 added swintr support to update_irq_entry_state --- diff --git a/palacios/src/palacios/svm.c b/palacios/src/palacios/svm.c index d23c56d..824f7d2 100644 --- a/palacios/src/palacios/svm.c +++ b/palacios/src/palacios/svm.c @@ -424,8 +424,20 @@ static int update_irq_entry_state(struct guest_info * info) { guest_ctrl->EVENTINJ.type = SVM_INJECTION_NMI; break; case V3_SOFTWARE_INTR: - guest_ctrl->EVENTINJ.type = SVM_INJECTION_SOFT_INTR; - break; + guest_ctrl->EVENTINJ.type = SVM_INJECTION_SOFT_INTR; +#ifdef V3_CONFIG_EXT_SW_INTERRUPTS +#ifdef V3_CONFIG_DEBUG_EXT_SW_INTERRUPTS + PrintDebug("Caught an injected software interrupt\n"); + PrintDebug("\ttype: %d, vector: %d\n", SVM_INJECTION_SOFT_INTR, info->intr_core_state.swintr_vector); +#endif + guest_ctrl->EVENTINJ.vector = info->intr_core_state.swintr_vector; + guest_ctrl->EVENTINJ.valid = 1; + + /* reset swintr state */ + info->intr_core_state.swintr_posted = 0; + info->intr_core_state.swintr_vector = 0; +#endif + break; case V3_VIRTUAL_IRQ: guest_ctrl->EVENTINJ.type = SVM_INJECTION_IRQ; break;