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 A1B9A2A5E for ; Mon, 4 Apr 2016 17:34:48 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP; 04 Apr 2016 08:34:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,441,1455004800"; d="scan'208";a="680590423" Received: from irsmsx104.ger.corp.intel.com ([163.33.3.159]) by FMSMGA003.fm.intel.com with ESMTP; 04 Apr 2016 08:34:46 -0700 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.35]) by IRSMSX104.ger.corp.intel.com ([169.254.5.87]) with mapi id 14.03.0248.002; Mon, 4 Apr 2016 16:34:45 +0100 From: "Ananyev, Konstantin" To: "Kulasek, TomaszX" CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH] examples/l3fwd: fix segfault with gcc 5.x Thread-Index: AQHRjoC/RWiN1YIBa0yX2h8fmQ5HWZ957/KA Date: Mon, 4 Apr 2016 15:34:44 +0000 Message-ID: <2601191342CEEE43887BDE71AB97725836B2DF1A@irsmsx105.ger.corp.intel.com> References: <1459781123-7556-1-git-send-email-tomaszx.kulasek@intel.com> In-Reply-To: <1459781123-7556-1-git-send-email-tomaszx.kulasek@intel.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZDkyMzA0YmQtYTkyNi00ODkxLTk2MGQtMGI4NmMxYWJhOWQ4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6ImMxaHZwMmJrejdzUUhUa0FVbHZ0N2habTFvT1E0cFR3dFZoNzNsYmo5NWM9In0= x-ctpclassification: CTP_IC x-originating-ip: [163.33.239.180] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH] examples/l3fwd: fix segfault with gcc 5.x 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: Mon, 04 Apr 2016 15:34:49 -0000 Hi Tomasz, > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Tomasz Kulasek > Sent: Monday, April 04, 2016 3:45 PM > To: dev@dpdk.org > Subject: [dpdk-dev] [PATCH] examples/l3fwd: fix segfault with gcc 5.x >=20 > It seems that with gcc >5.x and -O2/-O3 optimization breaks packet groupi= ng > algorithm. >=20 > When last packet pointer "lp" and "pnum->u64" buffer points the same > memory buffer, high optimization can cause unpredictable results. It seem= s > that assignment of precalculated group sizes may interfere with > initialization of new group size when lp points value inside current grou= p > and didn't should be changed. >=20 > With gcc >5.x and optimization we cannot be sure which assignment will be > done first, so the group size can be counted incorrectly. >=20 > This patch eliminates intersection of assignment of initial group size > (lp[0] =3D 1) and precalculated group sizes when gptbl[v].idx < 4. >=20 > Fixes: 94c54b4158d5 ("examples/l3fwd: rework exact-match") >=20 > Signed-off-by: Tomasz Kulasek > --- > examples/l3fwd/l3fwd_sse.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) >=20 > diff --git a/examples/l3fwd/l3fwd_sse.h b/examples/l3fwd/l3fwd_sse.h > index f9cf50a..1afa1f0 100644 > --- a/examples/l3fwd/l3fwd_sse.h > +++ b/examples/l3fwd/l3fwd_sse.h > @@ -283,9 +283,9 @@ port_groupx4(uint16_t pn[FWDSTEP + 1], uint16_t *lp, = __m128i dp1, __m128i dp2) >=20 > /* if dest port value has changed. */ > if (v !=3D GRPMSK) { > - lp =3D pnum->u16 + gptbl[v].idx; > - lp[0] =3D 1; > pnum->u64 =3D gptbl[v].pnum; > + pnum->u16[FWDSTEP] =3D 1; Hmm, but FWDSTEP and gptbl[v].idx are not always equal. Actually could you explain a bit more - what exactly is reordered by gcc 5.= x, and how to reproduce it? i.e what sequence of input packets will trigger an error?=20 Konstantin > + lp =3D pnum->u16 + gptbl[v].idx; > } >=20 > return lp; > -- > 1.7.9.5