X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmx_handler.c;h=7b738ca6441674c62a4e78f007809ec443e21a55;hp=1da8a586cae9e3d05f9f947ef42ee9c42033f3c9;hb=9e15dfbbd7e52361a577101d56adcde35f6bfdcd;hpb=5c5dfe422e57ac9833dd3ed3a7d0f5c39557b86c diff --git a/palacios/src/palacios/vmx_handler.c b/palacios/src/palacios/vmx_handler.c index 1da8a58..7b738ca 100644 --- a/palacios/src/palacios/vmx_handler.c +++ b/palacios/src/palacios/vmx_handler.c @@ -32,12 +32,17 @@ #include #include -#ifdef CONFIG_TELEMETRY -#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 /* At this point the GPRs are already copied into the guest_info state */ int v3_handle_vmx_exit(struct guest_info * info, struct vmx_exit_info * exit_info) { @@ -57,12 +62,20 @@ int v3_handle_vmx_exit(struct guest_info * info, struct vmx_exit_info * exit_inf } #endif +#ifdef VNET_PROFILE + uint64_t exit_start_time, vnet_start_time; + uint64_t exit_end_time, vnet_end_time; + rdtscll(exit_start_time); + num_exit ++; + if (last_exit_time > 0) + guest_time += exit_start_time - last_exit_time; +#endif + switch (exit_info->exit_reason) { case VMEXIT_INFO_EXCEPTION_OR_NMI: { pf_error_t error_code = *(pf_error_t *)&(exit_info->int_err); - - // JRL: Change "0x0e" to a macro value + // JRL: Change "0x0e" to a macro value if ((uint8_t)exit_info->int_info == 0x0e) { #ifdef CONFIG_DEBUG_SHADOW_PAGING PrintDebug("Page Fault at %p error_code=%x\n", (void *)exit_info->exit_qual, *(uint32_t *)&error_code); @@ -222,12 +235,22 @@ int v3_handle_vmx_exit(struct guest_info * info, struct vmx_exit_info * exit_inf return -1; } + +#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_info->exit_reason); } #endif + return 0; }