From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46118) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YL9YM-0006ar-An for qemu-devel@nongnu.org; Tue, 10 Feb 2015 07:04:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YL9YL-00063V-Ag for qemu-devel@nongnu.org; Tue, 10 Feb 2015 07:04:30 -0500 Received: from mx1.redhat.com ([209.132.183.28]:45190) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YL9YK-00063N-RA for qemu-devel@nongnu.org; Tue, 10 Feb 2015 07:04:29 -0500 Date: Tue, 10 Feb 2015 13:04:22 +0100 From: "Michael S. Tsirkin" Message-ID: <20150210120422.GA5339@redhat.com> References: <1423547293-8448-1-git-send-email-haifeng.lin@huawei.com> <20150210084632.GA8397@redhat.com> <54D9DCF8.2000106@huawei.com> <20150210104126.GE9505@redhat.com> <54D9F294.2090000@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <54D9F294.2090000@huawei.com> Subject: Re: [Qemu-devel] [PATCH v1 1/2] vhost-user: support SET_MEM_TABLE waite the result of mmap List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Linhaifeng Cc: arei.gonglei@huawei.com, qemu-devel@nongnu.org On Tue, Feb 10, 2015 at 07:59:16PM +0800, Linhaifeng wrote: > > > On 2015/2/10 18:41, Michael S. Tsirkin wrote: > > On Tue, Feb 10, 2015 at 06:27:04PM +0800, Linhaifeng wrote: > >> > >> > >> On 2015/2/10 16:46, Michael S. Tsirkin wrote: > >>> On Tue, Feb 10, 2015 at 01:48:12PM +0800, linhaifeng wrote: > >>>> From: Linhaifeng > >>>> > >>>> Slave should reply to master and set u64 to 0 if > >>>> mmap all regions success otherwise set u64 to 1. > >>>> > >>>> Signed-off-by: Linhaifeng > >>> > >>> How does this work with existig slaves though? > >>> > >> > >> Slaves should work like this: > >> > >> int set_mem_table(...) > >> { > >> .... > >> for (idx = 0, i = 0; idx < memory.nregions; idx++) { > >> .... > >> mem = mmap(..); > >> if (MAP_FAILED == mem) { > >> msg->msg.u64 = 1; > >> msg->msg.size = MEMB_SIZE(VhostUserMsg, u64); > >> return 1; > >> } > >> } > >> > >> .... > >> > >> msg->msg.u64 = 0; > >> msg->msg.size = MEMB_SIZE(VhostUserMsg, u64); > >> return 1; > >> } > >> > >> If slaves not reply QEMU will always wait. > > > > Are you sure existing slaves reply? > > No.May be the existing slaves need add reply in their codes. So that's not good. We need a way to negotiate the capability, we can't just deadlock with legacy slaves. > > > >>>> --- > >>>> docs/specs/vhost-user.txt | 1 + > >>>> 1 file changed, 1 insertion(+) > >>>> > >>>> diff --git a/docs/specs/vhost-user.txt b/docs/specs/vhost-user.txt > >>>> index 650bb18..c96bf6b 100644 > >>>> --- a/docs/specs/vhost-user.txt > >>>> +++ b/docs/specs/vhost-user.txt > >>>> @@ -171,6 +171,7 @@ Message types > >>>> Id: 5 > >>>> Equivalent ioctl: VHOST_SET_MEM_TABLE > >>>> Master payload: memory regions description > >>>> + Slave payload: u64 (0:success >0:failed) > >>>> > >>>> Sets the memory map regions on the slave so it can translate the vring > >>>> addresses. In the ancillary data there is an array of file descriptors > >>>> -- > >>>> 1.7.12.4 > >>>> > >>> > >>> > >> > >> -- > >> Regards, > >> Haifeng > > > > . > > > > -- > Regards, > Haifeng