Hi, There is two memory regions when receive VHOST_SET_MEM_TABLE message: region[0] gpa = 0x0 size = 655360 ua = 0x2aaaaac00000 offset = 0 region[1] gpa = 0xC0000 size = 2146697216 ua = 0x2aaaaacc0000 offset = 786432
region[0] always mmap failed.The user code is : for (idx = 0; idx < msg->msg.memory.nregions; idx++) { if (msg->fds[idx] > 0) { size_t size; uint64_t *guest_mem; Region *region = &vhost_server->memory.regions[i]; region->guest_phys_addr = msg->msg.memory.regions[idx].guest_phys_addr; region->memory_size = msg->msg.memory.regions[idx].memory_size; region->userspace_addr = msg->msg.memory.regions[idx].userspace_addr; region->mmap_offset = msg->msg.memory.regions[idx].mmap_offset; assert(idx < msg->fd_num); assert(msg->fds[idx] > 0); size = region->memory_size + region->mmap_offset; guest_mem = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, msg->fds[idx], 0); if (MAP_FAILED == guest_mem) { continue; } i++; guest_mem += (region->mmap_offset / sizeof(*guest_mem)); region->mmap_addr = (uint64_t)guest_mem; vhost_server->memory.nregions++; } }