X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_symspy.c;h=58f8aedd32a4f30d153d37e0370b0c560780ddfb;hb=4b7f19c51325601d7e7569e6101c7bfcdf984ef7;hp=1110dd7a02eeeec3ba851c84bab50741f3bfb526;hpb=1423d1b79cde22d1967efb0465a9ca88a2b8a199;p=palacios.git diff --git a/palacios/src/palacios/vmm_symspy.c b/palacios/src/palacios/vmm_symspy.c index 1110dd7..58f8aed 100644 --- a/palacios/src/palacios/vmm_symspy.c +++ b/palacios/src/palacios/vmm_symspy.c @@ -52,20 +52,20 @@ static int symspy_msr_write(struct guest_info * core, uint_t msr, struct v3_msr if (msr == SYMSPY_GLOBAL_MSR) { struct v3_symspy_global_state * global_state = &(core->vm_info->sym_vm_state.symspy_state); - PrintDebug("Symbiotic Glbal MSR write for page %p\n", (void *)(addr_t)src.value); + PrintDebug(core->vm_info, core, "Symbiotic Glbal MSR write for page %p\n", (void *)(addr_t)src.value); if (global_state->active == 1) { // unmap page - struct v3_shadow_region * old_reg = v3_get_shadow_region(core->vm_info, core->cpu_id, + struct v3_mem_region * old_reg = v3_get_mem_region(core->vm_info, core->vcpu_id, (addr_t)global_state->global_guest_pa); if (old_reg == NULL) { - PrintError("Could not find previously active symbiotic page (%p)\n", + PrintError(core->vm_info, core, "Could not find previously active symbiotic page (%p)\n", (void *)(addr_t)global_state->global_guest_pa); return -1; } - v3_delete_shadow_region(core->vm_info, old_reg); + v3_delete_mem_region(core->vm_info, old_reg); } global_state->global_guest_pa = src.value; @@ -80,20 +80,20 @@ static int symspy_msr_write(struct guest_info * core, uint_t msr, struct v3_msr } else if (msr == SYMSPY_LOCAL_MSR) { struct v3_symspy_local_state * local_state = &(core->sym_core_state.symspy_state); - PrintDebug("Symbiotic Local MSR write for page %p\n", (void *)(addr_t)src.value); + PrintDebug(core->vm_info, core, "Symbiotic Local MSR write for page %p\n", (void *)(addr_t)src.value); if (local_state->active == 1) { // unmap page - struct v3_shadow_region * old_reg = v3_get_shadow_region(core->vm_info, core->cpu_id, + struct v3_mem_region * old_reg = v3_get_mem_region(core->vm_info, core->vcpu_id, (addr_t)local_state->local_guest_pa); if (old_reg == NULL) { - PrintError("Could not find previously active symbiotic page (%p)\n", + PrintError(core->vm_info, core, "Could not find previously active symbiotic page (%p)\n", (void *)(addr_t)local_state->local_guest_pa); return -1; } - v3_delete_shadow_region(core->vm_info, old_reg); + v3_delete_mem_region(core->vm_info, old_reg); } local_state->local_guest_pa = src.value; @@ -102,11 +102,11 @@ static int symspy_msr_write(struct guest_info * core, uint_t msr, struct v3_msr local_state->active = 1; // map page - v3_add_shadow_mem(core->vm_info, core->cpu_id, (addr_t)local_state->local_guest_pa, + v3_add_shadow_mem(core->vm_info, core->vcpu_id, (addr_t)local_state->local_guest_pa, (addr_t)(local_state->local_guest_pa + PAGE_SIZE_4KB - 1), local_state->local_page_pa); } else { - PrintError("Invalid Symbiotic MSR write (0x%x)\n", msr); + PrintError(core->vm_info, core, "Invalid Symbiotic MSR write (0x%x)\n", msr); return -1; } @@ -118,6 +118,11 @@ static int symspy_msr_write(struct guest_info * core, uint_t msr, struct v3_msr int v3_init_symspy_vm(struct v3_vm_info * vm, struct v3_symspy_global_state * state) { state->global_page_pa = (addr_t)V3_AllocPages(1); + if (!state->global_page_pa) { + PrintError(vm, VCORE_NONE, "Cannot allocate page\n"); + return -1; + } + state->sym_page = (struct v3_symspy_global_page *)V3_VAddr((void *)state->global_page_pa); memset(state->sym_page, 0, PAGE_SIZE_4KB); @@ -133,10 +138,15 @@ int v3_init_symspy_vm(struct v3_vm_info * vm, struct v3_symspy_global_state * st int v3_init_symspy_core(struct guest_info * core, struct v3_symspy_local_state * state) { state->local_page_pa = (addr_t)V3_AllocPages(1); + + if (!state->local_page_pa) { + PrintError(core->vm_info, core, "Cannot allocate page\n"); + return -1; + } state->local_page = (struct v3_symspy_local_page *)V3_VAddr((void *)state->local_page_pa); memset(state->local_page, 0, PAGE_SIZE_4KB); - snprintf((uint8_t *)&(state->local_page->magic), 8, "V3V.%d", core->cpu_id); + snprintf((uint8_t *)&(state->local_page->magic), 8, "V3V.%d", core->vcpu_id); return 0; } @@ -150,17 +160,17 @@ int v3_sym_map_pci_passthrough(struct v3_vm_info * vm, uint_t bus, uint_t dev, u uint_t minor = dev_index % 8; if (bus > 3) { - PrintError("Invalid PCI bus %d\n", bus); + PrintError(vm, VCORE_NONE, "Invalid PCI bus %d\n", bus); return -1; } - PrintDebug("Setting passthrough pci map for index=%d\n", dev_index); + PrintDebug(vm, VCORE_NONE, "Setting passthrough pci map for index=%d\n", dev_index); global_state->sym_page->pci_pt_map[major] |= 0x1 << minor; - PrintDebug("pt_map entry=%x\n", global_state->sym_page->pci_pt_map[major]); + PrintDebug(vm, VCORE_NONE, "pt_map entry=%x\n", global_state->sym_page->pci_pt_map[major]); - PrintDebug("pt map vmm addr=%p\n", global_state->sym_page->pci_pt_map); + PrintDebug(vm, VCORE_NONE, "pt map vmm addr=%p\n", global_state->sym_page->pci_pt_map); return 0; } @@ -172,7 +182,7 @@ int v3_sym_unmap_pci_passthrough(struct v3_vm_info * vm, uint_t bus, uint_t dev, uint_t minor = dev_index % 8; if (bus > 3) { - PrintError("Invalid PCI bus %d\n", bus); + PrintError(vm, VCORE_NONE, "Invalid PCI bus %d\n", bus); return -1; }