From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 70F59A0487 for ; Wed, 3 Jul 2019 14:25:58 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E3BEB5587; Wed, 3 Jul 2019 14:25:56 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id A4BCE4C99 for ; Wed, 3 Jul 2019 14:25:55 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x63CPpAH018686; Wed, 3 Jul 2019 05:25:51 -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=iVYDa//m1hM297kolGfJv4z9NbW9qSoXh4vfJKg4FoM=; b=ZRiQdnraOJbstYUumbc+bDvSGh2pfaw181vsRDtpETD1tI1u4vz3LVM0FJaRacgt/4e1 uvhMRVJj72Zof0tY+cy09az9YDQE1cADJO+5jOzudT+m9sDOS0Uudy3EkDvCPRcjA3ML eJ8S7TY27z/seZ/Qhd4720HTt2X9DuoSMWHxSYXJ5GKor0JyITRvnx97PWwQUqCBPPHw BkB+Ey34hdlDSOiTSXS55i8vqKuDeGJSO8VSWybfbhcgdCxUu7S+ELduFfOiwFP8keZv uoovHbbdoQuogGupV8XWjQvoxtgR1+p9CZ8lMcrP9WQfxr6p7IxP0K/+6+6Aw2WDh2fs cg== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0a-0016f401.pphosted.com with ESMTP id 2tgrv18ttr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 03 Jul 2019 05:25:50 -0700 Received: from SC-EXCH03.marvell.com (10.93.176.83) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Wed, 3 Jul 2019 05:25:49 -0700 Received: from NAM01-SN1-obe.outbound.protection.outlook.com (104.47.32.56) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Wed, 3 Jul 2019 05:25:49 -0700 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=iVYDa//m1hM297kolGfJv4z9NbW9qSoXh4vfJKg4FoM=; b=Dp9rBwJJwtrojp3cmqvmarHaPS9hUKTasqqmmTN0Fk+uvbR6w9RZAVZzE9yL37NeAmQSgo4K618wjoWjpBSUgdIqUKHXFkHZMwihGelaMLCeq9udSpn/gi1TfVG6rhOn/M4besivSc2E9zRMXzQ8TGX7QszNySTFHf41M40Bm2g= Received: from BYAPR18MB2424.namprd18.prod.outlook.com (20.179.91.149) by BYAPR18MB3048.namprd18.prod.outlook.com (20.179.60.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2052.15; Wed, 3 Jul 2019 12:25:47 +0000 Received: from BYAPR18MB2424.namprd18.prod.outlook.com ([fe80::2d42:12b6:aa2e:2862]) by BYAPR18MB2424.namprd18.prod.outlook.com ([fe80::2d42:12b6:aa2e:2862%4]) with mapi id 15.20.2032.019; Wed, 3 Jul 2019 12:25:47 +0000 From: Jerin Jacob Kollanukkaran To: Phil Yang , "dev@dpdk.org" CC: "thomas@monjalon.net" , "hemant.agrawal@nxp.com" , "Honnappa.Nagarahalli@arm.com" , "gavin.hu@arm.com" , "nd@arm.com" , "gage.eads@intel.com" Thread-Topic: [EXT] [PATCH v3 1/3] eal/arm64: add 128-bit atomic compare exchange Thread-Index: AQHVLYk2hpq4OasZX0+HEFxbT7xNTqa42IBA Date: Wed, 3 Jul 2019 12:25:47 +0000 Message-ID: References: <1561257671-10316-1-git-send-email-phil.yang@arm.com> <1561709503-11665-1-git-send-email-phil.yang@arm.com> In-Reply-To: <1561709503-11665-1-git-send-email-phil.yang@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [106.200.248.176] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d8215f0e-fc0f-443c-eda0-08d6ffb193f3 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:BYAPR18MB3048; x-ms-traffictypediagnostic: BYAPR18MB3048: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 00872B689F x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(136003)(376002)(39860400002)(346002)(396003)(366004)(189003)(199004)(13464003)(478600001)(26005)(76176011)(186003)(68736007)(3846002)(6116002)(52536014)(66946007)(76116006)(99286004)(73956011)(66476007)(14444005)(256004)(66556008)(66446008)(64756008)(86362001)(8936002)(81166006)(81156014)(8676002)(102836004)(25786009)(6506007)(53546011)(7696005)(5660300002)(14454004)(110136005)(55016002)(71190400001)(71200400001)(6246003)(74316002)(66066001)(2906002)(53936002)(316002)(2501003)(6436002)(33656002)(54906003)(11346002)(9686003)(486006)(476003)(4326008)(7736002)(446003)(305945005)(229853002); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR18MB3048; H:BYAPR18MB2424.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A: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: UUyEuTksEa3bxOdsazqBFquuiHjMSlzkcSYHKWi9jMy8/3HBww5lynoz3oih8PEcS8qTZaXF6m8KlGA9Q36RQEW6h9GiYnYDPRiYakLa9JnDi/QHUGgMrSuvUbpoXbV4vFGb6rxVNUYQJ1NXlP5XxB+62hf0djxWGz2U+Blhy5BmwiKN5a26XATQXlh4FWMyp6Es30TU0p1uD2Zg5WeK12yiwmZdeA/iGz78ws1ev7nuVLC3makQ4TLlFFj6FU3oPiHcdUwIjlHVsbEwh+S7oWbxiMB63VRdfWf3bdG2HcwVLvCxI5uXgVOSHQLnzFLqSoOqvB8dl7Hjwa978o55/wZ97Bd5lRQq8FPIq7ojAG8hEHL6Gls+473zntTY2u75biVkR9T0Xz3DjfDcjRwKJsScdAqQKtb+Ozo88foD9yY= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: d8215f0e-fc0f-443c-eda0-08d6ffb193f3 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jul 2019 12:25:47.4835 (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: jerinj@marvell.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB3048 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-07-03_03:, , signatures=0 Subject: Re: [dpdk-dev] [EXT] [PATCH v3 1/3] eal/arm64: add 128-bit atomic compare exchange X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > -----Original Message----- > From: Phil Yang > Sent: Friday, June 28, 2019 1:42 PM > To: dev@dpdk.org > Cc: thomas@monjalon.net; Jerin Jacob Kollanukkaran ; > hemant.agrawal@nxp.com; Honnappa.Nagarahalli@arm.com; > gavin.hu@arm.com; nd@arm.com; gage.eads@intel.com > Subject: [EXT] [PATCH v3 1/3] eal/arm64: add 128-bit atomic compare excha= nge >=20 > Add 128-bit atomic compare exchange on aarch64. >=20 > Signed-off-by: Phil Yang > Tested-by: Honnappa Nagarahalli > Reviewed-by: Honnappa Nagarahalli > --- > v3: > 1. Avoid duplication code with macro. (Jerin Jocob) 2. Make invalid memor= y > order to strongest barrier. (Jerin Jocob) 3. Update > doc/guides/prog_guide/env_abstraction_layer.rst. (Eads Gage) 4. Fix 32-bi= t x86 > builds issue. (Eads Gage) 5. Correct documentation issues in UT. (Eads Ga= ge) >=20 > .../common/include/arch/arm/rte_atomic_64.h | 165 > +++++++++++++++++++++ > .../common/include/arch/x86/rte_atomic_64.h | 12 -- > lib/librte_eal/common/include/generic/rte_atomic.h | 17 ++- > 3 files changed, 181 insertions(+), 13 deletions(-) >=20 > diff --git a/lib/librte_eal/common/include/arch/arm/rte_atomic_64.h > b/lib/librte_eal/common/include/arch/arm/rte_atomic_64.h > index 97060e4..2080c4d 100644 > --- a/lib/librte_eal/common/include/arch/arm/rte_atomic_64.h > +++ b/lib/librte_eal/common/include/arch/arm/rte_atomic_64.h > @@ -1,5 +1,6 @@ > /* SPDX-License-Identifier: BSD-3-Clause > * Copyright(c) 2015 Cavium, Inc > + * Copyright(c) 2019 Arm Limited > */ >=20 > #ifndef _RTE_ATOMIC_ARM64_H_ > @@ -14,6 +15,9 @@ extern "C" { > #endif >=20 > #include "generic/rte_atomic.h" > +#include > +#include > +#include >=20 > #define dsb(opt) asm volatile("dsb " #opt : : : "memory") #define dmb(o= pt) asm > volatile("dmb " #opt : : : "memory") @@ -40,6 +44,167 @@ extern "C" { >=20 > #define rte_cio_rmb() dmb(oshld) >=20 > +/*------------------------ 128 bit atomic operations > +-------------------------*/ > + > +#define RTE_HAS_ACQ(mo) ((mo) !=3D __ATOMIC_RELAXED && (mo) !=3D > +__ATOMIC_RELEASE) #define RTE_HAS_RLS(mo) ((mo) =3D=3D __ATOMIC_RELEASE > || \ > + (mo) =3D=3D __ATOMIC_ACQ_REL || \ > + (mo) =3D=3D __ATOMIC_SEQ_CST) > + > +#define RTE_MO_LOAD(mo) (RTE_HAS_ACQ((mo)) \ > + ? __ATOMIC_ACQUIRE : __ATOMIC_RELAXED) #define > RTE_MO_STORE(mo) > +(RTE_HAS_RLS((mo)) \ > + ? __ATOMIC_RELEASE : __ATOMIC_RELAXED) > + > +#ifdef __ARM_FEATURE_ATOMICS > +#define __ATOMIC128_CAS_OP(cas_op_name, op_string) = \ > +static inline rte_int128_t = \ > +cas_op_name(rte_int128_t *dst, rte_int128_t old, = \ > + rte_int128_t updated) \ > +{ = \ > + /* caspX instructions register pair must start from even-numbered > + * register at operand 1. > + * So, specify registers for local variables here. > + */ = \ > + register uint64_t x0 __asm("x0") =3D (uint64_t)old.val[0]; = \ I understand CASP limitation on register has to be even and odd. Is there anyway to remove explicit x0 register allocation and choose compiler to decide the register. Some reason with optimize(03) gcc makes correctly but not clang. Hardcoding to specific register makes compiler to not optimize the stuff, especially if it is inline function.