Re: [Qemu-devel] vhost-user:why region[0] always mmap failed ?

2014-10-31 Thread Linhaifeng


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 ?

2014-10-15 Thread Anshul Makkar
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 ?

2014-09-16 Thread Linhaifeng
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++;
}
}