Thread (88 messages) 88 messages, 7 authors, 2019-10-21

Re: [dpdk-dev] [EXT] [PATCH v3 3/3] eal/stack: enable lock-free stack for aarch64

From: Eads, Gage <hidden>
Date: 2019-07-19 04:42:13

quoted hunk ↗ jump to hunk
-----Original Message-----
From: Jerin Jacob Kollanukkaran [mailto:jerinj@marvell.com]
Sent: Thursday, July 18, 2019 11:18 PM
To: Phil Yang <redacted>; dev@dpdk.org
Cc: thomas@monjalon.net; hemant.agrawal@nxp.com;
Honnappa.Nagarahalli@arm.com; gavin.hu@arm.com; nd@arm.com; Eads,
Gage [off-list ref]
Subject: RE: [EXT] [PATCH v3 3/3] eal/stack: enable lock-free stack for
aarch64
quoted
-----Original Message-----
From: Phil Yang <redacted>
Sent: Friday, June 28, 2019 1:42 PM
To: dev@dpdk.org
Cc: thomas@monjalon.net; Jerin Jacob Kollanukkaran
[off-list ref]; 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.
quoted
Signed-off-by: Phil Yang <redacted>
Reviewed-by: Honnappa Nagarahalli <redacted>
Tested-by: Honnappa Nagarahalli <redacted>

 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,
quoted
 			 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,
quoted
 			 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);

Can we remove this all #ifdef clutter by adding the following

$ 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_

-#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"
The ifdefs in those two headers prevent DPDK from trying to build rte_atomic128_cmp_exchange() on architectures that don't implement it. So the proposal wouldn't quite work, since rte_stack_lf_generic.h calls rte_atomic128_cmp_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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help