X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm_handler.c;h=55b75fbecf56be1f0a023610e7ff43ab78ff7d0b;hb=09149700a57ced21de742451c9302320ca4eebc2;hp=8ca0e5080fe7a159e5159950bb76baf3021c0004;hpb=1cc11b811dd67e1023f9a4584853f516b7a61a41;p=palacios.git diff --git a/palacios/src/palacios/svm_handler.c b/palacios/src/palacios/svm_handler.c index 8ca0e50..55b75fb 100644 --- a/palacios/src/palacios/svm_handler.c +++ b/palacios/src/palacios/svm_handler.c @@ -27,6 +27,7 @@ int handle_svm_exit(struct guest_info * info) { exit_code = guest_ctrl->exit_code; + PrintDebug("SVM Returned: Exit Code: %x\n",exit_code); // PrintDebugVMCB((vmcb_t*)(info->vmm_data)); @@ -66,6 +67,14 @@ int handle_svm_exit(struct guest_info * info) { if (handle_cr0_write(info) == -1) { return -1; } + } else if (exit_code == VMEXIT_CR0_READ) { + PrintDebug("CR0 Read\n"); + + if (handle_cr0_read(info) == -1) { + return -1; + } + + /* } else if (( (exit_code == VMEXIT_CR3_READ) || (exit_code == VMEXIT_CR3_WRITE) || @@ -126,8 +135,11 @@ int handle_svm_exit(struct guest_info * info) { // Update the low level state if (intr_pending(&(info->intr_state))) { + guest_ctrl->EVENTINJ.vector = get_intr_number(&(info->intr_state)); guest_ctrl->EVENTINJ.valid = 1; + + PrintDebug("Injecting Interrupt %d\n", guest_ctrl->EVENTINJ.vector); switch (get_intr_type(&(info->intr_state))) { case EXTERNAL_IRQ: