From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 2023B2FDD for ; Fri, 18 Mar 2016 13:39:38 +0100 (CET) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP; 18 Mar 2016 05:39:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,355,1455004800"; d="scan'208";a="68961706" Received: from yliu-dev.sh.intel.com (HELO yliu-dev) ([10.239.66.49]) by fmsmga004.fm.intel.com with ESMTP; 18 Mar 2016 05:39:37 -0700 Date: Fri, 18 Mar 2016 20:41:02 +0800 From: Yuanhan Liu To: Ilya Maximets Cc: dev@dpdk.org, Huawei Xie , Dyasly Sergey Message-ID: <20160318124102.GV979@yliu-dev.sh.intel.com> References: <1456314438-4021-2-git-send-email-i.maximets@samsung.com> <1458303833-14815-1-git-send-email-i.maximets@samsung.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1458303833-14815-1-git-send-email-i.maximets@samsung.com> User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [dpdk-dev] [PATCH v4] vhost: use SMP barriers instead of compiler ones. 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, 18 Mar 2016 12:39:39 -0000 On Fri, Mar 18, 2016 at 03:23:53PM +0300, Ilya Maximets wrote: > Since commit 4c02e453cc62 ("eal: introduce SMP memory barriers") virtio > uses architecture dependent SMP barriers. vHost should use them too. > > Fixes: 4c02e453cc62 ("eal: introduce SMP memory barriers") > > Signed-off-by: Ilya Maximets > --- > lib/librte_vhost/vhost_rxtx.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/lib/librte_vhost/vhost_rxtx.c b/lib/librte_vhost/vhost_rxtx.c > index b4da665..859c669 100644 > --- a/lib/librte_vhost/vhost_rxtx.c > +++ b/lib/librte_vhost/vhost_rxtx.c > @@ -315,7 +315,7 @@ virtio_dev_rx(struct virtio_net *dev, uint16_t queue_id, > rte_prefetch0(&vq->desc[desc_indexes[i+1]]); > } > > - rte_compiler_barrier(); > + rte_smp_wmb(); > > /* Wait until it's our turn to add our buffer to the used ring. */ > while (unlikely(vq->last_used_idx != res_start_idx)) > @@ -565,7 +565,7 @@ virtio_dev_merge_rx(struct virtio_net *dev, uint16_t queue_id, > > nr_used = copy_mbuf_to_desc_mergeable(dev, vq, start, end, > pkts[pkt_idx]); > - rte_compiler_barrier(); > + rte_smp_wmb(); > > /* > * Wait until it's our turn to add our buffer > @@ -923,7 +923,8 @@ rte_vhost_dequeue_burst(struct virtio_net *dev, uint16_t queue_id, > sizeof(vq->used->ring[used_idx])); > } > > - rte_compiler_barrier(); > + rte_smp_wmb(); > + rte_smp_rmb(); rte_smp_mb? --yliu