X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm_handler.c;h=d0adffc9884281fcf540d45978b7251a79520c3a;hb=a7bd09077efcd826376f9c49ab97f9f9a1fbbefe;hp=5849055c26dbf103932bf84de1395bc66223d055;hpb=164bd99da7605dfb5f8a56338e54c924b2a583a6;p=palacios.releases.git diff --git a/palacios/src/palacios/svm_handler.c b/palacios/src/palacios/svm_handler.c index 5849055..d0adffc 100644 --- a/palacios/src/palacios/svm_handler.c +++ b/palacios/src/palacios/svm_handler.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -165,6 +166,25 @@ int v3_handle_svm_exit(struct guest_info * info, addr_t exit_code, addr_t exit_i return -1; } break; + + case SVM_EXIT_CR8_WRITE: +#ifdef V3_CONFIG_DEBUG_CTRL_REGS + PrintDebug("CR8 Read\n"); +#endif + if (v3_handle_cr8_read(info) == -1) { + return -1; + } + break; + + case SVM_EXIT_CR8_READ: +#ifdef V3_CONFIG_DEBUG_CTRL_REGS + PrintDebug("CR8 Read\n"); +#endif + if (v3_handle_cr8_read(info) == -1) { + return -1; + } + break; + case SVM_EXIT_EXCP14: { addr_t fault_addr = exit_info2; pf_error_t * error_code = (pf_error_t *)&(exit_info1); @@ -238,6 +258,26 @@ int v3_handle_svm_exit(struct guest_info * info, addr_t exit_code, addr_t exit_i return -1; } break; + + case SVM_EXIT_MONITOR: +#ifdef V3_CONFIG_DEBUG_MWAIT + PrintDebug("Guest issuing MONITOR\n"); +#endif + if (v3_handle_monitor(info) == -1) { + return -1; + } + break; + + case SVM_EXIT_MWAIT: + case SVM_EXIT_MWAIT_CONDITIONAL: +#ifdef V3_CONFIG_DEBUG_MWAIT + PrintDebug("Guest issuing MWAIT\n"); +#endif + if (v3_handle_mwait(info) == -1) { + return -1; + } + break; + case SVM_EXIT_PAUSE: // PrintDebug("Guest paused\n"); if (v3_handle_svm_pause(info) == -1) { @@ -266,9 +306,10 @@ int v3_handle_svm_exit(struct guest_info * info, addr_t exit_code, addr_t exit_i PrintDebug("RDTSCP\n"); #endif if (v3_handle_rdtscp(info) == -1) { - PrintError("Error Handling RDTSCP instruction\n"); + PrintError("Error handling RDTSCP instruction\n"); return -1; } + break; case SVM_EXIT_SHUTDOWN: PrintDebug("Guest-initiated shutdown\n");