X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_msr.c;h=b96018739f2842b69569df881d0fed38a0c1a1bf;hb=36973b53a5876a555eb59be0b0fb5f1f49686696;hp=4163145c795ab34de7b1970dd3fa9c2ddfdf25ea;hpb=639f3d3bd42dd2218bcd994e423f3a5569ed7051;p=palacios.releases.git diff --git a/palacios/src/palacios/vmm_msr.c b/palacios/src/palacios/vmm_msr.c index 4163145..b960187 100644 --- a/palacios/src/palacios/vmm_msr.c +++ b/palacios/src/palacios/vmm_msr.c @@ -64,9 +64,13 @@ int v3_handle_msr_write(struct guest_info * info) { msr_val.lo = info->vm_regs.rax; msr_val.hi = info->vm_regs.rdx; - if (hook->write(info, msr_num, msr_val, hook->priv_data) == -1) { - PrintError("Error in MSR hook Write\n"); - return -1; + if (hook->write) { + if (hook->write(info, msr_num, msr_val, hook->priv_data) == -1) { + PrintError("Error in MSR hook Write\n"); + return -1; + } + } else { + PrintError("No write hook exists for msr 0x%x\n",msr_num); } } @@ -105,7 +109,9 @@ int v3_handle_msr_read(struct guest_info * info) { int v3_msr_unhandled_read(struct guest_info * core, uint32_t msr, struct v3_msr * dst, void * priv_data) { V3_Print("Palacios: Unhandled MSR Read (MSR=0x%x) - returning zero\n", msr); - dst->lo=dst->hi=0; + + dst->value = 0; + // should produce GPF for unsupported msr return 0; }