From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id D76561B76E for ; Thu, 10 Jan 2019 15:56:44 +0100 (CET) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E5C28284B6; Thu, 10 Jan 2019 14:56:43 +0000 (UTC) Received: from redhat.com (ovpn-123-72.rdu2.redhat.com [10.10.123.72]) by smtp.corp.redhat.com (Postfix) with ESMTP id DF310451B; Thu, 10 Jan 2019 14:56:41 +0000 (UTC) Date: Thu, 10 Jan 2019 09:56:36 -0500 From: "Michael S. Tsirkin" To: Ilya Maximets Cc: Maxime Coquelin , "Gavin Hu (Arm Technology China)" , "dev@dpdk.org" , Xiao Wang , Tiwei Bie , Zhihong Wang , "jfreimann@redhat.com" , Jason Wang , "xiaolong.ye@intel.com" , "alejandro.lucero@netronome.com" , Honnappa Nagarahalli , "jerinj@marvell.com" , nd Message-ID: <20190110094353-mutt-send-email-mst@kernel.org> References: <20181226163712.31596-1-i.maximets@samsung.com> <20190109145015.3010-1-i.maximets@samsung.com> <20190109145015.3010-3-i.maximets@samsung.com> <3fc0c642-6b4e-5d3f-4e95-f0e3f343e4e1@redhat.com> <8fdbcaef-05ba-230f-a2eb-21a4014ad699@samsung.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <8fdbcaef-05ba-230f-a2eb-21a4014ad699@samsung.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 10 Jan 2019 14:56:44 +0000 (UTC) Subject: Re: [dpdk-dev] [PATCH v3 2/3] net/virtio: update memory ordering comment for vq notify X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jan 2019 14:56:45 -0000 On Thu, Jan 10, 2019 at 12:55:19PM +0300, Ilya Maximets wrote: > On 10.01.2019 12:18, Maxime Coquelin wrote: > > Hi Gavin, > > > > On 1/10/19 9:19 AM, Gavin Hu (Arm Technology China) wrote: > >> > >> > >>> -----Original Message----- > >>> From: dev On Behalf Of Ilya Maximets > >>> Sent: Wednesday, January 9, 2019 10:50 PM > >>> To: dev@dpdk.org; Maxime Coquelin ; > >>> Michael S . Tsirkin ; Xiao Wang > >>> > >>> Cc: Tiwei Bie ; Zhihong Wang > >>> ; jfreimann@redhat.com; Jason Wang > >>> ; xiaolong.ye@intel.com; > >>> alejandro.lucero@netronome.com; Ilya Maximets > >>> > >>> Subject: [dpdk-dev] [PATCH v3 2/3] net/virtio: update memory ordering > >>> comment for vq notify > >>> > >>> We're not using io ports in case of modern device even on IA. > >>> Also, this comment useless for other architectures. > >> > >> Agree, it should be architecture neutral. > >> > >>> > >>> Signed-off-by: Ilya Maximets > >>> --- > >>>   drivers/net/virtio/virtqueue.h | 9 ++++----- > >>>   1 file changed, 4 insertions(+), 5 deletions(-) > >>> > >>> diff --git a/drivers/net/virtio/virtqueue.h b/drivers/net/virtio/virtqueue.h > >>> index dffa03669..53aeac238 100644 > >>> --- a/drivers/net/virtio/virtqueue.h > >>> +++ b/drivers/net/virtio/virtqueue.h > >>> @@ -437,14 +437,13 @@ virtqueue_kick_prepare_packed(struct virtqueue > >>> *vq) > >>>       return flags != RING_EVENT_FLAGS_DISABLE; > >>>   } > >>> > >>> +/* > >>> + * virtqueue_kick_prepare*() or the virtio_wmb() should be called > >>> + * before this function to be sure that all the data is visible to vhost. > >>> + */ > >> > >> C11 _atomic APIs are preferred for new code, other than wmb or rmb,  could you work on that? > > > > Thanks for the review. > > -rc2 deadline is today, so I may apply this series as is if no reply > > from Ilya today. If a change is agreed, it could be made on top for > > -rc3. > > IMHO, If we'll decide to move to C11 atomics, we'll need to rewrite all > the significant memory accesses in virtio driver at once. We can't do > this partially. This will require significant amount of work to understand > how to do that and will require a lot of testing. So, it's definitely not > for current release. Also, there are possible performance concerns about > such solution. > > But I have even more significant concern: C11 atomics are designed for > inter-thread synchronization on multi-core systems. But in case of vDPA we > have real hardware and I'm not sure if we can use C11 atomics for > cross-domain synchronizations. Do you know if some of the memory ordering > types in C11 provide outer domain sync on ARMv8, for example ? I would add to that - compiler support might not work well in all versions which can be used to build dpdk. E.g. this article https://lwn.net/Articles/691128/ says that "there will be some seriously suboptimal code production before gcc-7.1". HTH > > > > Regards, > > Maxime > >>>   static inline void > >>>   virtqueue_notify(struct virtqueue *vq) > >>>   { > >>> -    /* > >>> -     * Ensure updated avail->idx is visible to host. > >>> -     * For virtio on IA, the notificaiton is through io port operation > >>> -     * which is a serialization instruction itself. > >>> -     */ > >>>       VTPCI_OPS(vq->hw)->notify_queue(vq->hw, vq); > >>>   } > >>> > >>> -- > >>> 2.17.1 > >> > > > >