From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54824) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XkOR2-0008Ci-GF for qemu-devel@nongnu.org; Fri, 31 Oct 2014 22:29:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XkOQw-0002xt-CY for qemu-devel@nongnu.org; Fri, 31 Oct 2014 22:29:00 -0400 Received: from szxga03-in.huawei.com ([119.145.14.66]:25111) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XkOQv-0002uX-Mp for qemu-devel@nongnu.org; Fri, 31 Oct 2014 22:28:54 -0400 Message-ID: <54544545.40301@huawei.com> Date: Sat, 1 Nov 2014 10:28:21 +0800 From: Linhaifeng MIME-Version: 1.0 References: <5418F2F3.4000207@huawei.com> <20141015212849.GA20193@vader> In-Reply-To: <20141015212849.GA20193@vader> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] vhost-user:why region[0] always mmap failed ? List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, jerry.lilijun@huawei.com 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