From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 6C8EAA0C41;
	Wed, 15 Sep 2021 10:43:12 +0200 (CEST)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id AF213410EE;
	Wed, 15 Sep 2021 10:43:11 +0200 (CEST)
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05on2066.outbound.protection.outlook.com [40.107.20.66])
 by mails.dpdk.org (Postfix) with ESMTP id 2ABDC410EE;
 Wed, 15 Sep 2021 10:43:10 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=d4C0Y2Bz/EAEnf3937vdOwZ3D0Vwx8fpZbTxeWa5kfg=;
 b=DPJsGFL0xlPx+JHzhqZwwjtnbsepDK+zZDgQco9AfyWxlcJLtzIT4+Og5xTqKXxAoM+DDoLpGcV8/KDJP1x2Mj9KBW2oNllF/WDR5/TQmDza3QxtXJnZHv/Zo+JwjqU2NRhpQ3Stvm10F0Fub+L63ASMjudIdWL7q2TWe5sHstw=
Received: from AM6PR01CA0059.eurprd01.prod.exchangelabs.com
 (2603:10a6:20b:e0::36) by HE1PR0801MB1626.eurprd08.prod.outlook.com
 (2603:10a6:3:86::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Wed, 15 Sep
 2021 08:43:07 +0000
Received: from AM5EUR03FT007.eop-EUR03.prod.protection.outlook.com
 (2603:10a6:20b:e0:cafe::3b) by AM6PR01CA0059.outlook.office365.com
 (2603:10a6:20b:e0::36) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14 via Frontend
 Transport; Wed, 15 Sep 2021 08:43:07 +0000
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified)
 header.d=armh.onmicrosoft.com;dpdk.org; dmarc=pass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM5EUR03FT007.mail.protection.outlook.com (10.152.16.145) with
 Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.4500.14 via Frontend Transport; Wed, 15 Sep 2021 08:43:07 +0000
Received: ("Tessian outbound 8e26f7114b75:v103");
 Wed, 15 Sep 2021 08:43:07 +0000
X-CR-MTA-TID: 64aa7808
Received: from a242266ccfe9.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 B2843C4B-7D23-4B92-8A3D-3003B7CBB743.1; 
 Wed, 15 Sep 2021 08:42:57 +0000
Received: from EUR04-HE1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id a242266ccfe9.1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Wed, 15 Sep 2021 08:42:57 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ZvLI6uNM0pJ3jOMvsyVBpwZg6P5Twavth7IwyxSqcQmJSNVJdwue9K1m45QVb2w69t9WF04zo9IJxN4W0Gkh6dCxs6UzeqIeYV4R3Sr93tCOdXc95WA15F1IH2FERxN9fMXzIQi9xMd088bS8onKsn9Xs/RuhbzMKskd+5gbTucrek5dfoWDj16DhwuYyEwr7PdMDDJepeVOFPr/3FpEdiPNBwXJhMUS2YOVNg8MKB+0C6PkPpcKqvuwaW/7EtBrl98XbKBBXcLrw6hlIcIsLuK+prhD2Mt9ARLJoZ6jAmriaGrNQOvKb80WFZedsDQpzVfaQWMZUJYoQAilGQbh9g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; 
 bh=d4C0Y2Bz/EAEnf3937vdOwZ3D0Vwx8fpZbTxeWa5kfg=;
 b=POnmXAuWoAnXp/T8oBRyyPLlPjQHxUwURm0yCm5ZJI7SFRVQyDfsDJbIyqVRTCRuDUfJRcsR0cYFi+Dw7ZQk8/p2QFGq/NBZiUmVjPQgoxaoBuOg5TQF6QHBTDky2UOIQ/NDaV6dvsNLB6lXE3Aq8mQLQuLYdNYP8zNdryQr1VqJDAD+DXfPIIl7ooiiDb8tY4kD1HKA1nNpE3qw5hmb5JuCa4m9QQGap3E0McrMPKun7cZs0RWgJwMe49bObqCm4JtLq9CFX0OETUgXYM+SXvdDz7xWRSKImejaNUReyCoMGwpEBtURvkIrCIUHgQx9mHgubPnvYcZ2iYqOc1swAg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=d4C0Y2Bz/EAEnf3937vdOwZ3D0Vwx8fpZbTxeWa5kfg=;
 b=DPJsGFL0xlPx+JHzhqZwwjtnbsepDK+zZDgQco9AfyWxlcJLtzIT4+Og5xTqKXxAoM+DDoLpGcV8/KDJP1x2Mj9KBW2oNllF/WDR5/TQmDza3QxtXJnZHv/Zo+JwjqU2NRhpQ3Stvm10F0Fub+L63ASMjudIdWL7q2TWe5sHstw=
Received: from AM5PR0802MB2465.eurprd08.prod.outlook.com
 (2603:10a6:203:9f::22) by AS8PR08MB6917.eurprd08.prod.outlook.com
 (2603:10a6:20b:392::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Wed, 15 Sep
 2021 08:42:54 +0000
Received: from AM5PR0802MB2465.eurprd08.prod.outlook.com
 ([fe80::21c6:1dd:1ff3:2ac8]) by AM5PR0802MB2465.eurprd08.prod.outlook.com
 ([fe80::21c6:1dd:1ff3:2ac8%10]) with mapi id 15.20.4500.018; Wed, 15 Sep 2021
 08:42:54 +0000
From: Ruifeng Wang <Ruifeng.Wang@arm.com>
To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>, "dev@dpdk.org"
 <dev@dpdk.org>
CC: "beilei.xing@intel.com" <beilei.xing@intel.com>, "qi.z.zhang@intel.com"
 <qi.z.zhang@intel.com>, "bruce.richardson@intel.com"
 <bruce.richardson@intel.com>, "jerinj@marvell.com" <jerinj@marvell.com>,
 "hemant.agrawal@nxp.com" <hemant.agrawal@nxp.com>, "drc@linux.vnet.ibm.com"
 <drc@linux.vnet.ibm.com>, "stable@dpdk.org" <stable@dpdk.org>, nd
 <nd@arm.com>, nd <nd@arm.com>, nd <nd@arm.com>
Thread-Topic: [PATCH 1/2] net/i40e: fix risk in Rx descriptor read in NEON
 vector path
Thread-Index: AQHXos/SUOOBQylCzUKU/lj4WK9W0Kuj6F+AgADseQA=
Date: Wed, 15 Sep 2021 08:42:53 +0000
Message-ID: <AM5PR0802MB246547ACB89D159841F9C7CD9EDB9@AM5PR0802MB2465.eurprd08.prod.outlook.com>
References: <20210906033201.1789796-1-ruifeng.wang@arm.com>
 <20210906033201.1789796-2-ruifeng.wang@arm.com>
 <DBAPR08MB581411CA53E62C81A83B419D98DA9@DBAPR08MB5814.eurprd08.prod.outlook.com>
In-Reply-To: <DBAPR08MB581411CA53E62C81A83B419D98DA9@DBAPR08MB5814.eurprd08.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: AD7DCCC6A5D42C4B9F3A7D851A188DC7.0
x-checkrecipientchecked: true
Authentication-Results-Original: arm.com; dkim=none (message not signed)
 header.d=none;arm.com; dmarc=none action=none header.from=arm.com;
x-ms-publictraffictype: Email
X-MS-Office365-Filtering-Correlation-Id: 668b759e-5cd9-4585-9dd8-08d97824d71d
x-ms-traffictypediagnostic: AS8PR08MB6917:|HE1PR0801MB1626:
x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr
x-ms-exchange-transport-forked: True
X-Microsoft-Antispam-PRVS: <HE1PR0801MB16269E4C491EDAF18904BCB59EDB9@HE1PR0801MB1626.eurprd08.prod.outlook.com>
x-checkrecipientrouted: true
nodisclaimer: true
x-ms-oob-tlc-oobclassifiers: OLM:590;OLM:590;
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original: RXC5Ww9YCYQh9fMVispltb+2736ZguhLXcW1LpMZvi6nfvsWAWiYnrRTYNmYhko4CHsPsYIO9cy9m8WOR64Y9myJ6lbR5+jBTeRBIYLA6Ux1LvvxTqoQZka3Ce1B50rP4Otn964y9xsX8bALw/YBGfW+T3oQKUds+2H1wlp1WwoDiIh4RPczEYybIdtH6AXGl6+w6obILh8UeQox5CXEsBPlpyS9hmsrE8KUYcoOrEBE7GSrzf7a8Ba0evENGFSYMZ0dbEC2NMA900MQNKx+MQFtkFMJDqEGvgV/70K1oSj8RiNy8Z4HTnYlNzcxTDF+nE8wuPEQ7x5rn34CoKF7jQ9hzvYFS47ZlmwaCfA8uLXQvkkfu1y9EqiL+nZFUQYYcGzRd3V7DgHRdBcf2izAqgoZuz9yqxytH1+HqWWjXxshtSK/9UWA41CojWxKBelrmDSlAiPjAEpAZw5IOYODW8+FgWNP4cdFH7oUA+RbAzz+3VIIgBy+qUF22/3hg+8P/k/SNcXiNDsjpC94Yd2h70VlD5hVjU88qPJFgzO8WY0YjgLxVdJt/4A7ZYPBZrTyTFA1qB1Y4EZwdDNP8EfD4TfecBb1zcOdMDBTQ6G/xuu3qrJrWPK+Gcqz7RKQ5e9lqent9/XcEeJnbMdb81Ff4DXCtba70OBgyMbqZVUNytzrtDEjNWqLpGEW+7MnrpB+7xdHk4WJ2SNPEOyyEdpMBg==
X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en;
 SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM5PR0802MB2465.eurprd08.prod.outlook.com;
 PTR:; CAT:NONE;
 SFS:(4636009)(366004)(76116006)(5660300002)(66446008)(71200400001)(83380400001)(86362001)(6506007)(55016002)(4326008)(9686003)(8676002)(33656002)(110136005)(7696005)(54906003)(66946007)(66476007)(38070700005)(66556008)(316002)(64756008)(38100700002)(52536014)(53546011)(508600001)(26005)(2906002)(122000001)(186003)(8936002);
 DIR:OUT; SFP:1101; 
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6917
Original-Authentication-Results: arm.com; dkim=none (message not signed)
 header.d=none;arm.com; dmarc=none action=none header.from=arm.com;
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT007.eop-EUR03.prod.protection.outlook.com
X-MS-Office365-Filtering-Correlation-Id-Prvs: 7b35324d-fd1a-4e38-64ff-08d97824cf7f
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: pVewJdOx9YO0+wTjAyzkF7yMfsYqBFP9SGeHBVXZCtYpbycOh7a9cwRNu+wMddVy9ybLkDSpA33Y29h8Sxk4UzRteVcfhnC4MloaTfUIscN5M4xSPupfTIZvLV2r4Nf5FIlyhzqBY9lkiPaGJP6WXCX73qiBfETN3Tj3iF/f1nAjBhMZ1+cRx8PNwoVQ7j131Q0pofc3s1ZSbh1N3+AVhzh2yDZR5Tn2iq9/x0yNUdDNunM5RV8nAWI650lNNXqxrP4abxplX4VtXvA9XjPVjCdtyTKBI4aFaTXw0NgtvQAnAsDa5hA3Qyjp06DIxFkSXj+ZkvIJJV770PdUJxk2k0KVvjExivtXYNpzS2WwygfAjeU+k2GiUixRV9luL9qt0lwi/02Txak1FabB9M4Jk6dKmoQMCDqnAzmdcwMfq0XEMKt0Lmorbs5mBX5++wcc+NE26xqPXjWGy3LO/wLGlpEl/CiijtSFWqFmBa/huKPudGxCqUabYSLvxk5Que/3cR6bEu1O/Ep824jY+xA8TQz9gjPP98hzEyE7V4DVm0efF7Ha7/SkyBC6If8Hjvak7/kP/cria3NtNXPwB6uTiczJiQwPoq+nKdf46H0iqdXVhiB2B2NdD84OEz5BovMoqXIEIrfJkCvaN1ft3lYqN88oev3D8en14RAIhmbpHv3USfyBOmH5Quq1ix40ZCKOSCt9GCsPWLdB11ZoPiw5eA==
X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:;
 IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com;
 PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE;
 SFS:(4636009)(376002)(396003)(346002)(136003)(39860400002)(36840700001)(46966006)(478600001)(4326008)(316002)(110136005)(82310400003)(52536014)(5660300002)(450100002)(83380400001)(9686003)(54906003)(55016002)(82740400003)(33656002)(2906002)(356005)(86362001)(8936002)(70206006)(70586007)(7696005)(47076005)(186003)(53546011)(36860700001)(6506007)(26005)(336012)(81166007)(8676002);
 DIR:OUT; SFP:1101; 
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2021 08:43:07.2094 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 668b759e-5cd9-4585-9dd8-08d97824d71d
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];
 Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT007.eop-EUR03.prod.protection.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1626
Subject: Re: [dpdk-dev] [PATCH 1/2] net/i40e: fix risk in Rx descriptor read
 in NEON vector path
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

> -----Original Message-----
> From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Sent: Wednesday, September 15, 2021 2:33 AM
> To: Ruifeng Wang <Ruifeng.Wang@arm.com>; dev@dpdk.org
> Cc: beilei.xing@intel.com; qi.z.zhang@intel.com;
> bruce.richardson@intel.com; jerinj@marvell.com;
> hemant.agrawal@nxp.com; drc@linux.vnet.ibm.com; stable@dpdk.org; nd
> <nd@arm.com>; Ruifeng Wang <Ruifeng.Wang@arm.com>; Honnappa
> Nagarahalli <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com>
> Subject: RE: [PATCH 1/2] net/i40e: fix risk in Rx descriptor read in NEON
> vector path
>=20
> <snip>
> Similar comments that I have to patch 2/2
>=20
> >
> > Rx descriptor is 16B/32B in size and consists of multiple words.
> > The word that includes DD field should be read first. Read result with
> > DD bit set indicates the rest part in a descriptor is valid.
> Suggest rewording as follows:
> Rx descriptor is 16B/32B in size. If the DD bit is set, it indicates that=
 the rest of
> the descriptor words have valid values. Hence, the word containing DD bit
> must be read first before reading the rest of the descriptor words.
>=20
> >
> > In NEON vector PMD, vector load loads two contiguous 8B of descriptor
> > data into vector register. Given vector load ensures no 16B atomicity,
> > read of the word that includes DD field could be reordered after read
> > of other words. In this case, some words could be invalid data.
> "some words could contain invalid data"
>=20
> >
> > Read barrier is added after read of qword1 that includes DD field.
> > And qword0 is reloaded to update vector register. This ensures what
> > fetched is correct descriptor data.
> "This ensures that the fetched data is correct".
>=20
> Suggest capturing the performance impact, so it is clearly documented.

Added performance impact to commit message in v2.
> >
> > Fixes: ae0eb310f253 ("net/i40e: implement vector PMD for ARM")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
> With the above comments,
> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
>=20

Thanks for your review.
Comments are addressed in v2.
> > ---
> >  drivers/net/i40e/i40e_rxtx_vec_neon.c | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/drivers/net/i40e/i40e_rxtx_vec_neon.c
> > b/drivers/net/i40e/i40e_rxtx_vec_neon.c
> > index b2683fda60..71191c7cc8 100644
> > --- a/drivers/net/i40e/i40e_rxtx_vec_neon.c
> > +++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c
> > @@ -286,6 +286,14 @@ _recv_raw_pkts_vec(struct i40e_rx_queue
> > *__rte_restrict rxq,
> >  		descs[1] =3D  vld1q_u64((uint64_t *)(rxdp + 1));
> >  		descs[0] =3D  vld1q_u64((uint64_t *)(rxdp));
> >
> > +		/* Use acquire fence to order loads of descriptor qwords */
> > +		rte_atomic_thread_fence(__ATOMIC_ACQUIRE);
> > +		/* A.2 reload qword0 to make it ordered after qword1 load
> */
> > +		descs[3] =3D vld1q_lane_u64((uint64_t *)(rxdp + 3), descs[3],
> > 0);
> > +		descs[2] =3D vld1q_lane_u64((uint64_t *)(rxdp + 2), descs[2],
> > 0);
> > +		descs[1] =3D vld1q_lane_u64((uint64_t *)(rxdp + 1), descs[1],
> > 0);
> > +		descs[0] =3D vld1q_lane_u64((uint64_t *)(rxdp), descs[0], 0);
> > +
> >  		/* B.1 load 4 mbuf point */
> >  		mbp1 =3D vld1q_u64((uint64_t *)&sw_ring[pos]);
> >  		mbp2 =3D vld1q_u64((uint64_t *)&sw_ring[pos + 2]);
> > --
> > 2.25.1