From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id B0A57A0471
	for <public@inbox.dpdk.org>; Sat, 20 Jul 2019 08:59:21 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id B5792325F;
	Sat, 20 Jul 2019 08:59:20 +0200 (CEST)
Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com
 [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id A9253322C
 for <dev@dpdk.org>; Sat, 20 Jul 2019 08:59:18 +0200 (CEST)
Received: from pps.filterd (m0045849.ppops.net [127.0.0.1])
 by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id
 x6K6vQRQ004428; Fri, 19 Jul 2019 23:59:13 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;
 h=from : to : cc :
 subject : date : message-id : references : in-reply-to : content-type :
 content-transfer-encoding : mime-version; s=pfpt0818;
 bh=zkeQsjGJMWBVUJqpzvkujc1zKnVY3Ths8D4qM1VvVis=;
 b=yvZstSJYH+CvVu1OP+0fdERbha1VXWoGBFNOrVh6qTOWBVTu3KVix/mZlS/93o5b4pi2
 CkKU0LwEu7sZfoTvSoSiJVt3nZEdz8o90XZMjf5/dv2MsyI7ilmeb2KnqZ5sKwz17igo
 AI2ZjAzEqhiq8045yeGHPohgV/a6zPPlstVNpECNFiax8ffTwC69kk+lH0rB0JRBEWrN
 k/HQFadfDElME7CwPhRPV6Ko0vN1YaCNgSAY7rZDmqbd2EzzUO/yDHhqfuEqZ8WKQ7Mp
 pUXVQjZ02+pjUbIQgTX3jJqDs2eQVFGlXaLFhV4sTijDuZ+phhS0d2FsskMLFU8RsHlz 2g== 
Received: from sc-exch02.marvell.com ([199.233.58.182])
 by mx0a-0016f401.pphosted.com with ESMTP id 2tutsg0g0q-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);
 Fri, 19 Jul 2019 23:59:13 -0700
Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH02.marvell.com
 (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Fri, 19 Jul
 2019 23:59:12 -0700
Received: from NAM01-SN1-obe.outbound.protection.outlook.com (104.47.32.54) by
 SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server
 (TLS) id
 15.0.1367.3 via Frontend Transport; Fri, 19 Jul 2019 23:59:12 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=mQlPlRIMOCGJVYIB/T5rhjY4bcTRQPhLx8QVZkqb0kQtZZf0JOxqwuCrHT6fp5n4qFlgF4PEv19O9ql4YO0TRMxV/MLXf/7blqBgkEqv7SnzRw1818pvJGphGf0nc99kWl5KEu8xzjYYdcC27vjPTAUX/tMr4q1uiMjLqx5q9i5iTmQih2tHeS7ctm0KY5pvNvTOFypH0EsutkUps9jWOFrJuBWC26iQLPBDUwLJQuXVAPbjbWhHDySOQE7e37o8f9ebV3rIQU1D1kjU+u/np4OYP4J5SP3ZDlQ2Sp+IyOCAIs2+u8PGfpHSuVcNIXh55Ix72jdENgXxEaB2N34F+A==
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:X-MS-Exchange-SenderADCheck;
 bh=zkeQsjGJMWBVUJqpzvkujc1zKnVY3Ths8D4qM1VvVis=;
 b=dpF3MM4xhpYymEYavJdX5nfceosh7/QG21h0o30zvRu+f/NkrwhsfJIe7abqdX7rw3QQslrZb3Ys6754egr+BO3L8hpLjSrboVRebpr15EQTyUpTjqVyfPToqfU5k55HeaIGl68G+viF1RrN+eo02qbCtY8KpmLn3CzJYIMMhRVRzhf8OnFq+U/mVtA97Ao0e27/RjlEbmoy9jyf/NHq66MWtEvycIN2HNnZR6AlVdujvaYdHV77KrBBDaqyekV3p7dl7WTolIJl9Few+Hydm2GdPoyzUZFc1uHhEESB13i+s+3jRCUsJVQT7RDZGGfsVzqxQrKmxKa5xaq6OHcVaQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass
 smtp.mailfrom=marvell.com;dmarc=pass action=none
 header.from=marvell.com;dkim=pass header.d=marvell.com;arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=marvell.onmicrosoft.com; s=selector2-marvell-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zkeQsjGJMWBVUJqpzvkujc1zKnVY3Ths8D4qM1VvVis=;
 b=vov6DM2TvDFBXvPDiLOYThlfX9rKYJz5PMw/wRfg4ib4qLbLW2QSlypmzaHmQ+Cb6odGNnEj25FZ42liu/uvy7EbT8Qt3n0FlswJHuS3vvcUbn6XQSE79DtElLjAkBMtjQp0nzW0d0lb7YDHQaJTnyiAsSFLggKVDDUyC5tPfaw=
Received: from CY4PR1801MB1863.namprd18.prod.outlook.com (10.171.255.14) by
 CY4PR1801MB1991.namprd18.prod.outlook.com (10.171.255.144) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2073.14; Sat, 20 Jul 2019 06:59:09 +0000
Received: from CY4PR1801MB1863.namprd18.prod.outlook.com
 ([fe80::1859:6ecd:9898:f96c]) by CY4PR1801MB1863.namprd18.prod.outlook.com
 ([fe80::1859:6ecd:9898:f96c%7]) with mapi id 15.20.2094.011; Sat, 20 Jul 2019
 06:59:09 +0000
From: Pavan Nikhilesh Bhagavatula <pbhagavatula@marvell.com>
To: Gavin Hu <gavin.hu@arm.com>, "dev@dpdk.org" <dev@dpdk.org>
CC: "nd@arm.com" <nd@arm.com>
Thread-Topic: [dpdk-dev] [RFC v2 4/5] spinlock: use wfe to reduce contention
 on	aarch64
Thread-Index: AQHVMX2o9ROmS4BLKkehoY7fo0UvwKbTLggA
Date: Sat, 20 Jul 2019 06:59:09 +0000
Message-ID: <CY4PR1801MB186358F7C50679B3260C191ADECA0@CY4PR1801MB1863.namprd18.prod.outlook.com>
References: <1561911676-37718-1-git-send-email-gavin.hu@arm.com>
 <1562144316-14687-5-git-send-email-gavin.hu@arm.com>
In-Reply-To: <1562144316-14687-5-git-send-email-gavin.hu@arm.com>
Accept-Language: en-IN, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [183.82.17.219]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 2526ed48-2372-4cab-10de-08d70cdfc3db
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:CY4PR1801MB1991; 
x-ms-traffictypediagnostic: CY4PR1801MB1991:
x-ms-exchange-purlcount: 1
x-microsoft-antispam-prvs: <CY4PR1801MB19917B5983D69274BEA4719BDECA0@CY4PR1801MB1991.namprd18.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:8882;
x-forefront-prvs: 0104247462
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(4636009)(396003)(346002)(376002)(39860400002)(136003)(366004)(13464003)(199004)(189003)(316002)(11346002)(446003)(7736002)(110136005)(229853002)(53936002)(99286004)(2906002)(2501003)(76176011)(14444005)(256004)(86362001)(9686003)(66946007)(8936002)(6306002)(66446008)(76116006)(476003)(6436002)(52536014)(66066001)(55016002)(66476007)(66556008)(64756008)(5660300002)(78486014)(478600001)(33656002)(74316002)(25786009)(71190400001)(71200400001)(7696005)(3846002)(6116002)(486006)(186003)(68736007)(102836004)(14454004)(81156014)(81166006)(6506007)(305945005)(6246003)(4326008)(26005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR1801MB1991;
 H:CY4PR1801MB1863.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:1; MX:1; 
received-spf: None (protection.outlook.com: marvell.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: y3gLdHoLIReDSrkazISt73NrH6NrSWbx+6rgBYyU6wGtEL5ULQtWvRusY5gqjQrbS0lnZNooTbcaeXRpvtGjpDIohmrQhyEYnwVESoIjopbNSp7o3QiwjErkNrHXx34xFp4voVdeQxblXW3bCR3PcLa1uYryHjojh1fqHjVTEXW4szITbkWffJxNmM71S2iRRoI6jdiF98XFcf2wplB4ialz0UeOpi0lHDJF9YqCDAHvRFyIGfR0xQ5QHi5jfGPyuZJWhg0m6ufRuHUBQmkV3vLdzG2eTb1uYVfMYJMNqzlXEJthO5GKsZmCCENf9ei4bra4JahqIdDWNupqWVAJ4gaEQyjUXCH7r/s1Watzd83LWXckOXv537flKtTDwVDWkmYikfbeehGfYO5v0txbYUgK9MiaZ99xF08bNGDK7Jw=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 2526ed48-2372-4cab-10de-08d70cdfc3db
X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jul 2019 06:59:09.7389 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: pbhagavatula@marvell.com
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1801MB1991
X-OriginatorOrg: marvell.com
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:5.22.84,1.0.8
 definitions=2019-07-20_04:2019-07-19,2019-07-20 signatures=0
Subject: Re: [dpdk-dev] [RFC v2 4/5] spinlock: use wfe to reduce contention
	on	aarch64
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
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: dev <dev-bounces@dpdk.org> On Behalf Of Gavin Hu
>Sent: Wednesday, July 3, 2019 2:29 PM
>To: dev@dpdk.org
>Cc: nd@arm.com
>Subject: [dpdk-dev] [RFC v2 4/5] spinlock: use wfe to reduce contention
>on aarch64
>
>In acquiring a spinlock, cores repeatedly poll the lock variable.
>This is replaced by rte_wait_until_equal API.
>
>5~10% performance gain was measured by running spinlock_autotest
>on
>14 isolated cores of ThunderX2.

Tested on octeontx2 board.

>
>Signed-off-by: Gavin Hu <gavin.hu@arm.com>
>Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
>Reviewed-by: Phil Yang <phil.yang@arm.com>
>Reviewed-by: Steve Capper <steve.capper@arm.com>
>Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com>
>Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>

Tested-by: Pavan Nikhilesh <pbhagavatula@marvell.com>

>---
> .../common/include/arch/arm/rte_spinlock.h         | 25
>++++++++++++++++++++++
> .../common/include/generic/rte_spinlock.h          |  2 +-
> 2 files changed, 26 insertions(+), 1 deletion(-)
>
>diff --git a/lib/librte_eal/common/include/arch/arm/rte_spinlock.h
>b/lib/librte_eal/common/include/arch/arm/rte_spinlock.h
>index 1a6916b..f25d17f 100644
>--- a/lib/librte_eal/common/include/arch/arm/rte_spinlock.h
>+++ b/lib/librte_eal/common/include/arch/arm/rte_spinlock.h
>@@ -16,6 +16,31 @@ extern "C" {
> #include <rte_common.h>
> #include "generic/rte_spinlock.h"
>
>+/* armv7a does support WFE, but an explicit wake-up signal using SEV
>is
>+ * required (must be preceded by DSB to drain the store buffer) and
>+ * this is less performant, so keep armv7a implementation unchanged.
>+ */
>+#if defined(RTE_USE_WFE) && defined(RTE_ARCH_ARM64)
>+static inline void
>+rte_spinlock_lock(rte_spinlock_t *sl)
>+{
>+	unsigned int tmp;
>+	/*
>http://infocenter.arm.com/help/index.jsp?topic=3D/com.arm.doc.
>+	 * faqs/ka16809.html
>+	 */
>+	asm volatile(
>+		"sevl\n"
>+		"1:	wfe\n"
>+		"2:	ldaxr %w[tmp], %w[locked]\n"
>+		"cbnz   %w[tmp], 1b\n"
>+		"stxr   %w[tmp], %w[one], %w[locked]\n"
>+		"cbnz   %w[tmp], 2b\n"
>+		: [tmp] "=3D&r" (tmp), [locked] "+Q"(sl->locked)
>+		: [one] "r" (1)
>+		: "cc", "memory");
>+}
>+#endif
>+
> static inline int rte_tm_supported(void)
> {
> 	return 0;
>diff --git a/lib/librte_eal/common/include/generic/rte_spinlock.h
>b/lib/librte_eal/common/include/generic/rte_spinlock.h
>index 87ae7a4..cf4f15b 100644
>--- a/lib/librte_eal/common/include/generic/rte_spinlock.h
>+++ b/lib/librte_eal/common/include/generic/rte_spinlock.h
>@@ -57,7 +57,7 @@ rte_spinlock_init(rte_spinlock_t *sl)
> static inline void
> rte_spinlock_lock(rte_spinlock_t *sl);
>
>-#ifdef RTE_FORCE_INTRINSICS
>+#if defined(RTE_FORCE_INTRINSICS) && !defined(RTE_USE_WFE)
> static inline void
> rte_spinlock_lock(rte_spinlock_t *sl)
> {
>--
>2.7.4