[dpdk-stable] patch 'eal: fix build with musl' has been queued to stable release 20.11.2

Xueming Li xuemingl at nvidia.com
Mon May 10 18:00:19 CEST 2021


Hi,

FYI, your patch has been queued to stable release 20.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 05/12/21. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/steevenlee/dpdk

This queued commit can be viewed at:
https://github.com/steevenlee/dpdk/commit/efa745cbb2c3ceed88aec922fb75e386d4e6554b

Thanks.

Xueming Li <xuemingl at nvidia.com>

---
>From efa745cbb2c3ceed88aec922fb75e386d4e6554b Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas at monjalon.net>
Date: Thu, 25 Feb 2021 00:21:58 +0100
Subject: [PATCH] eal: fix build with musl
Cc: Luca Boccassi <bluca at debian.org>

[ upstream commit e0473c6d5b18560dd11fd4d7ebc81dea6774f33e ]

In musl libc, cpu_set_t is defined only if _GNU_SOURCE is defined.
In case _GNU_SOURCE is undefined, as in eal_common_errno.c,
it was not possible to include rte_os.h which uses cpu_set_t.

This limitation is removed: if CPU_SETSIZE is not defined,
cpu_set_t related definitions and functions are skipped.
Note: such definitions are unneeded in eal_common_errno.c.

Applications which do not define _GNU_SOURCE may miss cpu_set_t related
features on musl. Such case is detected by RTE_HAS_CPUSET being
undefined,
so functions which depend on rte_cpuset_t will be unavailable.

A missing include of fcntl.h is also added.

Bugzilla ID: 35
Fixes: 11b57c698005 ("eal: fix error string function")
Fixes: 176bb37ca6f3 ("eal: introduce internal wrappers for file
operations")

Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
Signed-off-by: Natanael Copa <ncopa at alpinelinux.org>
Acked-by: Andrew Rybchenko <andrew.rybchenko at oktetlabs.ru>
Acked-by: David Marchand <david.marchand at redhat.com>
---
 doc/api/doxy-api.conf.in                | 3 ++-
 lib/librte_eal/freebsd/include/rte_os.h | 1 +
 lib/librte_eal/include/rte_lcore.h      | 8 ++++++++
 lib/librte_eal/linux/include/rte_os.h   | 3 +++
 lib/librte_eal/unix/eal_file.c          | 1 +
 lib/librte_eal/windows/include/sched.h  | 1 +
 lib/librte_telemetry/rte_telemetry.h    | 4 ++++
 7 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/doc/api/doxy-api.conf.in b/doc/api/doxy-api.conf.in
index 5c883b613b..a536bcb493 100644
--- a/doc/api/doxy-api.conf.in
+++ b/doc/api/doxy-api.conf.in
@@ -80,7 +80,8 @@ INPUT                   += @API_EXAMPLES@
 FILE_PATTERNS           = rte_*.h \
                           cmdline.h
 PREDEFINED              = __DOXYGEN__ \
-			   VFIO_PRESENT \
+                          RTE_HAS_CPUSET \
+                          VFIO_PRESENT \
                           __attribute__(x)=
 
 OPTIMIZE_OUTPUT_FOR_C   = YES
diff --git a/lib/librte_eal/freebsd/include/rte_os.h b/lib/librte_eal/freebsd/include/rte_os.h
index c16f2a30e9..627f0483ab 100644
--- a/lib/librte_eal/freebsd/include/rte_os.h
+++ b/lib/librte_eal/freebsd/include/rte_os.h
@@ -13,6 +13,7 @@
 #include <pthread_np.h>
 
 typedef cpuset_t rte_cpuset_t;
+#define RTE_HAS_CPUSET
 #define RTE_CPU_AND(dst, src1, src2) do \
 { \
 	cpuset_t tmp; \
diff --git a/lib/librte_eal/include/rte_lcore.h b/lib/librte_eal/include/rte_lcore.h
index 48b87e253a..a55fd7496d 100644
--- a/lib/librte_eal/include/rte_lcore.h
+++ b/lib/librte_eal/include/rte_lcore.h
@@ -185,6 +185,8 @@ __rte_experimental
 int
 rte_lcore_to_cpu_id(int lcore_id);
 
+#ifdef RTE_HAS_CPUSET
+
 /**
  * @warning
  * @b EXPERIMENTAL: this API may change without prior notice.
@@ -199,6 +201,8 @@ __rte_experimental
 rte_cpuset_t
 rte_lcore_cpuset(unsigned int lcore_id);
 
+#endif /* RTE_HAS_CPUSET */
+
 /**
  * Test if an lcore is enabled.
  *
@@ -357,6 +361,8 @@ __rte_experimental
 void
 rte_lcore_dump(FILE *f);
 
+#ifdef RTE_HAS_CPUSET
+
 /**
  * Set core affinity of the current thread.
  * Support both EAL and non-EAL thread and update TLS.
@@ -378,6 +384,8 @@ int rte_thread_set_affinity(rte_cpuset_t *cpusetp);
  */
 void rte_thread_get_affinity(rte_cpuset_t *cpusetp);
 
+#endif /* RTE_HAS_CPUSET */
+
 /**
  * Set thread names.
  *
diff --git a/lib/librte_eal/linux/include/rte_os.h b/lib/librte_eal/linux/include/rte_os.h
index 390b87b3a1..1618b4df22 100644
--- a/lib/librte_eal/linux/include/rte_os.h
+++ b/lib/librte_eal/linux/include/rte_os.h
@@ -12,7 +12,9 @@
 
 #include <sched.h>
 
+#ifdef CPU_SETSIZE /* may require _GNU_SOURCE */
 typedef cpu_set_t rte_cpuset_t;
+#define RTE_HAS_CPUSET
 #define RTE_CPU_AND(dst, src1, src2) CPU_AND(dst, src1, src2)
 #define RTE_CPU_OR(dst, src1, src2) CPU_OR(dst, src1, src2)
 #define RTE_CPU_FILL(set) do \
@@ -28,5 +30,6 @@ typedef cpu_set_t rte_cpuset_t;
 	RTE_CPU_FILL(&tmp); \
 	CPU_XOR(dst, &tmp, src); \
 } while (0)
+#endif
 
 #endif /* _RTE_OS_H_ */
diff --git a/lib/librte_eal/unix/eal_file.c b/lib/librte_eal/unix/eal_file.c
index 1b26475ba4..ec554e0096 100644
--- a/lib/librte_eal/unix/eal_file.c
+++ b/lib/librte_eal/unix/eal_file.c
@@ -4,6 +4,7 @@
 
 #include <sys/file.h>
 #include <sys/mman.h>
+#include <fcntl.h>
 #include <unistd.h>
 
 #include <rte_errno.h>
diff --git a/lib/librte_eal/windows/include/sched.h b/lib/librte_eal/windows/include/sched.h
index fbe07f742c..ff572b5dcb 100644
--- a/lib/librte_eal/windows/include/sched.h
+++ b/lib/librte_eal/windows/include/sched.h
@@ -28,6 +28,7 @@ extern "C" {
 typedef struct _rte_cpuset_s {
 	long long _bits[_NUM_SETS(CPU_SETSIZE)];
 } rte_cpuset_t;
+#define RTE_HAS_CPUSET
 
 #define CPU_SET(b, s) ((s)->_bits[_WHICH_SET(b)] |= (1LL << _WHICH_BIT(b)))
 
diff --git a/lib/librte_telemetry/rte_telemetry.h b/lib/librte_telemetry/rte_telemetry.h
index 76172222c9..9cd6d0cd4c 100644
--- a/lib/librte_telemetry/rte_telemetry.h
+++ b/lib/librte_telemetry/rte_telemetry.h
@@ -292,6 +292,8 @@ __rte_experimental
 int
 rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help);
 
+#ifdef RTE_HAS_CPUSET
+
 /**
  * @internal
  * Initialize Telemetry.
@@ -314,6 +316,8 @@ int
 rte_telemetry_init(const char *runtime_dir, rte_cpuset_t *cpuset,
 		const char **err_str);
 
+#endif /* RTE_HAS_CPUSET */
+
 /**
  * Get a pointer to a container with memory allocated. The container is to be
  * used embedded within an existing telemetry dict/array.
-- 
2.25.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2021-05-10 23:59:28.467229800 +0800
+++ 0071-eal-fix-build-with-musl.patch	2021-05-10 23:59:26.430000000 +0800
@@ -1 +1 @@
-From e0473c6d5b18560dd11fd4d7ebc81dea6774f33e Mon Sep 17 00:00:00 2001
+From efa745cbb2c3ceed88aec922fb75e386d4e6554b Mon Sep 17 00:00:00 2001
@@ -4,0 +5,3 @@
+Cc: Luca Boccassi <bluca at debian.org>
+
+[ upstream commit e0473c6d5b18560dd11fd4d7ebc81dea6774f33e ]
@@ -15 +18,2 @@
-features on musl. Such case is detected by RTE_HAS_CPUSET being undefined,
+features on musl. Such case is detected by RTE_HAS_CPUSET being
+undefined,
@@ -22,2 +26,2 @@
-Fixes: 176bb37ca6f3 ("eal: introduce internal wrappers for file operations")
-Cc: stable at dpdk.org
+Fixes: 176bb37ca6f3 ("eal: introduce internal wrappers for file
+operations")
@@ -32,2 +36 @@
- lib/librte_eal/include/rte_lcore.h      | 4 ++++
- lib/librte_eal/include/rte_thread.h     | 4 ++++
+ lib/librte_eal/include/rte_lcore.h      | 8 ++++++++
@@ -38 +41 @@
- 8 files changed, 20 insertions(+), 1 deletion(-)
+ 7 files changed, 20 insertions(+), 1 deletion(-)
@@ -41 +44 @@
-index 5eb31508fd..b3c5cdfeca 100644
+index 5c883b613b..a536bcb493 100644
@@ -44 +47 @@
-@@ -81,7 +81,8 @@ INPUT                   += @API_EXAMPLES@
+@@ -80,7 +80,8 @@ INPUT                   += @API_EXAMPLES@
@@ -67 +70 @@
-index 0fe0bd839c..1550b75da0 100644
+index 48b87e253a..a55fd7496d 100644
@@ -70 +73 @@
-@@ -186,6 +186,8 @@ __rte_experimental
+@@ -185,6 +185,8 @@ __rte_experimental
@@ -79 +82 @@
-@@ -200,6 +202,8 @@ __rte_experimental
+@@ -199,6 +201,8 @@ __rte_experimental
@@ -88,7 +91,3 @@
-diff --git a/lib/librte_eal/include/rte_thread.h b/lib/librte_eal/include/rte_thread.h
-index e640ea1857..ac5a89b1ad 100644
---- a/lib/librte_eal/include/rte_thread.h
-+++ b/lib/librte_eal/include/rte_thread.h
-@@ -25,6 +25,8 @@ extern "C" {
-  */
- typedef struct eal_tls_key *rte_tls_key;
+@@ -357,6 +361,8 @@ __rte_experimental
+ void
+ rte_lcore_dump(FILE *f);
@@ -101 +100 @@
-@@ -46,6 +48,8 @@ int rte_thread_set_affinity(rte_cpuset_t *cpusetp);
+@@ -378,6 +384,8 @@ int rte_thread_set_affinity(rte_cpuset_t *cpusetp);
@@ -108,2 +107,2 @@
-  * Create a TLS data key visible to all threads in the process.
-  * the created key is later used to get/set a value.
+  * Set thread names.
+  *
@@ -156 +155 @@
-index f7c8534b82..027b048d78 100644
+index 76172222c9..9cd6d0cd4c 100644
@@ -169 +168 @@
- rte_telemetry_init(const char *runtime_dir, const char *rte_version, rte_cpuset_t *cpuset,
+ rte_telemetry_init(const char *runtime_dir, rte_cpuset_t *cpuset,


More information about the stable mailing list