From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C6F0B41EC0; Fri, 17 Mar 2023 21:41:12 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 66D0E42FD8; Fri, 17 Mar 2023 21:41:12 +0100 (CET) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 01A9042F98 for ; Fri, 17 Mar 2023 21:41:10 +0100 (CET) Received: by linux.microsoft.com (Postfix, from userid 1086) id 462C22057678; Fri, 17 Mar 2023 13:41:10 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 462C22057678 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1679085670; bh=NSKzt8peBPq4QnLahNf5LymPj4B7mdzw2tQbn1MBUwU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=DadmAMklMVYPtSZvZtfCesia2JQfBN0OZ6tLIqjQwYdcZWfG+VCSRmg/YaqL80z4S eR97l0L6zl1YHedhB5nikmoY6o1m+6Qd2utQJgVvLlqiN7poGcqGbQUItq1FzuiVQL 1r+baMLrgAeqkC+T0IjhIzHkqWD4sB6IMTVIBELE= Date: Fri, 17 Mar 2023 13:41:10 -0700 From: Tyler Retzlaff To: dev@dpdk.org Cc: Honnappa.Nagarahalli@arm.com, Ruifeng.Wang@arm.com, thomas@monjalon.net Subject: Re: [PATCH 4/7] net/ice: replace rte atomics with GCC builtin atomics Message-ID: <20230317204110.GB30723@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> References: <1679084388-19267-1-git-send-email-roretzla@linux.microsoft.com> <1679084388-19267-5-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1679084388-19267-5-git-send-email-roretzla@linux.microsoft.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On Fri, Mar 17, 2023 at 01:19:45PM -0700, Tyler Retzlaff wrote: > Replace the use of rte_atomic.h types and functions, instead use GCC > supplied C++11 memory model builtins. > > Signed-off-by: Tyler Retzlaff > --- > drivers/net/ice/ice_dcf.c | 1 - > drivers/net/ice/ice_dcf_ethdev.c | 1 - > drivers/net/ice/ice_ethdev.c | 10 ++++++---- > 3 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/ice/ice_dcf.c b/drivers/net/ice/ice_dcf.c > index 1c3d22a..80d2cbd 100644 > --- a/drivers/net/ice/ice_dcf.c > +++ b/drivers/net/ice/ice_dcf.c > @@ -14,7 +14,6 @@ > #include > > #include > -#include > #include > #include > #include > diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c > index dcbf2af..13ff245 100644 > --- a/drivers/net/ice/ice_dcf_ethdev.c > +++ b/drivers/net/ice/ice_dcf_ethdev.c > @@ -11,7 +11,6 @@ > #include > #include > #include > -#include > #include > #include > #include > diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c > index 9a88cf9..bdf4569 100644 > --- a/drivers/net/ice/ice_ethdev.c > +++ b/drivers/net/ice/ice_ethdev.c > @@ -3927,8 +3927,9 @@ static int ice_init_rss(struct ice_pf *pf) > struct rte_eth_link *dst = link; > struct rte_eth_link *src = &dev->data->dev_link; > > - if (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst, > - *(uint64_t *)src) == 0) > + if (!__atomic_compare_exchange_n((uint64_t *)dst, > + (uint64_t *)dst, *(uint64_t *)src, 0, > + __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) > return -1; > > return 0; > @@ -3941,8 +3942,9 @@ static int ice_init_rss(struct ice_pf *pf) > struct rte_eth_link *dst = &dev->data->dev_link; > struct rte_eth_link *src = link; > > - if (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst, > - *(uint64_t *)src) == 0) > + if (!__atomic_compare_exchange_n((uint64_t *)dst, > + (uint64_t *)dst, *(uint64_t *)src, 0, > + __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) > return -1; > *(uint64_t *)dst for the second parameter look like a bug to me, a non-atomic load will be generated. probably this code should be corrected by performing __atomic_load_n(dst, ...) to a stack variable and then performing the cmpset/compare_exchange.