X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmx_handler.c;h=ee1824facb375b8da64fa4dac94baa3fedcf8ddb;hp=af76455dcddec729a5169a5370eab7a938897abd;hb=c06413341bf1dca02f22c0502fa5c2d1c2c11eab;hpb=ee5d4a193aacdda000a10119e957bac4141b5452 diff --git a/palacios/src/palacios/vmx_handler.c b/palacios/src/palacios/vmx_handler.c index af76455..ee1824f 100644 --- a/palacios/src/palacios/vmx_handler.c +++ b/palacios/src/palacios/vmx_handler.c @@ -23,6 +23,8 @@ #include #include #include +#include + #include #include #include @@ -178,19 +180,13 @@ int v3_handle_vmx_exit(struct v3_gprs * gprs, struct guest_info * info, struct v } break; - case VMEXIT_CPUID: { - int instr_len; - uint32_t target = info->vm_regs.rax; - - v3_cpuid(target, (addr_t *)&(info->vm_regs.rax), (addr_t *)&(info->vm_regs.rbx), - (addr_t *)&(info->vm_regs.rcx), (addr_t *)&(info->vm_regs.rdx)); - - check_vmcs_read(VMCS_EXIT_INSTR_LEN, &instr_len); - - info->rip += instr_len; + case VMEXIT_CPUID: + if (v3_handle_cpuid(info) == -1) { + PrintError("Error Handling CPUID instruction\n"); + return -1; + } break; - } case VMEXIT_RDMSR: if (v3_handle_msr_read(info) == -1) { PrintError("Error handling MSR Read\n");