From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E17EDC433DF for ; Mon, 29 Jun 2020 10:14:06 +0000 (UTC) Received: from dpdk.org (dpdk.org [92.243.14.124]) by mail.kernel.org (Postfix) with ESMTP id 7919323884 for ; Mon, 29 Jun 2020 10:14:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=intel.onmicrosoft.com header.i=@intel.onmicrosoft.com header.b="gOuJO0CP" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7919323884 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7A0831B13C; Mon, 29 Jun 2020 12:14:05 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 7A4F1E07 for ; Mon, 29 Jun 2020 12:14:03 +0200 (CEST) IronPort-SDR: YcvR7jGbMVL/lZ7U46I0FFzGaLlBXjdJn3Zhn2rT9NnPetBCL0GmT+e4VBrarq4/XIqIspxOJl 5ZoBb5lOCGMg== X-IronPort-AV: E=McAfee;i="6000,8403,9666"; a="134256388" X-IronPort-AV: E=Sophos;i="5.75,294,1589266800"; d="scan'208";a="134256388" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2020 03:14:02 -0700 IronPort-SDR: wXzBWCd8Ju5rHMn3TwtudGdVWlehr6VT9cK0G7ORsk6Er5WCpUQvhYnVzlrKRxIQQnrvnGCw1x b1tStO4HLkOg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,294,1589266800"; d="scan'208";a="480731274" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga005.fm.intel.com with ESMTP; 29 Jun 2020 03:14:01 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 29 Jun 2020 03:14:01 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 29 Jun 2020 03:14:00 -0700 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 29 Jun 2020 03:14:00 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 29 Jun 2020 03:13:58 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fEGeCGAyEw2rJBJgcBkamgs2tHvcl81pPZD+DE1LTzNW7wFOZMcJhtGOyqxAQjWKJy1/al1fIsJhzbPUgRV4Npv+m395ZxMV85Z6Ah5Z2bz1MdsKLQnMPqLvl2RIbOL2/h1jUZfNrnMk5BX7eDQAxqo5T0UxDH9YhaNICaAZO1f6mTiPi7+quFm1oaXSZCqdzgp5RdEnuMraGOkpSpabxd3daroMNSNJTskO1z0xfdD5Ne2RAwTQ2jY53NYIiZsBxo1ueEK6kmOTHLWlX0AZczHRQgMkR5S7HZvdQM6oOIqWxxVKaTv6GsfejI2y7d3I8oe/RBxErdPTPpCZSElaig== 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=taVJkmojYOUAmaQay4FjtLuFl8IB6d4WyoTejeRkZd0=; b=O64+7MernbHSxhhqckHUgWEw9CfLvB7Mcb40a0bcUD933pWBggTAMaPhi46OR19xwoVEeLn9FwC8OwtDdmV1buBpQmQlPwV50ww/hXSM48JoqJrJEwuN00w/+APDzsMNxUokmdTVkFbC3RL8udP7bVmLa0LKkyQL3fTk0rEjeQTmD/E1WJPo1jF1EUkYscxrGmuaup/P6PLm1f7auqdpyGSDmxlRzg/AIfTkdqEspIqoc84PDLaL3ieqhQjPW//fX5GqhRWURC6GkrsEIxUQ+3ILUMx1A0fyU/ow2EhNcSftONWLrwI7ao61ZN/6GKbb5KgEkoGETVUD0T3zBpI/fQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=taVJkmojYOUAmaQay4FjtLuFl8IB6d4WyoTejeRkZd0=; b=gOuJO0CP9X1zlsAQh7Ty31B/M+SWezuz0pMDqT5TOEnL2dMjnXxlqU+G7rJG1LHamEGhvLyefV0Ah1FZ7wUz1GOAXS/QuU3rLgEzDRPgZccA63GRXtv/3nZERj9QWQhIsnEx5TtxWuok3N6mdpzWKckWFFXxlER9yS4e/wqN8Q4= Received: from BYAPR11MB3301.namprd11.prod.outlook.com (2603:10b6:a03:7f::26) by BY5PR11MB3973.namprd11.prod.outlook.com (2603:10b6:a03:185::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.21; Mon, 29 Jun 2020 10:13:53 +0000 Received: from BYAPR11MB3301.namprd11.prod.outlook.com ([fe80::f160:29ab:b8f9:4189]) by BYAPR11MB3301.namprd11.prod.outlook.com ([fe80::f160:29ab:b8f9:4189%6]) with mapi id 15.20.3131.026; Mon, 29 Jun 2020 10:13:53 +0000 From: "Ananyev, Konstantin" To: Phil Yang , "dev@dpdk.org" CC: "mattias.ronnblom@ericsson.com" , "mb@smartsharesystems.com" , "stephen@networkplumber.org" , "thomas@monjalon.net" , "Richardson, Bruce" , "Yigit, Ferruh" , "hemant.agrawal@nxp.com" , "jerinj@marvell.com" , "ktraynor@redhat.com" , "maxime.coquelin@redhat.com" , "olivier.matz@6wind.com" , "Van Haaren, Harry" , "Carrillo, Erik G" , "drc@linux.vnet.ibm.com" , "david.marchand@redhat.com" , "Chen, Zhaoyan" , "ola.liljedahl@arm.com" , "honnappa.nagarahalli@arm.com" , "ruifeng.wang@arm.com" , "nd@arm.com" Thread-Topic: [PATCH v5 4/4] eal/atomic: add wrapper for c11 atomic thread fence Thread-Index: AQHWMzxzR+3Hct8b4UODZRKPbe5xi6jvlVrQ Date: Mon, 29 Jun 2020 10:13:53 +0000 Message-ID: References: <1589270586-4480-1-git-send-email-phil.yang@arm.com> <1590483667-10318-1-git-send-email-phil.yang@arm.com> <1590483667-10318-5-git-send-email-phil.yang@arm.com> In-Reply-To: <1590483667-10318-5-git-send-email-phil.yang@arm.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.151.175] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1f551ef0-3799-4efd-0376-08d81c152058 x-ms-traffictypediagnostic: BY5PR11MB3973: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-forefront-prvs: 044968D9E1 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oFBGRk8jI+1akcU5shCp9U46Ehypfed/XwO9tqf1uLd2KtrMoPyPhMzrcbQCP6/aMUUIUNR/IhbhW8lJ3o0X2vbmW26w2vCdlPEWDA1tC6Sat5dIDBYtKqIoc2MsjP7a8Pr6qCCeGSSms9QO5LLSqJ5cn2z1C3dMifgkOJKrezQeTqx5UMti9+rCZ7YaZkp9nckpvrIbCk5nwSHfEqOFjAPjQEyPlxwjMgkZw6yFe/brKd0kEjyG7H+8QlDG+gN7xxpcxjayh2r3lX7+TgpMx1Zs4lIobwvmDDIl1BHJbjPqlgi3trTUp82mWRJLCyVufDyf3Azxz591H8/ahLxD+Q== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR11MB3301.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(39860400002)(346002)(376002)(366004)(136003)(396003)(76116006)(6506007)(7696005)(66476007)(66556008)(64756008)(54906003)(4326008)(86362001)(186003)(110136005)(66946007)(7416002)(66446008)(8676002)(5660300002)(8936002)(33656002)(71200400001)(26005)(9686003)(55016002)(2906002)(478600001)(316002)(52536014)(83380400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: mkEtJMXb9gw0IWZhCW8ey/gAXLmdQ63SD2kpHLeTTRVXFv0lrJY6R14zDrmBFzVutOm462m8kK8xoP5NhLIakib5tbcqkRF5AWsQsxA59UUoI+Vgm0WmHlKYAP7CGUx09OQhIywjqzvRCG9nGhjnpy3orJydsadXCV3Y1L6sDbjo00FCXvUwpOMJW/Y0IktIhpqEGrDVEYpb7F7N0z4SDCves9oxXwtFXw3HJhutxP5rVnYOIND+HPCez0Ahupoc4ZOsjMH8s9QceD7uleikjOj09wsHVDCkgSLE3r1ynajGaJbl0C/wlGEgUZQkL8hnVAXBsp70YGKE863fp8lj9EltGxrPAodAb/ghUQMzfCHcAjvaJK5MxpEX2KAu56HEgVkKXwL7SocVbdb4bDuu0KpNwfeQ4+RK5OFoxQjglHNfyHF5GC230YWo0pYt9X0xfTObxq3ZK5yU7npYD7MONZHeBNzCaoG9863zzbyyw2lXmxnAUjFnn+5YhLBQN14J Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3301.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1f551ef0-3799-4efd-0376-08d81c152058 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jun 2020 10:13:53.4195 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: fivwA6HsxjbT3tQUWLBTqhsbP8kTvaG3In6lFn+3CPk5sYu4TZMF6pNcw2Kynxu7HShgTBGIjR6mbRwzz0CxCStwXVqmLGE5CjbYJwH9kRI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR11MB3973 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v5 4/4] eal/atomic: add wrapper for c11 atomic thread fence 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" >=20 > Provide a wrapper for __atomic_thread_fence built-in to support > optimized code for __ATOMIC_SEQ_CST memory order for x86 platforms. >=20 > Suggested-by: Honnappa Nagarahalli > Signed-off-by: Phil Yang > Reviewed-by: Ola Liljedahl > --- > lib/librte_eal/arm/include/rte_atomic_32.h | 6 ++++++ > lib/librte_eal/arm/include/rte_atomic_64.h | 6 ++++++ > lib/librte_eal/include/generic/rte_atomic.h | 6 ++++++ > lib/librte_eal/ppc/include/rte_atomic.h | 6 ++++++ > lib/librte_eal/x86/include/rte_atomic.h | 17 +++++++++++++++++ > 5 files changed, 41 insertions(+) >=20 > diff --git a/lib/librte_eal/arm/include/rte_atomic_32.h b/lib/librte_eal/= arm/include/rte_atomic_32.h > index 7dc0d06..dbe7cc6 100644 > --- a/lib/librte_eal/arm/include/rte_atomic_32.h > +++ b/lib/librte_eal/arm/include/rte_atomic_32.h > @@ -37,6 +37,12 @@ extern "C" { >=20 > #define rte_cio_rmb() rte_rmb() >=20 > +static __rte_always_inline void > +rte_atomic_thread_fence(int mo) > +{ > + __atomic_thread_fence(mo); > +} > + > #ifdef __cplusplus > } > #endif > diff --git a/lib/librte_eal/arm/include/rte_atomic_64.h b/lib/librte_eal/= arm/include/rte_atomic_64.h > index 7b7099c..22ff8ec 100644 > --- a/lib/librte_eal/arm/include/rte_atomic_64.h > +++ b/lib/librte_eal/arm/include/rte_atomic_64.h > @@ -41,6 +41,12 @@ extern "C" { >=20 > #define rte_cio_rmb() asm volatile("dmb oshld" : : : "memory") >=20 > +static __rte_always_inline void > +rte_atomic_thread_fence(int mo) > +{ > + __atomic_thread_fence(mo); > +} > + > /*------------------------ 128 bit atomic operations -------------------= ------*/ >=20 > #if defined(__ARM_FEATURE_ATOMICS) || defined(RTE_ARM_FEATURE_ATOMICS) > diff --git a/lib/librte_eal/include/generic/rte_atomic.h b/lib/librte_eal= /include/generic/rte_atomic.h > index e6ab15a..5b941db 100644 > --- a/lib/librte_eal/include/generic/rte_atomic.h > +++ b/lib/librte_eal/include/generic/rte_atomic.h > @@ -158,6 +158,12 @@ static inline void rte_cio_rmb(void); > asm volatile ("" : : : "memory"); \ > } while(0) >=20 > +/** > + * Synchronization fence between threads based on the specified > + * memory order. > + */ > +static inline void rte_atomic_thread_fence(int mo); > + > /*------------------------- 16 bit atomic operations -------------------= ------*/ >=20 > /** > diff --git a/lib/librte_eal/ppc/include/rte_atomic.h b/lib/librte_eal/ppc= /include/rte_atomic.h > index 7e3e131..91c5f30 100644 > --- a/lib/librte_eal/ppc/include/rte_atomic.h > +++ b/lib/librte_eal/ppc/include/rte_atomic.h > @@ -40,6 +40,12 @@ extern "C" { >=20 > #define rte_cio_rmb() rte_rmb() >=20 > +static __rte_always_inline void > +rte_atomic_thread_fence(int mo) > +{ > + __atomic_thread_fence(mo); > +} > + > /*------------------------- 16 bit atomic operations -------------------= ------*/ > /* To be compatible with Power7, use GCC built-in functions for 16 bit > * operations */ > diff --git a/lib/librte_eal/x86/include/rte_atomic.h b/lib/librte_eal/x86= /include/rte_atomic.h > index b9dcd30..bd256e7 100644 > --- a/lib/librte_eal/x86/include/rte_atomic.h > +++ b/lib/librte_eal/x86/include/rte_atomic.h > @@ -83,6 +83,23 @@ rte_smp_mb(void) >=20 > #define rte_cio_rmb() rte_compiler_barrier() >=20 > +/** > + * Synchronization fence between threads based on the specified > + * memory order. > + * > + * On x86 the __atomic_thread_fence(__ATOMIC_SEQ_CST) generates > + * full 'mfence' which is quite expensive. The optimized > + * implementation of rte_smp_mb is used instead. > + */ > +static __rte_always_inline void > +rte_atomic_thread_fence(int mo) > +{ > + if (mo =3D=3D __ATOMIC_SEQ_CST) > + rte_smp_mb(); > + else > + __atomic_thread_fence(mo); > +} > + > /*------------------------- 16 bit atomic operations -------------------= ------*/ >=20 > #ifndef RTE_FORCE_INTRINSICS > -- Acked-by: Konstantin Ananyev > 2.7.4