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


Reply via email to