From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42177) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XU548-0007Ja-Ba for qemu-devel@nongnu.org; Tue, 16 Sep 2014 22:34:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XU542-0008Gu-6b for qemu-devel@nongnu.org; Tue, 16 Sep 2014 22:33:56 -0400 Received: from szxga03-in.huawei.com ([119.145.14.66]:46569) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XU541-0008Du-EQ for qemu-devel@nongnu.org; Tue, 16 Sep 2014 22:33:50 -0400 Message-ID: <5418F2F3.4000207@huawei.com> Date: Wed, 17 Sep 2014 10:33:23 +0800 From: Linhaifeng MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Subject: [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 Cc: jerry.lilijun@huawei.com 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++; } }