> -----Original Message----- > From: Honnappa Nagarahalli <honnappa.nagaraha...@arm.com> > Sent: Monday, June 29, 2020 12:38 PM > To: Phil Yang <phil.y...@arm.com>; dev@dpdk.org > Cc: mattias.ronnb...@ericsson.com; m...@smartsharesystems.com; > step...@networkplumber.org; tho...@monjalon.net; > bruce.richard...@intel.com; ferruh.yi...@intel.com; > hemant.agra...@nxp.com; jer...@marvell.com; ktray...@redhat.com; > konstantin.anan...@intel.com; maxime.coque...@redhat.com; > olivier.m...@6wind.com; harry.van.haa...@intel.com; > erik.g.carri...@intel.com; d...@linux.vnet.ibm.com; > david.march...@redhat.com; zhaoyan.c...@intel.com; Ola Liljedahl > <ola.liljed...@arm.com>; Ruifeng Wang <ruifeng.w...@arm.com>; Phil > Yang <phil.y...@arm.com>; nd <n...@arm.com>; Honnappa Nagarahalli > <honnappa.nagaraha...@arm.com>; nd <n...@arm.com> > Subject: RE: [PATCH v5 3/4] devtools: prevent use of rte atomic APIs in future > patches > > <snip> > > > Subject: [PATCH v5 3/4] devtools: prevent use of rte atomic APIs in future > > patches > > > > In order to deprecate the rte_atomic APIs, prevent the patches from using > > rte_atomic APIs in the converted modules and compilers __sync built-ins in > > all modules. > > > > The converted modules: > > lib/librte_distributor > > lib/librte_hash > > lib/librte_kni > > lib/librte_lpm > > lib/librte_rcu > > lib/librte_ring > > lib/librte_stack > > lib/librte_vhost > > lib/librte_timer > > lib/librte_ipsec > > drivers/event/octeontx > > drivers/event/octeontx2 > > drivers/event/opdl > > drivers/net/bnx2x > > drivers/net/hinic > > drivers/net/hns3 > > drivers/net/memif > > drivers/net/thunderx > > drivers/net/virtio > > examples/l2fwd-event > > > > On x86 the __atomic_thread_fence(__ATOMIC_SEQ_CST) is quite > expensive > > for SMP case. Flag the new code which use SEQ_CST memory ordering in > > __atomic_thread_fence API. > > > > Signed-off-by: Phil Yang <phil.y...@arm.com> > > Reviewed-by: Ruifeng Wang <ruifeng.w...@arm.com> > > Reviewed-by: Honnappa Nagarahalli <honnappa.nagaraha...@arm.com> > > --- > > devtools/checkpatches.sh | 32 ++++++++++++++++++++++++++++++++ > > 1 file changed, 32 insertions(+) > > > > diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh index > > 158087f..5983f05 100755 > > --- a/devtools/checkpatches.sh > > +++ b/devtools/checkpatches.sh > > @@ -69,6 +69,38 @@ check_forbidden_additions() { # <patch> > > -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \ > > "$1" || res=1 > > > > + # refrain from new additions of 16/32/64 bits rte_atomic_xxx() > > + # multiple folders and expressions are separated by spaces > > + awk -v FOLDERS="lib/librte_distributor lib/librte_hash lib/librte_kni > > + lib/librte_lpm lib/librte_rcu lib/librte_ring > > + lib/librte_stack lib/librte_vhost > > drivers/event/octeontx > > + drivers/event/octeontx2 drivers/event/opdl > > + drivers/net/bnx2x drivers/net/hinic drivers/net/hns3 > > + drivers/net/memif drivers/net/thunderx > > + drivers/net/virtio examples/l2fwd-event" \ > > + -v EXPRESSIONS="rte_atomic[0-9][0-9]_.*\\\(" \ > > + -v RET_ON_FAIL=1 \ > > + -v MESSAGE='Use of rte_atomicNN_xxx APIs not allowed, > use > > __atomic_xxx APIs' \ > > + -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \ > > + "$1" || res=1 > > + > > + # refrain from using compiler __sync built-ins > > + awk -v FOLDERS="lib drivers app examples" \ > > + -v EXPRESSIONS="__sync_.*\\\(" \ > > + -v RET_ON_FAIL=1 \ > > + -v MESSAGE='Use of __sync_xxx built-ins not allowed, use > > __atomic_xxx APIs' \ > > + -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \ > > + "$1" || res=1 > Can you please add rte_smp_*mb as well?
Sure. Will do. Thanks, Phil > > > + > > + # refrain from using compiler > > __atomic_thread_fence(__ATOMIC_SEQ_CST) > > + # It should be avoided on x86 for SMP case. > > + awk -v FOLDERS="lib drivers app examples" \ > > + -v > > EXPRESSIONS="__atomic_thread_fence\\\(__ATOMIC_SEQ_CST" \ > > + -v RET_ON_FAIL=1 \ > > + -v MESSAGE='Use of __atomic_thread_fence with SEQ_CST > > ordering is not allowed, use rte_atomic_thread_fence' \ > > + -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \ > > + "$1" || res=1 > > + > > # svg figures must be included with wildcard extension > > # because of png conversion for pdf docs > > awk -v FOLDERS='doc' \ > > -- > > 2.7.4