DPDK patches and discussions
 help / color / mirror / Atom feed
From: Tyler Retzlaff <roretzla@linux.microsoft.com>
To: dev@dpdk.org
Cc: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
	Bruce Richardson <bruce.richardson@intel.com>,
	Chengwen Feng <fengchengwen@huawei.com>,
	Cristian Dumitrescu <cristian.dumitrescu@intel.com>,
	David Christensen <drc@linux.vnet.ibm.com>,
	David Hunt <david.hunt@intel.com>,
	Ferruh Yigit <ferruh.yigit@amd.com>,
	Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>,
	Jasvinder Singh <jasvinder.singh@intel.com>,
	Jerin Jacob <jerinj@marvell.com>,
	Kevin Laatz <kevin.laatz@intel.com>,
	Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>,
	Min Zhou <zhoumin@loongson.cn>,
	Ruifeng Wang <ruifeng.wang@arm.com>,
	Sameh Gobriel <sameh.gobriel@intel.com>,
	Stanislaw Kardach <kda@semihalf.com>,
	Thomas Monjalon <thomas@monjalon.net>,
	Vladimir Medvedkin <vladimir.medvedkin@intel.com>,
	Yipeng Wang <yipeng1.wang@intel.com>,
	Tyler Retzlaff <roretzla@linux.microsoft.com>
Subject: [PATCH v7 01/39] eal: use C11 alignas
Date: Mon,  4 Mar 2024 09:52:06 -0800	[thread overview]
Message-ID: <1709574764-9041-2-git-send-email-roretzla@linux.microsoft.com> (raw)
In-Reply-To: <1709574764-9041-1-git-send-email-roretzla@linux.microsoft.com>

The current location used for __rte_aligned(a) for alignment of types
and variables is not compatible with MSVC. There is only a single
location accepted by both toolchains.

For variables standard C11 offers alignas(a) supported by conformant
compilers i.e. both MSVC and GCC.

For types the standard offers no alignment facility that compatibly
interoperates with C and C++ but may be achieved by relocating the
placement of __rte_aligned(a) to the aforementioned location accepted
by all currently supported toolchains.

To allow alignment for both compilers do the following:

* Expand __rte_aligned(a) to __declspec(align(a)) when building
  with MSVC.

* Move __rte_aligned from the end of {struct,union} definitions to
  be between {struct,union} and tag.

  The placement between {struct,union} and the tag allows the desired
  alignment to be imparted on the type regardless of the toolchain being
  used for all of GCC, LLVM, MSVC compilers building both C and C++.

* Replace use of __rte_aligned(a) on variables/fields with alignas(a).

Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
---
 lib/eal/arm/include/rte_vect.h       |  4 ++--
 lib/eal/common/malloc_elem.h         |  4 ++--
 lib/eal/common/malloc_heap.h         |  4 ++--
 lib/eal/common/rte_keepalive.c       |  3 ++-
 lib/eal/common/rte_random.c          |  4 ++--
 lib/eal/common/rte_service.c         |  8 ++++----
 lib/eal/include/generic/rte_atomic.h |  4 ++--
 lib/eal/include/rte_common.h         | 23 +++++++++++++++--------
 lib/eal/loongarch/include/rte_vect.h |  8 ++++----
 lib/eal/ppc/include/rte_vect.h       |  4 ++--
 lib/eal/riscv/include/rte_vect.h     |  4 ++--
 lib/eal/x86/include/rte_vect.h       |  4 ++--
 lib/eal/x86/rte_power_intrinsics.c   | 10 ++++++----
 13 files changed, 47 insertions(+), 37 deletions(-)

diff --git a/lib/eal/arm/include/rte_vect.h b/lib/eal/arm/include/rte_vect.h
index 8cfe4bd..c97d299 100644
--- a/lib/eal/arm/include/rte_vect.h
+++ b/lib/eal/arm/include/rte_vect.h
@@ -24,14 +24,14 @@
 #define	XMM_SIZE	(sizeof(xmm_t))
 #define	XMM_MASK	(XMM_SIZE - 1)
 
-typedef union rte_xmm {
+typedef union __rte_aligned(16) rte_xmm {
 	xmm_t    x;
 	uint8_t  u8[XMM_SIZE / sizeof(uint8_t)];
 	uint16_t u16[XMM_SIZE / sizeof(uint16_t)];
 	uint32_t u32[XMM_SIZE / sizeof(uint32_t)];
 	uint64_t u64[XMM_SIZE / sizeof(uint64_t)];
 	double   pd[XMM_SIZE / sizeof(double)];
-} __rte_aligned(16) rte_xmm_t;
+} rte_xmm_t;
 
 #if defined(RTE_ARCH_ARM) && defined(RTE_ARCH_32)
 /* NEON intrinsic vqtbl1q_u8() is not supported in ARMv7-A(AArch32) */
diff --git a/lib/eal/common/malloc_elem.h b/lib/eal/common/malloc_elem.h
index 952ce73..c7ff671 100644
--- a/lib/eal/common/malloc_elem.h
+++ b/lib/eal/common/malloc_elem.h
@@ -20,7 +20,7 @@ enum elem_state {
 	ELEM_PAD  /* element is a padding-only header */
 };
 
-struct malloc_elem {
+struct __rte_cache_aligned malloc_elem {
 	struct malloc_heap *heap;
 	struct malloc_elem *volatile prev;
 	/**< points to prev elem in memseg */
@@ -48,7 +48,7 @@ struct malloc_elem {
 	size_t user_size;
 	uint64_t asan_cookie[2]; /* must be next to header_cookie */
 #endif
-} __rte_cache_aligned;
+};
 
 static const unsigned int MALLOC_ELEM_HEADER_LEN = sizeof(struct malloc_elem);
 
diff --git a/lib/eal/common/malloc_heap.h b/lib/eal/common/malloc_heap.h
index 8f3ab57..0c49588 100644
--- a/lib/eal/common/malloc_heap.h
+++ b/lib/eal/common/malloc_heap.h
@@ -21,7 +21,7 @@
 /**
  * Structure to hold malloc heap
  */
-struct malloc_heap {
+struct __rte_cache_aligned malloc_heap {
 	rte_spinlock_t lock;
 	LIST_HEAD(, malloc_elem) free_head[RTE_HEAP_NUM_FREELISTS];
 	struct malloc_elem *volatile first;
@@ -31,7 +31,7 @@ struct malloc_heap {
 	unsigned int socket_id;
 	size_t total_size;
 	char name[RTE_HEAP_NAME_MAX_LEN];
-} __rte_cache_aligned;
+};
 
 void *
 malloc_heap_alloc(const char *type, size_t size, int socket, unsigned int flags,
diff --git a/lib/eal/common/rte_keepalive.c b/lib/eal/common/rte_keepalive.c
index f6db973..391c1be 100644
--- a/lib/eal/common/rte_keepalive.c
+++ b/lib/eal/common/rte_keepalive.c
@@ -2,6 +2,7 @@
  * Copyright(c) 2015-2016 Intel Corporation
  */
 
+#include <stdalign.h>
 #include <inttypes.h>
 
 #include <rte_common.h>
@@ -19,7 +20,7 @@ struct rte_keepalive {
 		/*
 		 * Each element must be cache aligned to prevent false sharing.
 		 */
-		enum rte_keepalive_state core_state __rte_cache_aligned;
+		alignas(RTE_CACHE_LINE_SIZE) enum rte_keepalive_state core_state;
 	} live_data[RTE_KEEPALIVE_MAXCORES];
 
 	/** Last-seen-alive timestamps */
diff --git a/lib/eal/common/rte_random.c b/lib/eal/common/rte_random.c
index 7709b8f..90e91b3 100644
--- a/lib/eal/common/rte_random.c
+++ b/lib/eal/common/rte_random.c
@@ -13,14 +13,14 @@
 #include <rte_lcore.h>
 #include <rte_random.h>
 
-struct rte_rand_state {
+struct __rte_cache_aligned rte_rand_state {
 	uint64_t z1;
 	uint64_t z2;
 	uint64_t z3;
 	uint64_t z4;
 	uint64_t z5;
 	RTE_CACHE_GUARD;
-} __rte_cache_aligned;
+};
 
 /* One instance each for every lcore id-equipped thread, and one
  * additional instance to be shared by all others threads (i.e., all
diff --git a/lib/eal/common/rte_service.c b/lib/eal/common/rte_service.c
index d959c91..5637993 100644
--- a/lib/eal/common/rte_service.c
+++ b/lib/eal/common/rte_service.c
@@ -32,7 +32,7 @@
 #define RUNSTATE_RUNNING 1
 
 /* internal representation of a service */
-struct rte_service_spec_impl {
+struct __rte_cache_aligned rte_service_spec_impl {
 	/* public part of the struct */
 	struct rte_service_spec spec;
 
@@ -53,7 +53,7 @@ struct rte_service_spec_impl {
 	 * on currently.
 	 */
 	RTE_ATOMIC(uint32_t) num_mapped_cores;
-} __rte_cache_aligned;
+};
 
 struct service_stats {
 	RTE_ATOMIC(uint64_t) calls;
@@ -61,7 +61,7 @@ struct service_stats {
 };
 
 /* the internal values of a service core */
-struct core_state {
+struct __rte_cache_aligned core_state {
 	/* map of services IDs are run on this core */
 	uint64_t service_mask;
 	RTE_ATOMIC(uint8_t) runstate; /* running or stopped */
@@ -71,7 +71,7 @@ struct core_state {
 	RTE_ATOMIC(uint64_t) loops;
 	RTE_ATOMIC(uint64_t) cycles;
 	struct service_stats service_stats[RTE_SERVICE_NUM_MAX];
-} __rte_cache_aligned;
+};
 
 static uint32_t rte_service_count;
 static struct rte_service_spec_impl *rte_services;
diff --git a/lib/eal/include/generic/rte_atomic.h b/lib/eal/include/generic/rte_atomic.h
index 0e639da..f859707 100644
--- a/lib/eal/include/generic/rte_atomic.h
+++ b/lib/eal/include/generic/rte_atomic.h
@@ -1094,7 +1094,7 @@ static inline void rte_atomic64_clear(rte_atomic64_t *v)
 /**
  * 128-bit integer structure.
  */
-typedef struct {
+typedef struct __rte_aligned(16) {
 	union {
 		uint64_t val[2];
 #ifdef RTE_ARCH_64
@@ -1103,7 +1103,7 @@ static inline void rte_atomic64_clear(rte_atomic64_t *v)
 #endif
 #endif
 	};
-} __rte_aligned(16) rte_int128_t;
+} rte_int128_t;
 
 #ifdef __DOXYGEN__
 
diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h
index 1cc1222..0908aa0 100644
--- a/lib/eal/include/rte_common.h
+++ b/lib/eal/include/rte_common.h
@@ -12,6 +12,8 @@
  * for DPDK.
  */
 
+#include <stdalign.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -63,10 +65,19 @@
 #endif
 
 /**
- * Force alignment
+ * Force type alignment
+ *
+ * This macro should be used when alignment of a struct or union type
+ * is required. For toolchain compatibility it should appear between
+ * the {struct,union} keyword and tag. e.g.
+ *
+ *   struct __rte_aligned(8) tag { ... };
+ *
+ * If alignment of an object/variable is required then this macro should
+ * not be used, instead prefer C11 alignas(a).
  */
 #ifdef RTE_TOOLCHAIN_MSVC
-#define __rte_aligned(a)
+#define __rte_aligned(a) __declspec(align(a))
 #else
 #define __rte_aligned(a) __attribute__((__aligned__(a)))
 #endif
@@ -538,18 +549,14 @@ static void __attribute__((destructor(RTE_PRIO(prio)), used)) func(void)
 #define RTE_CACHE_LINE_MIN_SIZE 64
 
 /** Force alignment to cache line. */
-#ifdef RTE_TOOLCHAIN_MSVC
-#define __rte_cache_aligned
-#else
 #define __rte_cache_aligned __rte_aligned(RTE_CACHE_LINE_SIZE)
-#endif
 
 /** Force minimum cache line alignment. */
 #define __rte_cache_min_aligned __rte_aligned(RTE_CACHE_LINE_MIN_SIZE)
 
 #define _RTE_CACHE_GUARD_HELPER2(unique) \
-	char cache_guard_ ## unique[RTE_CACHE_LINE_SIZE * RTE_CACHE_GUARD_LINES] \
-	__rte_cache_aligned
+	alignas(RTE_CACHE_LINE_SIZE) \
+	char cache_guard_ ## unique[RTE_CACHE_LINE_SIZE * RTE_CACHE_GUARD_LINES]
 #define _RTE_CACHE_GUARD_HELPER1(unique) _RTE_CACHE_GUARD_HELPER2(unique)
 /**
  * Empty cache lines, to guard against false sharing-like effects
diff --git a/lib/eal/loongarch/include/rte_vect.h b/lib/eal/loongarch/include/rte_vect.h
index 1546515..aa334e8 100644
--- a/lib/eal/loongarch/include/rte_vect.h
+++ b/lib/eal/loongarch/include/rte_vect.h
@@ -15,7 +15,7 @@
 
 #define RTE_VECT_DEFAULT_SIMD_BITWIDTH RTE_VECT_SIMD_DISABLED
 
-typedef union xmm {
+typedef union __rte_aligned(16) xmm {
 	int8_t   i8[16];
 	int16_t  i16[8];
 	int32_t  i32[4];
@@ -25,19 +25,19 @@
 	uint32_t u32[4];
 	uint64_t u64[2];
 	double   pd[2];
-} __rte_aligned(16) xmm_t;
+} xmm_t;
 
 #define XMM_SIZE        (sizeof(xmm_t))
 #define XMM_MASK        (XMM_SIZE - 1)
 
-typedef union rte_xmm {
+typedef union __rte_aligned(16) rte_xmm {
 	xmm_t	 x;
 	uint8_t	 u8[XMM_SIZE / sizeof(uint8_t)];
 	uint16_t u16[XMM_SIZE / sizeof(uint16_t)];
 	uint32_t u32[XMM_SIZE / sizeof(uint32_t)];
 	uint64_t u64[XMM_SIZE / sizeof(uint64_t)];
 	double   pd[XMM_SIZE / sizeof(double)];
-} __rte_aligned(16) rte_xmm_t;
+} rte_xmm_t;
 
 static inline xmm_t
 vect_load_128(void *p)
diff --git a/lib/eal/ppc/include/rte_vect.h b/lib/eal/ppc/include/rte_vect.h
index a5f009b..c8bace2 100644
--- a/lib/eal/ppc/include/rte_vect.h
+++ b/lib/eal/ppc/include/rte_vect.h
@@ -22,14 +22,14 @@
 #define	XMM_SIZE	(sizeof(xmm_t))
 #define	XMM_MASK	(XMM_SIZE - 1)
 
-typedef union rte_xmm {
+typedef union __rte_aligned(16) rte_xmm {
 	xmm_t    x;
 	uint8_t  u8[XMM_SIZE / sizeof(uint8_t)];
 	uint16_t u16[XMM_SIZE / sizeof(uint16_t)];
 	uint32_t u32[XMM_SIZE / sizeof(uint32_t)];
 	uint64_t u64[XMM_SIZE / sizeof(uint64_t)];
 	double   pd[XMM_SIZE / sizeof(double)];
-} __rte_aligned(16) rte_xmm_t;
+} rte_xmm_t;
 
 #ifdef __cplusplus
 }
diff --git a/lib/eal/riscv/include/rte_vect.h b/lib/eal/riscv/include/rte_vect.h
index da9092a..6df10fa 100644
--- a/lib/eal/riscv/include/rte_vect.h
+++ b/lib/eal/riscv/include/rte_vect.h
@@ -22,14 +22,14 @@
 #define XMM_SIZE	(sizeof(xmm_t))
 #define XMM_MASK	(XMM_SIZE - 1)
 
-typedef union rte_xmm {
+typedef union __rte_aligned(16) rte_xmm {
 	xmm_t		x;
 	uint8_t		u8[XMM_SIZE / sizeof(uint8_t)];
 	uint16_t	u16[XMM_SIZE / sizeof(uint16_t)];
 	uint32_t	u32[XMM_SIZE / sizeof(uint32_t)];
 	uint64_t	u64[XMM_SIZE / sizeof(uint64_t)];
 	double		pd[XMM_SIZE / sizeof(double)];
-} __rte_aligned(16) rte_xmm_t;
+} rte_xmm_t;
 
 static inline xmm_t
 vect_load_128(void *p)
diff --git a/lib/eal/x86/include/rte_vect.h b/lib/eal/x86/include/rte_vect.h
index 560f9e4..a1a537e 100644
--- a/lib/eal/x86/include/rte_vect.h
+++ b/lib/eal/x86/include/rte_vect.h
@@ -91,7 +91,7 @@
 #define RTE_X86_ZMM_SIZE	(sizeof(__m512i))
 #define RTE_X86_ZMM_MASK	(RTE_X86_ZMM_SIZE - 1)
 
-typedef union __rte_x86_zmm {
+typedef union __rte_aligned(RTE_X86_ZMM_SIZE) __rte_x86_zmm {
 	__m512i	 z;
 	ymm_t    y[RTE_X86_ZMM_SIZE / sizeof(ymm_t)];
 	xmm_t    x[RTE_X86_ZMM_SIZE / sizeof(xmm_t)];
@@ -100,7 +100,7 @@
 	uint32_t u32[RTE_X86_ZMM_SIZE / sizeof(uint32_t)];
 	uint64_t u64[RTE_X86_ZMM_SIZE / sizeof(uint64_t)];
 	double   pd[RTE_X86_ZMM_SIZE / sizeof(double)];
-} __rte_aligned(RTE_X86_ZMM_SIZE) __rte_x86_zmm_t;
+} __rte_x86_zmm_t;
 
 #endif /* __AVX512F__ */
 
diff --git a/lib/eal/x86/rte_power_intrinsics.c b/lib/eal/x86/rte_power_intrinsics.c
index 532a2e6..6d9b642 100644
--- a/lib/eal/x86/rte_power_intrinsics.c
+++ b/lib/eal/x86/rte_power_intrinsics.c
@@ -2,6 +2,8 @@
  * Copyright(c) 2020 Intel Corporation
  */
 
+#include <stdalign.h>
+
 #include <rte_common.h>
 #include <rte_lcore.h>
 #include <rte_rtm.h>
@@ -12,10 +14,10 @@
 /*
  * Per-lcore structure holding current status of C0.2 sleeps.
  */
-static struct power_wait_status {
+static alignas(RTE_CACHE_LINE_SIZE) struct power_wait_status {
 	rte_spinlock_t lock;
 	volatile void *monitor_addr; /**< NULL if not currently sleeping */
-} __rte_cache_aligned wait_status[RTE_MAX_LCORE];
+} wait_status[RTE_MAX_LCORE];
 
 /*
  * This function uses UMONITOR/UMWAIT instructions and will enter C0.2 state.
@@ -85,10 +87,10 @@ static void amd_mwaitx(const uint64_t timeout)
 #endif
 }
 
-static struct {
+static alignas(RTE_CACHE_LINE_SIZE) struct {
 	void (*mmonitor)(volatile void *addr);
 	void (*mwait)(const uint64_t timeout);
-} __rte_cache_aligned power_monitor_ops;
+} power_monitor_ops;
 
 static inline void
 __umwait_wakeup(volatile void *addr)
-- 
1.8.3.1


  reply	other threads:[~2024-03-04 17:52 UTC|newest]

Thread overview: 260+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-14  1:26 [PATCH 00/14] use C11 alignas and normalize type alignment Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 01/14] eal: use C11 alignas Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 02/14] stack: " Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 03/14] sched: " Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 04/14] ring: remove unnecessary explicit alignment Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 05/14] pipeline: use C11 alignas Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 06/14] net: " Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 07/14] mbuf: remove unnecessary explicit alignment Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 08/14] hash: use C11 alignas Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 09/14] eventdev: " Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 10/14] ethdev: " Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 11/14] dmadev: " Tyler Retzlaff
2024-02-14  2:09   ` fengchengwen
2024-02-14  1:26 ` [PATCH 12/14] distributor: " Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 13/14] acl: " Tyler Retzlaff
2024-02-14  1:26 ` [PATCH 14/14] eal: redefine macro to be integer literal for MSVC Tyler Retzlaff
2024-02-14  4:17 ` [PATCH v2 00/14] use C11 alignas and normalize type alignment Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 01/14] eal: use C11 alignas Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 02/14] stack: " Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 03/14] sched: " Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 04/14] ring: remove unnecessary explicit alignment Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 05/14] pipeline: use C11 alignas Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 06/14] net: " Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 07/14] mbuf: remove unnecessary explicit alignment Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 08/14] hash: use C11 alignas Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 09/14] eventdev: " Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 10/14] ethdev: " Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 11/14] dmadev: " Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 12/14] distributor: " Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 13/14] acl: " Tyler Retzlaff
2024-02-14  4:17   ` [PATCH v2 14/14] eal: redefine macro to be integer literal for MSVC Tyler Retzlaff
2024-02-14  7:05 ` [PATCH v3 00/39] use C11 alignas and normalize type alignment Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 01/39] eal: use C11 alignas Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 02/39] eal: redefine macro to be integer literal for MSVC Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 03/39] stack: use C11 alignas Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 04/39] sched: " Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 05/39] ring: " Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 06/39] pipeline: " Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 07/39] net: " Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 08/39] mbuf: remove unnecessary explicit alignment Tyler Retzlaff
2024-02-14 13:12     ` David Marchand
2024-02-14 14:28       ` Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 09/39] hash: use C11 alignas Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 10/39] eventdev: " Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 11/39] ethdev: " Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 12/39] dmadev: " Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 13/39] distributor: " Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 14/39] acl: " Tyler Retzlaff
2024-02-14  7:05   ` [PATCH v3 15/39] vhost: " Tyler Retzlaff
2024-02-14 10:37     ` Maxime Coquelin
2024-02-14  7:05   ` [PATCH v3 16/39] timer: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 17/39] table: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 18/39] reorder: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 19/39] regexdev: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 20/39] rcu: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 21/39] power: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 22/39] rawdev: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 23/39] port: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 24/39] pdcp: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 25/39] node: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 26/39] mldev: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 27/39] mempool: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 28/39] member: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 29/39] lpm: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 30/39] ipsec: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 31/39] jobstats: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 32/39] bpf: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 33/39] compressdev: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 34/39] cryptodev: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 35/39] dispatcher: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 36/39] fib: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 37/39] gpudev: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 38/39] graph: " Tyler Retzlaff
2024-02-14  7:06   ` [PATCH v3 39/39] ip_frag: " Tyler Retzlaff
2024-02-14  8:22     ` Morten Brørup
2024-02-14 16:35 ` [PATCH v4 00/39] use C11 alignas and normalize type alignment Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 01/39] eal: use C11 alignas Tyler Retzlaff
2024-02-22  6:43     ` Thomas Monjalon
2024-02-14 16:35   ` [PATCH v4 02/39] eal: redefine macro to be integer literal for MSVC Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 03/39] stack: use C11 alignas Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 04/39] sched: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 05/39] ring: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 06/39] pipeline: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 07/39] net: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 08/39] mbuf: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 09/39] hash: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 10/39] eventdev: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 11/39] ethdev: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 12/39] dmadev: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 13/39] distributor: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 14/39] acl: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 15/39] vhost: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 16/39] timer: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 17/39] table: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 18/39] reorder: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 19/39] regexdev: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 20/39] rcu: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 21/39] power: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 22/39] rawdev: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 23/39] port: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 24/39] pdcp: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 25/39] node: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 26/39] mldev: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 27/39] mempool: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 28/39] member: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 29/39] lpm: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 30/39] ipsec: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 31/39] jobstats: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 32/39] bpf: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 33/39] compressdev: " Tyler Retzlaff
2024-02-14 16:35   ` [PATCH v4 34/39] cryptodev: " Tyler Retzlaff
2024-02-14 16:36   ` [PATCH v4 35/39] dispatcher: " Tyler Retzlaff
2024-02-14 16:36   ` [PATCH v4 36/39] fib: " Tyler Retzlaff
2024-02-14 16:36   ` [PATCH v4 37/39] gpudev: " Tyler Retzlaff
2024-02-14 16:36   ` [PATCH v4 38/39] graph: " Tyler Retzlaff
2024-02-14 16:36   ` [PATCH v4 39/39] ip_frag: " Tyler Retzlaff
2024-02-23 19:03 ` [PATCH v5 00/39] " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 01/39] eal: " Tyler Retzlaff
2024-02-26 11:13     ` Bruce Richardson
2024-02-23 19:03   ` [PATCH v5 02/39] eal: redefine macro to be integer literal for MSVC Tyler Retzlaff
2024-02-26 12:51     ` Konstantin Ananyev
2024-02-26 17:20       ` Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 03/39] stack: use C11 alignas Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 04/39] sched: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 05/39] ring: " Tyler Retzlaff
2024-02-26 13:23     ` Konstantin Ananyev
2024-02-26 17:29       ` Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 06/39] pipeline: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 07/39] net: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 08/39] mbuf: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 09/39] hash: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 10/39] eventdev: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 11/39] ethdev: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 12/39] dmadev: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 13/39] distributor: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 14/39] acl: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 15/39] vhost: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 16/39] timer: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 17/39] table: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 18/39] reorder: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 19/39] regexdev: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 20/39] rcu: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 21/39] power: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 22/39] rawdev: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 23/39] port: " Tyler Retzlaff
2024-02-23 19:03   ` [PATCH v5 24/39] pdcp: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 25/39] node: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 26/39] mldev: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 27/39] mempool: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 28/39] member: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 29/39] lpm: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 30/39] ipsec: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 31/39] jobstats: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 32/39] bpf: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 33/39] compressdev: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 34/39] cryptodev: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 35/39] dispatcher: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 36/39] fib: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 37/39] gpudev: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 38/39] graph: " Tyler Retzlaff
2024-02-23 19:04   ` [PATCH v5 39/39] ip_frag: " Tyler Retzlaff
2024-02-26 18:25 ` [PATCH v6 00/39] " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 01/39] eal: " Tyler Retzlaff
2024-02-27  9:34     ` Konstantin Ananyev
2024-02-26 18:25   ` [PATCH v6 02/39] eal: redefine macro to be integer literal for MSVC Tyler Retzlaff
2024-02-27  9:35     ` Konstantin Ananyev
2024-02-26 18:25   ` [PATCH v6 03/39] stack: use C11 alignas Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 04/39] sched: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 05/39] ring: " Tyler Retzlaff
2024-02-27  9:36     ` Konstantin Ananyev
2024-02-26 18:25   ` [PATCH v6 06/39] pipeline: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 07/39] net: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 08/39] mbuf: " Tyler Retzlaff
2024-02-27  9:40     ` Konstantin Ananyev
2024-02-26 18:25   ` [PATCH v6 09/39] hash: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 10/39] eventdev: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 11/39] ethdev: " Tyler Retzlaff
2024-02-27  9:39     ` Konstantin Ananyev
2024-02-26 18:25   ` [PATCH v6 12/39] dmadev: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 13/39] distributor: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 14/39] acl: " Tyler Retzlaff
2024-02-27  9:38     ` Konstantin Ananyev
2024-02-26 18:25   ` [PATCH v6 15/39] vhost: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 16/39] timer: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 17/39] table: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 18/39] reorder: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 19/39] regexdev: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 20/39] rcu: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 21/39] power: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 22/39] rawdev: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 23/39] port: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 24/39] pdcp: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 25/39] node: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 26/39] mldev: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 27/39] mempool: " Tyler Retzlaff
2024-02-27  9:42     ` Konstantin Ananyev
2024-02-26 18:25   ` [PATCH v6 28/39] member: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 29/39] lpm: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 30/39] ipsec: " Tyler Retzlaff
2024-02-27  9:42     ` Konstantin Ananyev
2024-02-26 18:25   ` [PATCH v6 31/39] jobstats: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 32/39] bpf: " Tyler Retzlaff
2024-02-27  9:43     ` Konstantin Ananyev
2024-02-26 18:25   ` [PATCH v6 33/39] compressdev: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 34/39] cryptodev: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 35/39] dispatcher: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 36/39] fib: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 37/39] gpudev: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 38/39] graph: " Tyler Retzlaff
2024-02-26 18:25   ` [PATCH v6 39/39] ip_frag: " Tyler Retzlaff
2024-02-27  9:44     ` Konstantin Ananyev
2024-03-04 17:52 ` [PATCH v7 00/39] " Tyler Retzlaff
2024-03-04 17:52   ` Tyler Retzlaff [this message]
2024-03-04 17:52   ` [PATCH v7 02/39] eal: redefine macro to be integer literal for MSVC Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 03/39] stack: use C11 alignas Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 04/39] sched: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 05/39] ring: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 06/39] pipeline: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 07/39] net: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 08/39] mbuf: " Tyler Retzlaff
2024-03-05 14:30     ` David Marchand
2024-03-05 17:37       ` Tyler Retzlaff
2024-03-05 20:00         ` David Marchand
2024-03-04 17:52   ` [PATCH v7 09/39] hash: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 10/39] eventdev: " Tyler Retzlaff
2024-03-05 15:47     ` David Marchand
2024-03-05 17:41       ` Tyler Retzlaff
2024-03-06  9:45         ` David Marchand
2024-03-04 17:52   ` [PATCH v7 11/39] ethdev: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 12/39] dmadev: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 13/39] distributor: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 14/39] acl: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 15/39] vhost: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 16/39] timer: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 17/39] table: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 18/39] reorder: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 19/39] regexdev: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 20/39] rcu: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 21/39] power: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 22/39] rawdev: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 23/39] port: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 24/39] pdcp: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 25/39] node: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 26/39] mldev: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 27/39] mempool: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 28/39] member: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 29/39] lpm: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 30/39] ipsec: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 31/39] jobstats: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 32/39] bpf: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 33/39] compressdev: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 34/39] cryptodev: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 35/39] dispatcher: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 36/39] fib: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 37/39] gpudev: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 38/39] graph: " Tyler Retzlaff
2024-03-04 17:52   ` [PATCH v7 39/39] ip_frag: " Tyler Retzlaff
2024-03-05 20:08   ` [PATCH v7 00/39] " David Marchand
2024-03-06  9:55   ` David Marchand
2024-03-06 18:05     ` Tyler Retzlaff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1709574764-9041-2-git-send-email-roretzla@linux.microsoft.com \
    --to=roretzla@linux.microsoft.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=bruce.richardson@intel.com \
    --cc=cristian.dumitrescu@intel.com \
    --cc=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    --cc=drc@linux.vnet.ibm.com \
    --cc=fengchengwen@huawei.com \
    --cc=ferruh.yigit@amd.com \
    --cc=honnappa.nagarahalli@arm.com \
    --cc=jasvinder.singh@intel.com \
    --cc=jerinj@marvell.com \
    --cc=kda@semihalf.com \
    --cc=kevin.laatz@intel.com \
    --cc=konstantin.v.ananyev@yandex.ru \
    --cc=ruifeng.wang@arm.com \
    --cc=sameh.gobriel@intel.com \
    --cc=thomas@monjalon.net \
    --cc=vladimir.medvedkin@intel.com \
    --cc=yipeng1.wang@intel.com \
    --cc=zhoumin@loongson.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).