X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm_handler.c;h=cab4dc60e5e786d43c5f6f18fa139b772d5055eb;hp=9c20ae675228295e4da2598f15a482024900997e;hb=9e15dfbbd7e52361a577101d56adcde35f6bfdcd;hpb=28cfe68985ef4360c9bd7428a19c222b295e9d85 diff --git a/palacios/src/palacios/svm_handler.c b/palacios/src/palacios/svm_handler.c index 9c20ae6..cab4dc6 100644 --- a/palacios/src/palacios/svm_handler.c +++ b/palacios/src/palacios/svm_handler.c @@ -34,12 +34,18 @@ #include #include +#ifdef CONFIG_VNET +#include +#endif + +#ifdef CONFIG_LINUX_VIRTIO_NET + extern int v3_virtionic_pktprocess(struct guest_info * info); +#endif #ifdef CONFIG_TELEMETRY #include #endif - int v3_handle_svm_exit(struct guest_info * info, addr_t exit_code, addr_t exit_info1, addr_t exit_info2) { #ifdef CONFIG_TELEMETRY @@ -48,7 +54,6 @@ int v3_handle_svm_exit(struct guest_info * info, addr_t exit_code, addr_t exit_i } #endif - //PrintDebug("SVM Returned: Exit Code: %x\n",exit_code); switch (exit_code) { @@ -208,9 +213,10 @@ int v3_handle_svm_exit(struct guest_info * info, addr_t exit_code, addr_t exit_i info->rip += 3; if (v3_handle_hypercall(info) == -1) { + PrintError("Error handling Hypercall\n"); return -1; } - + break; case VMEXIT_INTR: // handled by interrupt dispatch earlier @@ -280,6 +286,15 @@ int v3_handle_svm_exit(struct guest_info * info, addr_t exit_code, addr_t exit_i } // END OF SWITCH (EXIT_CODE) + +#ifdef CONFIG_VNET + v3_vnet_pkt_process(info); +#endif + +#ifdef CONFIG_LINUX_VIRTIO_NET + v3_virtionic_pktprocess(info); +#endif + #ifdef CONFIG_TELEMETRY if (info->enable_telemetry) { v3_telemetry_end_exit(info, exit_code); @@ -290,6 +305,7 @@ int v3_handle_svm_exit(struct guest_info * info, addr_t exit_code, addr_t exit_i if (exit_code == VMEXIT_INTR) { //PrintDebug("INTR ret IP = %x\n", guest_state->rip); } + return 0; }