X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_symspy.c;h=58f8aedd32a4f30d153d37e0370b0c560780ddfb;hb=d3d6d09894dba66f4e2361bb2f903139a2d83684;hp=7c17c01e87ff99f06fc4eb8cc92cd44208260e40;hpb=d0ebfed83ac079f95da8bf79e64ac77f31d551ac;p=palacios.git diff --git a/palacios/src/palacios/vmm_symspy.c b/palacios/src/palacios/vmm_symspy.c index 7c17c01..58f8aed 100644 --- a/palacios/src/palacios/vmm_symspy.c +++ b/palacios/src/palacios/vmm_symspy.c @@ -52,15 +52,15 @@ 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_mem_region * old_reg = v3_get_mem_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; } @@ -80,15 +80,15 @@ 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_mem_region * old_reg = v3_get_mem_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; } @@ -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; }