-----Original Message----- > Date: Fri, 3 Nov 2017 16:13:51 +0530 > From: Guduri Prathyusha <gprathyu...@caviumnetworks.com> > To: tomasz.kante...@intel.com > CC: jianbo....@arm.com, guduriprathyu...@gmail.com, > konstantin.anan...@intel.com, dev@dpdk.org, Guduri Prathyusha > <gprathyu...@caviumnetworks.com> > Subject: [dpdk-dev] [PATCH v2] examples/l3fwd: fix aliasing in port grouping > X-Mailer: git-send-email 2.14.1 > > With -f-strict-aliasing enabled by default from -O2, gcc > 5.x gives > undefined behavior in port_groupx4 in ARM. 'pn' and 'pnum' are > two different pointers pointing to same chunk of memory and > with -f-strict-aliasing the pointers are assumed to be pointing to > different memory and compiler reorders instructions that depend on > pnum and pn. This breaks port grouping algorithm. > > This patch eliminates the above problem by introducing a compiler > barrier between the instructions that depend on pnum, pn and lp. > > Fixes: 569b290cdb36 ("examples/l3fwd: add NEON implementation") > > Signed-off-by: Guduri Prathyusha <gprathyu...@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.ja...@caviumnetworks.com> > --- > examples/l3fwd/l3fwd_neon.h | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/examples/l3fwd/l3fwd_neon.h b/examples/l3fwd/l3fwd_neon.h > index 4bc161394..b319b5a92 100644 > --- a/examples/l3fwd/l3fwd_neon.h > +++ b/examples/l3fwd/l3fwd_neon.h > @@ -114,6 +114,7 @@ port_groupx4(uint16_t pn[FWDSTEP + 1], uint16_t *lp, > uint16x8_t dp1, > > /* update last port counter. */ > lp[0] += gptbl[v].lpv; > + rte_compiler_barrier(); > > /* if dest port value has changed. */ > if (v != GRPMSK) { > -- > 2.14.1 >