X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm_handler.c;h=15e320f4dcfcca5ec1999d8186919b4461fcc338;hb=40be15894eccfbb51e42bcfe550aaf8d9841bc3a;hp=23efbc6c4fa5fc6b3424541a4464464587c3879c;hpb=75e6876db8e9c8114606e229c2818ca574245182;p=palacios.git diff --git a/palacios/src/palacios/svm_handler.c b/palacios/src/palacios/svm_handler.c index 23efbc6..15e320f 100644 --- a/palacios/src/palacios/svm_handler.c +++ b/palacios/src/palacios/svm_handler.c @@ -24,21 +24,13 @@ int handle_svm_exit(struct guest_info * info) { info->vm_regs.rsp = guest_state->rsp; - PrintDebug("SVM Returned:(VMCB=%x)\n", info->vmm_data); - PrintDebug("RIP: %x\n", guest_state->rip); + exit_code = guest_ctrl->exit_code; // PrintDebugVMCB((vmcb_t*)(info->vmm_data)); - PrintDebug("SVM Returned: Exit Code: %x\n",exit_code); - - PrintDebug("io_info1 low = 0x%.8x\n", *(uint_t*)&(guest_ctrl->exit_info1)); - PrintDebug("io_info1 high = 0x%.8x\n", *(uint_t *)(((uchar_t *)&(guest_ctrl->exit_info1)) + 4)); - - PrintDebug("io_info2 low = 0x%.8x\n", *(uint_t*)&(guest_ctrl->exit_info2)); - PrintDebug("io_info2 high = 0x%.8x\n", *(uint_t *)(((uchar_t *)&(guest_ctrl->exit_info2)) + 4)); if (exit_code == VMEXIT_IOIO) { @@ -77,6 +69,21 @@ int handle_svm_exit(struct guest_info * info) { char buf[15]; addr_t host_addr; + + PrintDebug("SVM Returned:(VMCB=%x)\n", info->vmm_data); + PrintDebug("RIP: %x\n", guest_state->rip); + PrintDebug("RIP Linear: %x\n", rip_addr); + + PrintDebug("SVM Returned: Exit Code: %x\n",exit_code); + + PrintDebug("io_info1 low = 0x%.8x\n", *(uint_t*)&(guest_ctrl->exit_info1)); + PrintDebug("io_info1 high = 0x%.8x\n", *(uint_t *)(((uchar_t *)&(guest_ctrl->exit_info1)) + 4)); + + PrintDebug("io_info2 low = 0x%.8x\n", *(uint_t*)&(guest_ctrl->exit_info2)); + PrintDebug("io_info2 high = 0x%.8x\n", *(uint_t *)(((uchar_t *)&(guest_ctrl->exit_info2)) + 4)); + + + if (guest_pa_to_host_pa(info, guest_state->rip, &host_addr) == -1) { PrintDebug("Could not translate guest_state->rip to host address\n"); return -1; @@ -92,6 +99,8 @@ int handle_svm_exit(struct guest_info * info) { PrintTraceMemDump(buf, 15); + while(1); + }