struct v3_mem_map * map = &(vm->mem_map);
uint32_t block_index = gpa / v3_mem_block_size;
- if (gpa > (map->num_base_regions * v3_mem_block_size) ||
+ if ((gpa >= (map->num_base_regions * v3_mem_block_size)) ||
(block_index >= map->num_base_regions)) {
PrintError(vm, VCORE_NONE, "Guest Address Exceeds Base Memory Size (ga=0x%p), (limit=0x%p)\n",
(void *)gpa, (void *)vm->mem_size);
region->host_addr = (addr_t)V3_AllocPagesExtended(block_pages,
PAGE_SIZE_4KB,
node_id,
- will_use_shadow_paging(vm) ?
- V3_ALLOC_PAGES_CONSTRAINT_4GB : 0 );
+ 0); // no constraints
if ((void *)region->host_addr == NULL) {
PrintError(vm, VCORE_NONE, "Could not allocate guest memory\n");
struct v3_mem_region * start_region = v3_get_mem_region(vm, core_id, start_gpa);
if (start_region == NULL) {
- PrintError(vm, VCORE_NONE, "Invalid memory region\n");
+ PrintError(vm, VCORE_NONE, "No overlapping region for core=%d, start_gpa=%p\n", core_id, (void*)start_gpa);
+ v3_print_mem_map(vm);
return NULL;
}