Re: [Qemu-devel] vhost-user:why region[0] always mmap failed ?
On 2014/10/16 5:28, Anshul Makkar wrote: Hi, Please can you share in what scenario this mapping fails. I am not seeing any such issue. Thanks Anshul Makkar VM info: memory:4G hugepage size:2M memory regions info: gpa = 0xC size = 3220439040 ua = 0x2acc offset = 786432 gpa = 0x1 size = 1073741824 ua = 0x2aab6ac0 offset = 18446650252267094016 gpa = 0x0 size = 655360 ua = 0x2ac0 offset = 0 log: mmap fd[61] size[3221225472] failed mmap fd[62] size[18446650253340835840] failed On Wed, Sep 17, 2014 at 10:33:23AM +0800, Linhaifeng wrote: Hi, There is two memory regions when receive VHOST_SET_MEM_TABLE message: region[0] gpa = 0x0 size = 655360 ua = 0x2ac0 offset = 0 region[1] gpa = 0xC size = 2146697216 ua = 0x2acc 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++; } } -- Regards, Haifeng
Re: [Qemu-devel] vhost-user:why region[0] always mmap failed ?
Hi, Please can you share in what scenario this mapping fails. I am not seeing any such issue. Thanks Anshul Makkar On Wed, Sep 17, 2014 at 10:33:23AM +0800, Linhaifeng wrote: Hi, There is two memory regions when receive VHOST_SET_MEM_TABLE message: region[0] gpa = 0x0 size = 655360 ua = 0x2ac0 offset = 0 region[1] gpa = 0xC size = 2146697216 ua = 0x2acc 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++; } }
[Qemu-devel] vhost-user:why region[0] always mmap failed ?
Hi, There is two memory regions when receive VHOST_SET_MEM_TABLE message: region[0] gpa = 0x0 size = 655360 ua = 0x2ac0 offset = 0 region[1] gpa = 0xC size = 2146697216 ua = 0x2acc 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++; } }