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 ACAB8A0471 for ; Fri, 19 Jul 2019 06:42:12 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 79DCF2BE5; Fri, 19 Jul 2019 06:42:12 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 38FF92BA8 for ; Fri, 19 Jul 2019 06:42:11 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Jul 2019 21:42:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,280,1559545200"; d="scan'208";a="367569883" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga006.fm.intel.com with ESMTP; 18 Jul 2019 21:42:10 -0700 Received: from fmsmsx108.amr.corp.intel.com ([169.254.9.235]) by fmsmsx107.amr.corp.intel.com ([169.254.6.14]) with mapi id 14.03.0439.000; Thu, 18 Jul 2019 21:42:10 -0700 From: "Eads, Gage" To: Jerin Jacob Kollanukkaran , Phil Yang , "dev@dpdk.org" CC: "thomas@monjalon.net" , "hemant.agrawal@nxp.com" , "Honnappa.Nagarahalli@arm.com" , "gavin.hu@arm.com" , "nd@arm.com" Thread-Topic: [EXT] [PATCH v3 3/3] eal/stack: enable lock-free stack for aarch64 Thread-Index: AQHVLYk6y8BLi/QJpkeEoKDG8ijqFqbR7EWA//+NmVA= Date: Fri, 19 Jul 2019 04:42:09 +0000 Message-ID: <9184057F7FC11744A2107296B6B8EB1E68D23943@FMSMSX108.amr.corp.intel.com> References: <1561257671-10316-1-git-send-email-phil.yang@arm.com> <1561709503-11665-1-git-send-email-phil.yang@arm.com> <1561709503-11665-3-git-send-email-phil.yang@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYjE5NjM3ODItNjI1Yi00YmJiLTgwMzEtZDJiOGE1N2MwYTExIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiRk56b0JvWEVHNDNlVGpDNk92MHJuSzVUcWdDTXppZWpOZTEzbFo1aURXaldJRGhlZDNMM2Y1S3pLRFV0bXFsbiJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [10.1.200.107] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [EXT] [PATCH v3 3/3] eal/stack: enable lock-free stack for aarch64 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: Jerin Jacob Kollanukkaran [mailto:jerinj@marvell.com] > Sent: Thursday, July 18, 2019 11:18 PM > 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; Eads, > Gage > Subject: RE: [EXT] [PATCH v3 3/3] eal/stack: enable lock-free stack for > aarch64 >=20 > > -----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 3/3] eal/stack: enable lock-free stack for > > aarch64 Enable both c11 atomic and non c11 atomic lock-free stack for > aarch64. > > > > Signed-off-by: Phil Yang > > Reviewed-by: Honnappa Nagarahalli > > Tested-by: Honnappa Nagarahalli > > > > Removed Items > > ------------- > > diff --git a/lib/librte_stack/rte_stack_lf_c11.h > > b/lib/librte_stack/rte_stack_lf_c11.h > > index 3d677ae..67c21fd 100644 > > --- a/lib/librte_stack/rte_stack_lf_c11.h > > +++ b/lib/librte_stack/rte_stack_lf_c11.h > > @@ -36,7 +36,7 @@ __rte_stack_lf_push_elems(struct rte_stack_lf_list > > *list, > > struct rte_stack_lf_elem *last, > > unsigned int num) > > { > > -#ifndef RTE_ARCH_X86_64 > > +#if !defined(RTE_ARCH_X86_64) && !defined(RTE_ARCH_ARM64) > > RTE_SET_USED(first); > > RTE_SET_USED(last); > > RTE_SET_USED(list); > > @@ -88,7 +88,7 @@ __rte_stack_lf_pop_elems(struct rte_stack_lf_list > *list, > > void **obj_table, > > struct rte_stack_lf_elem **last) > > { > > -#ifndef RTE_ARCH_X86_64 > > +#if !defined(RTE_ARCH_X86_64) && !defined(RTE_ARCH_ARM64) > > RTE_SET_USED(obj_table); > > RTE_SET_USED(last); > > RTE_SET_USED(list); > > diff --git a/lib/librte_stack/rte_stack_lf_generic.h > > b/lib/librte_stack/rte_stack_lf_generic.h > > index 3182151..488fd9f 100644 > > --- a/lib/librte_stack/rte_stack_lf_generic.h > > +++ b/lib/librte_stack/rte_stack_lf_generic.h > > @@ -36,7 +36,7 @@ __rte_stack_lf_push_elems(struct rte_stack_lf_list > > *list, > > struct rte_stack_lf_elem *last, > > unsigned int num) > > { > > -#ifndef RTE_ARCH_X86_64 > > +#if !defined(RTE_ARCH_X86_64) && !defined(RTE_ARCH_ARM64) > > RTE_SET_USED(first); > > RTE_SET_USED(last); > > RTE_SET_USED(list); > > @@ -84,7 +84,7 @@ __rte_stack_lf_pop_elems(struct rte_stack_lf_list > *list, > > void **obj_table, > > struct rte_stack_lf_elem **last) > > { > > -#ifndef RTE_ARCH_X86_64 > > +#if !defined(RTE_ARCH_X86_64) && !defined(RTE_ARCH_ARM64) > > RTE_SET_USED(obj_table); > > RTE_SET_USED(last); > > RTE_SET_USED(list); >=20 >=20 > Can we remove this all #ifdef clutter by adding the following >=20 > $ git diff > diff --git a/lib/librte_stack/rte_stack_lf.h b/lib/librte_stack/rte_stack= _lf.h > index f5581f0c2..46af08b83 100644 > --- a/lib/librte_stack/rte_stack_lf.h > +++ b/lib/librte_stack/rte_stack_lf.h > @@ -5,7 +5,7 @@ > #ifndef _RTE_STACK_LF_H_ > #define _RTE_STACK_LF_H_ >=20 > -#ifdef RTE_USE_C11_MEM_MODEL > +#if defined (RTE_USE_C11_MEM_MODEL) && defined(RTE_ARCH_X86_64) > && > +defined(RTE_ARCH_ARM64) I assume you meant (defined(RTE_ARCH_X86_64) || defined(RTE_ARCH_ARM64))? > #include "rte_stack_lf_c11.h" > #else > #include "rte_stack_lf_generic.h" >=20 >=20 The ifdefs in those two headers prevent DPDK from trying to build rte_atomi= c128_cmp_exchange() on architectures that don't implement it. So the propos= al wouldn't quite work, since rte_stack_lf_generic.h calls rte_atomic128_cm= p_exchange(). Something like this could work: #if !(defined(RTE_ARCH_X86_64) || defined(RTE_ARCH_ARM64)) #include rte_stack_lf_stubs.h #else #ifdef RTE_USE_C11_MEM_MODEL #include "rte_stack_lf_c11.h" #else #include "rte_stack_lf_generic.h" #endif #endif Where rte_stack_lf_stubs.h is a new header containing stub implementations = of __rte_stack_lf_count, __rte_stack_lf_push_elems, and __rte_stack_lf_pop_= elems. It still has some ifdef clutter, but less overall.