X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fgeekos%2Fsvm_handler.c;h=6840ade82655d734f6e8a04f05c31b383f5b3823;hb=ebf600fd1dc3b43e8100be168452c6e03b8a2dda;hp=ea2a7b874feeec6420aaf4cc1eb2d80344549be5;hpb=271ad3fd89672d441db3c5ffa673ee649e4ce532;p=palacios.git diff --git a/palacios/src/geekos/svm_handler.c b/palacios/src/geekos/svm_handler.c index ea2a7b8..6840ade 100644 --- a/palacios/src/geekos/svm_handler.c +++ b/palacios/src/geekos/svm_handler.c @@ -27,6 +27,13 @@ int handle_svm_exit(guest_info_t * info) { PrintDebug("io_info2 high = 0x%.8x\n", *(uint_t *)(((uchar_t *)&(guest_ctrl->exit_info2)) + 4)); if (exit_code == VMEXIT_IOIO) { handle_svm_io(info); + } else if (( (exit_code == VMEXIT_CR3_READ) || + (exit_code == VMEXIT_CR3_WRITE) || + (exit_code == VMEXIT_INVLPG) || + (exit_code == VMEXIT_INVLPGA) || + (exit_code == VMEXIT_EXCP14)) && + (info->page_mode == SHADOW_PAGING)) { + handle_shadow_paging(info); } @@ -57,3 +64,15 @@ int handle_svm_io(guest_info_t * info) { return 0; } + + +int handle_shadow_paging(guest_info_t * info) { + vmcb_ctrl_t * guest_ctrl = GET_VMCB_CTRL_AREA((vmcb_t*)(info->vmm_data)); + // vmcb_saved_state_t * guest_state = GET_VMCB_SAVE_STATE_AREA((vmcb_t*)(info->vmm_data)); + + if (guest_ctrl->exit_code == VMEXIT_CR3_READ) { + + } + + return 0; +}