summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYogesh Tyagi <yogesh.tyagi@intel.com>2022-09-05 21:57:30 +0800
committerAnuj Mittal <anuj.mittal@intel.com>2022-09-06 09:22:02 +0800
commitec253493263070da3e753c74c366f42659661768 (patch)
tree769fa42545b7d23f96595d0c25b5f28e9b484ded
parent7ad385f8e9d57bae56a48bb5cb82ddeceb8be677 (diff)
downloadmeta-dpdk-ec253493263070da3e753c74c366f42659661768.tar.gz
dpdk/21.11 : update version to 21.11.2
Drops upstreamed patch: * 0002-dma-idxd-fix-AVX2-in-non-datapath-functions.patch Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com> Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
-rw-r--r--recipes-extended/dpdk/dpdk/0002-dma-idxd-fix-AVX2-in-non-datapath-functions.patch171
-rw-r--r--recipes-extended/dpdk/dpdk_21.11.2.bb (renamed from recipes-extended/dpdk/dpdk_21.11.1.bb)3
2 files changed, 1 insertions, 173 deletions
diff --git a/recipes-extended/dpdk/dpdk/0002-dma-idxd-fix-AVX2-in-non-datapath-functions.patch b/recipes-extended/dpdk/dpdk/0002-dma-idxd-fix-AVX2-in-non-datapath-functions.patch
deleted file mode 100644
index 4cd5164..0000000
--- a/recipes-extended/dpdk/dpdk/0002-dma-idxd-fix-AVX2-in-non-datapath-functions.patch
+++ /dev/null
@@ -1,171 +0,0 @@
1From aa802b10237c2f7d3b0d0498de9b2fb438f9b9a2 Mon Sep 17 00:00:00 2001
2From: Bruce Richardson <bruce.richardson@intel.com>
3Date: Fri, 17 Jun 2022 11:59:20 +0100
4Subject: [PATCH] dma/idxd: fix AVX2 in non-datapath functions
5
6While all systems which will use the idxd driver for hardware will
7support AVX2, if the driver is present the initialization functions e.g.
8to register logs, will be called on all systems - irrespective of HW
9support. This can cause issues if the system running DPDK does not have
10AVX2, and the compiler has included AVX instructions in the
11initialization code.
12
13To fix this, remove AVX2 instruction set from the whole build of the
14driver. Instead, we add "target(avx2)" attribute to all datapath
15functions, so those - and only those functions - will having AVX2
16instructions in them.
17
18Bugzilla ID: 1038
19Fixes: 3d36a0a1c7de ("dma/idxd: add data path job submission")
20Cc: stable@dpdk.org
21
22Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
23Acked-by: Conor Walsh <conor.walsh@intel.com>
24
25Upstream-Status: Backport [http://git.dpdk.org/dpdk/commit/?id=aa802b10237c2f7d3b0d0498de9b2fb438f9b9a2]
26
27Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
28---
29 drivers/dma/idxd/idxd_common.c | 23 +++++++++++++++++++++++
30 drivers/dma/idxd/meson.build | 1 -
31 2 files changed, 23 insertions(+), 1 deletion(-)
32
33diff --git a/drivers/dma/idxd/idxd_common.c b/drivers/dma/idxd/idxd_common.c
34index ea6413cc7a..c77200a457 100644
35--- a/drivers/dma/idxd/idxd_common.c
36+++ b/drivers/dma/idxd/idxd_common.c
37@@ -13,12 +13,23 @@
38
39 #define IDXD_PMD_NAME_STR "dmadev_idxd"
40
41+/* systems with DSA all support AVX2 so allow our data-path functions to
42+ * always use at least that instruction set
43+ */
44+#ifndef __AVX2__
45+#define __use_avx2 __attribute__((target("avx2")))
46+#else
47+#define __use_avx2
48+#endif
49+
50+__use_avx2
51 static __rte_always_inline rte_iova_t
52 __desc_idx_to_iova(struct idxd_dmadev *idxd, uint16_t n)
53 {
54 return idxd->desc_iova + (n * sizeof(struct idxd_hw_desc));
55 }
56
57+__use_avx2
58 static __rte_always_inline void
59 __idxd_movdir64b(volatile void *dst, const struct idxd_hw_desc *src)
60 {
61@@ -28,6 +39,7 @@ __idxd_movdir64b(volatile void *dst, const struct idxd_hw_desc *src)
62 : "memory");
63 }
64
65+__use_avx2
66 static __rte_always_inline void
67 __submit(struct idxd_dmadev *idxd)
68 {
69@@ -74,6 +86,7 @@ __submit(struct idxd_dmadev *idxd)
70 _mm256_setzero_si256());
71 }
72
73+__use_avx2
74 static __rte_always_inline int
75 __idxd_write_desc(struct idxd_dmadev *idxd,
76 const uint32_t op_flags,
77@@ -112,6 +125,7 @@ __idxd_write_desc(struct idxd_dmadev *idxd,
78 return job_id;
79 }
80
81+__use_avx2
82 int
83 idxd_enqueue_copy(void *dev_private, uint16_t qid __rte_unused, rte_iova_t src,
84 rte_iova_t dst, unsigned int length, uint64_t flags)
85@@ -126,6 +140,7 @@ idxd_enqueue_copy(void *dev_private, uint16_t qid __rte_unused, rte_iova_t src,
86 flags);
87 }
88
89+__use_avx2
90 int
91 idxd_enqueue_fill(void *dev_private, uint16_t qid __rte_unused, uint64_t pattern,
92 rte_iova_t dst, unsigned int length, uint64_t flags)
93@@ -136,6 +151,7 @@ idxd_enqueue_fill(void *dev_private, uint16_t qid __rte_unused, uint64_t pattern
94 flags);
95 }
96
97+__use_avx2
98 int
99 idxd_submit(void *dev_private, uint16_t qid __rte_unused)
100 {
101@@ -143,6 +159,7 @@ idxd_submit(void *dev_private, uint16_t qid __rte_unused)
102 return 0;
103 }
104
105+__use_avx2
106 static enum rte_dma_status_code
107 get_comp_status(struct idxd_completion *c)
108 {
109@@ -163,6 +180,7 @@ get_comp_status(struct idxd_completion *c)
110 }
111 }
112
113+__use_avx2
114 int
115 idxd_vchan_status(const struct rte_dma_dev *dev, uint16_t vchan __rte_unused,
116 enum rte_dma_vchan_status *status)
117@@ -180,6 +198,7 @@ idxd_vchan_status(const struct rte_dma_dev *dev, uint16_t vchan __rte_unused,
118 return 0;
119 }
120
121+__use_avx2
122 static __rte_always_inline int
123 batch_ok(struct idxd_dmadev *idxd, uint16_t max_ops, enum rte_dma_status_code *status)
124 {
125@@ -224,6 +243,7 @@ batch_ok(struct idxd_dmadev *idxd, uint16_t max_ops, enum rte_dma_status_code *s
126 return -1; /* error case */
127 }
128
129+__use_avx2
130 static inline uint16_t
131 batch_completed(struct idxd_dmadev *idxd, uint16_t max_ops, bool *has_error)
132 {
133@@ -275,6 +295,7 @@ batch_completed(struct idxd_dmadev *idxd, uint16_t max_ops, bool *has_error)
134 return ret;
135 }
136
137+__use_avx2
138 static uint16_t
139 batch_completed_status(struct idxd_dmadev *idxd, uint16_t max_ops, enum rte_dma_status_code *status)
140 {
141@@ -366,6 +387,7 @@ batch_completed_status(struct idxd_dmadev *idxd, uint16_t max_ops, enum rte_dma_
142 return ret;
143 }
144
145+__use_avx2
146 uint16_t
147 idxd_completed(void *dev_private, uint16_t qid __rte_unused, uint16_t max_ops,
148 uint16_t *last_idx, bool *has_error)
149@@ -383,6 +405,7 @@ idxd_completed(void *dev_private, uint16_t qid __rte_unused, uint16_t max_ops,
150 return ret;
151 }
152
153+__use_avx2
154 uint16_t
155 idxd_completed_status(void *dev_private, uint16_t qid __rte_unused, uint16_t max_ops,
156 uint16_t *last_idx, enum rte_dma_status_code *status)
157diff --git a/drivers/dma/idxd/meson.build b/drivers/dma/idxd/meson.build
158index f1396be945..dcc0a297d7 100644
159--- a/drivers/dma/idxd/meson.build
160+++ b/drivers/dma/idxd/meson.build
161@@ -5,7 +5,6 @@ build = dpdk_conf.has('RTE_ARCH_X86')
162 reason = 'only supported on x86'
163
164 deps += ['bus_pci']
165-cflags += '-mavx2' # all platforms with idxd HW support AVX
166 sources = files(
167 'idxd_common.c',
168 'idxd_pci.c',
169--
1702.32.0
171
diff --git a/recipes-extended/dpdk/dpdk_21.11.1.bb b/recipes-extended/dpdk/dpdk_21.11.2.bb
index 0b7dd75..570648a 100644
--- a/recipes-extended/dpdk/dpdk_21.11.1.bb
+++ b/recipes-extended/dpdk/dpdk_21.11.2.bb
@@ -2,12 +2,11 @@ include dpdk.inc
2 2
3SRC_URI += " \ 3SRC_URI += " \
4 file://0001-meson.build-march-and-mcpu-already-passed-by-Yocto-21.11.patch \ 4 file://0001-meson.build-march-and-mcpu-already-passed-by-Yocto-21.11.patch \
5 file://0002-dma-idxd-fix-AVX2-in-non-datapath-functions.patch \
6" 5"
7 6
8STABLE = "-stable" 7STABLE = "-stable"
9BRANCH = "21.11" 8BRANCH = "21.11"
10SRCREV = "fcd039e4663bf2b595d7af3a8175a3e0bc09b367" 9SRCREV = "7bcd45ce824d0ea2a9f30d16855613a93521851b"
11S = "${WORKDIR}/git" 10S = "${WORKDIR}/git"
12 11
13# CVE-2021-3839 has been fixed by commit 4c40d30d2b in 21.11.1 12# CVE-2021-3839 has been fixed by commit 4c40d30d2b in 21.11.1