X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_mem.c;h=6fb164b239ea89a8775631c35b9623d5299a625b;hb=3df1b43b2bf76d14a1ffe62e27dc3a6c252b27a7;hp=64c83c75d0c2cd85e41424378ce30f3c375a6b0c;hpb=559b7a07d8d5d783f0f2c2a64820ceaeda834a9e;p=palacios-OLD.git diff --git a/palacios/src/palacios/vmm_mem.c b/palacios/src/palacios/vmm_mem.c index 64c83c7..6fb164b 100644 --- a/palacios/src/palacios/vmm_mem.c +++ b/palacios/src/palacios/vmm_mem.c @@ -41,7 +41,8 @@ static int mem_offset_hypercall(struct guest_info * info, uint_t hcall_id, void static int unhandled_err(struct guest_info * core, addr_t guest_va, addr_t guest_pa, struct v3_mem_region * reg, pf_error_t access_info) { - PrintError("Unhandled memory access error\n"); + PrintError("Unhandled memory access error (gpa=%p, gva=%p, error_code=%d)\n", + (void *)guest_pa, (void *)guest_va, *(uint32_t *)&access_info); v3_print_mem_map(core->vm_info); @@ -414,13 +415,13 @@ void v3_delete_mem_region(struct v3_vm_info * vm, struct v3_mem_region * reg) { v3_rb_erase(&(reg->tree_node), &(vm->mem_map.mem_regions)); - V3_Free(reg); // If the guest isn't running then there shouldn't be anything to invalidate. // Page tables should __always__ be created on demand during execution // NOTE: This is a sanity check, and can be removed if that assumption changes if (vm->run_state != VM_RUNNING) { + V3_Free(reg); return; } @@ -457,6 +458,8 @@ void v3_delete_mem_region(struct v3_vm_info * vm, struct v3_mem_region * reg) { } } + V3_Free(reg); + // flush virtual page tables // 3 cases shadow, shadow passthrough, and nested