X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm_handler.c;h=1854c537e70bd53432216388536477421a79a632;hb=92082ed86bcfd503e28dbedb24c79c3dc797dc87;hp=5749eac30758dff54ee45deb122b24e37e53c10f;hpb=94f67717b6461df514dc225ed84f03b44c44061b;p=palacios.git diff --git a/palacios/src/palacios/svm_handler.c b/palacios/src/palacios/svm_handler.c index 5749eac..1854c53 100644 --- a/palacios/src/palacios/svm_handler.c +++ b/palacios/src/palacios/svm_handler.c @@ -43,7 +43,9 @@ #include #endif - +#ifdef V3_CONFIG_EXT_SW_INTERRUPTS +#include +#endif int v3_handle_svm_exit(struct guest_info * info, addr_t exit_code, addr_t exit_info1, addr_t exit_info2) { @@ -217,7 +219,10 @@ int v3_handle_svm_exit(struct guest_info * info, addr_t exit_code, addr_t exit_i return -1; } - break; + break; + case VMEXIT_NMI: + // handled by interrupt dispatcher + break; case VMEXIT_INTR: // handled by interrupt dispatch earlier break; @@ -272,6 +277,17 @@ int v3_handle_svm_exit(struct guest_info * info, addr_t exit_code, addr_t exit_i // Force exit on other cores break; +#ifdef V3_CONFIG_EXT_SW_INTERRUPTS + case VMEXIT_SWINT: +#ifdef V3_CONFIG_DEBUG_EXT_SW_INTERRUPTS + PrintDebug("Intercepted a software interrupt\n"); +#endif + if (v3_handle_swintr(info) == -1) { + PrintError("Error handling software interrupt\n"); + return -1; + } + break; +#endif /* Exits Following this line are NOT HANDLED */