qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] vhost-user:why region[0] always mmap failed ?
@ 2014-09-17  2:33 Linhaifeng
  2014-10-15 21:28 ` Anshul Makkar
  0 siblings, 1 reply; 3+ messages in thread
From: Linhaifeng @ 2014-09-17  2:33 UTC (permalink / raw)
  To: qemu-devel; +Cc: jerry.lilijun

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++;
        }
    }

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] vhost-user:why region[0] always mmap failed ?
  2014-09-17  2:33 [Qemu-devel] vhost-user:why region[0] always mmap failed ? Linhaifeng
@ 2014-10-15 21:28 ` Anshul Makkar
  2014-11-01  2:28   ` Linhaifeng
  0 siblings, 1 reply; 3+ messages in thread
From: Anshul Makkar @ 2014-10-15 21:28 UTC (permalink / raw)
  To: Linhaifeng; +Cc: qemu-devel, jerry.lilijun

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 = 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++;
>         }
>     }
> 
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] vhost-user:why region[0] always mmap failed ?
  2014-10-15 21:28 ` Anshul Makkar
@ 2014-11-01  2:28   ` Linhaifeng
  0 siblings, 0 replies; 3+ messages in thread
From: Linhaifeng @ 2014-11-01  2:28 UTC (permalink / raw)
  To: qemu-devel, jerry.lilijun



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 = 0xC0000
        size = 3220439040
        ua = 0x2aaaaacc0000
        offset = 786432

        gpa = 0x100000000
        size = 1073741824
        ua = 0x2aab6ac00000
        offset = 18446650252267094016

        gpa = 0x0
        size = 655360
        ua = 0x2aaaaac00000
        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 = 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++;
>>         }
>>     }
>>
>>
> 
> 

-- 
Regards,
Haifeng

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-11-01  2:29 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-17  2:33 [Qemu-devel] vhost-user:why region[0] always mmap failed ? Linhaifeng
2014-10-15 21:28 ` Anshul Makkar
2014-11-01  2:28   ` Linhaifeng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).