From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 823FD2C57 for ; Fri, 25 Mar 2016 03:47:26 +0100 (CET) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP; 24 Mar 2016 19:47:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,388,1455004800"; d="scan'208";a="941149964" Received: from yliu-dev.sh.intel.com (HELO yliu-dev) ([10.239.66.49]) by orsmga002.jf.intel.com with ESMTP; 24 Mar 2016 19:47:24 -0700 Date: Fri, 25 Mar 2016 10:49:59 +0800 From: Yuanhan Liu To: "shesha Sreenivasamurthy (shesha)" Cc: "dev@dpdk.org" , =?iso-8859-1?Q?Marc-Andr=E9?= Lureau Message-ID: <20160325024959.GZ979@yliu-dev.sh.intel.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [dpdk-dev] DPDK's vhost-user logging capability X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Mar 2016 02:47:26 -0000 On Wed, Mar 23, 2016 at 03:34:09PM +0000, shesha Sreenivasamurthy (shesha) wrote: > Hi All, > > I was going over vhost-user migration capability in DPDK in lieu of a Cisco's > multi-q DPDK vhost-user application. I see that log_base address is implemented > as per virtio_net device. However, desc, addr and used is per vhost_virtqueue. > Additionally, QEMU sends one VHOST_USER_SET_LOG_BASE per queue-pair (QEMU - hw/ > virtio/vhost.c::vhost_dev_set_log). > > Does it mean we need to log dirty pages of all rings to same location ? Hi, Yes, and QEMU allocates only one block of memory (see vhost_log_alloc()) after all. > If that > is the case then why does QEMU sends separate VHOST_USER_SET_LOG_BASE per queue > pair ? That's kind of like a design. One queue pair is associated with one vhost_dev struct in QEMU, hence, all those requests will go through vhost_dev structs (aka, all qeueu pairs), including those that one time request is needed only, such as VHOST_USER_SET_MEM_TABLE. Thus, we introduced vhost_user_one_time_request() to avoid such case. So, good question, and we may need add it to the "one time request" group, Marc? And FYI, for queue-pair (or vring) request, there should be an index in the payload, to point to the right vring. If not, it normally means a global request, that _may_ need be sent once only. --yliu