diff options
-rw-r--r-- | recipes-extended/dpdk/dpdk/0001-Add-new-tracepoint-function-for-type-time_t.patch | 114 | ||||
-rw-r--r-- | recipes-extended/dpdk/dpdk_23.11.1.bb | 3 |
2 files changed, 116 insertions, 1 deletions
diff --git a/recipes-extended/dpdk/dpdk/0001-Add-new-tracepoint-function-for-type-time_t.patch b/recipes-extended/dpdk/dpdk/0001-Add-new-tracepoint-function-for-type-time_t.patch new file mode 100644 index 0000000..56b4b43 --- /dev/null +++ b/recipes-extended/dpdk/dpdk/0001-Add-new-tracepoint-function-for-type-time_t.patch | |||
@@ -0,0 +1,114 @@ | |||
1 | From a97f93abc34731b73689c0c78bd189a91625779f Mon Sep 17 00:00:00 2001 | ||
2 | From: Changqing Li <changqing.li@windriver.com> | ||
3 | Date: Tue, 29 Apr 2025 10:14:13 +0800 | ||
4 | Subject: [PATCH] Add new tracepoint function for type time_t | ||
5 | |||
6 | To support Y2038 issue, for 32bit system, -D_TIME_BITS=64 is passed to | ||
7 | gcc, struct timespec time->tv_sec is 64bit, but size_t is 32bits, so | ||
8 | dpdk will compile failed with error: | ||
9 | "../git/lib/ethdev/ethdev_trace.h: In function | ||
10 | 'rte_eth_trace_timesync_write_time': | ||
11 | ../git/lib/eal/include/rte_common.h:498:55: error: size of unnamed array | ||
12 | is negative | ||
13 | 498 | #define RTE_BUILD_BUG_ON(condition) ((void)sizeof(char[1 - | ||
14 | 2*!!(condition)]))" | ||
15 | |||
16 | Add a new tracepoint function for type time_t to fix this issue | ||
17 | |||
18 | Upstream-Status: Submitted [https://patchwork.dpdk.org/project/dpdk/patch/20250527120404.2027529-1-changqing.li@windriver.com/] | ||
19 | |||
20 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
21 | --- | ||
22 | lib/eal/common/eal_common_trace_ctf.c | 5 +++++ | ||
23 | lib/eal/include/rte_trace_point.h | 4 ++++ | ||
24 | lib/ethdev/ethdev_trace.h | 8 ++++---- | ||
25 | 3 files changed, 13 insertions(+), 4 deletions(-) | ||
26 | |||
27 | diff --git a/lib/eal/common/eal_common_trace_ctf.c b/lib/eal/common/eal_common_trace_ctf.c | ||
28 | index 04c4f71..055555e 100644 | ||
29 | --- a/lib/eal/common/eal_common_trace_ctf.c | ||
30 | +++ b/lib/eal/common/eal_common_trace_ctf.c | ||
31 | @@ -88,6 +88,11 @@ meta_data_type_emit(char **meta, int *offset) | ||
32 | "typealias integer {size = 64; base = x;} := size_t;\n" | ||
33 | #else | ||
34 | "typealias integer {size = 32; base = x;} := size_t;\n" | ||
35 | +#endif | ||
36 | +#if defined(_TIME_BITS) && _TIME_BITS == 64 | ||
37 | + "typealias integer {size = 64; base = x;} := time_t;\n" | ||
38 | +#else | ||
39 | + "typealias integer {size = 32; base = x;} := time_t;\n" | ||
40 | #endif | ||
41 | "typealias floating_point {\n" | ||
42 | " exp_dig = 8;\n" | ||
43 | diff --git a/lib/eal/include/rte_trace_point.h b/lib/eal/include/rte_trace_point.h | ||
44 | index 41e2a7f..d05422c 100644 | ||
45 | --- a/lib/eal/include/rte_trace_point.h | ||
46 | +++ b/lib/eal/include/rte_trace_point.h | ||
47 | @@ -22,6 +22,7 @@ extern "C" { | ||
48 | |||
49 | #include <stdbool.h> | ||
50 | #include <stdio.h> | ||
51 | +#include <time.h> | ||
52 | |||
53 | #include <rte_branch_prediction.h> | ||
54 | #include <rte_common.h> | ||
55 | @@ -145,6 +146,8 @@ _tp _args \ | ||
56 | #define rte_trace_point_emit_ptr(val) | ||
57 | /** Tracepoint function payload for string datatype */ | ||
58 | #define rte_trace_point_emit_string(val) | ||
59 | +/** Tracepoint function payload for time_t datatype */ | ||
60 | +#define rte_trace_point_emit_time_t(val) | ||
61 | /** | ||
62 | * Tracepoint function to capture a blob. | ||
63 | * | ||
64 | @@ -429,6 +432,7 @@ do { \ | ||
65 | #define rte_trace_point_emit_float(in) __rte_trace_point_emit(in, float) | ||
66 | #define rte_trace_point_emit_double(in) __rte_trace_point_emit(in, double) | ||
67 | #define rte_trace_point_emit_ptr(in) __rte_trace_point_emit(in, uintptr_t) | ||
68 | +#define rte_trace_point_emit_time_t(in) __rte_trace_point_emit(in, time_t) | ||
69 | |||
70 | #endif /* __DOXYGEN__ */ | ||
71 | |||
72 | diff --git a/lib/ethdev/ethdev_trace.h b/lib/ethdev/ethdev_trace.h | ||
73 | index 1b1ae0c..1d0dabb 100644 | ||
74 | --- a/lib/ethdev/ethdev_trace.h | ||
75 | +++ b/lib/ethdev/ethdev_trace.h | ||
76 | @@ -1129,7 +1129,7 @@ RTE_TRACE_POINT( | ||
77 | RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct timespec *time, | ||
78 | int ret), | ||
79 | rte_trace_point_emit_u16(port_id); | ||
80 | - rte_trace_point_emit_size_t(time->tv_sec); | ||
81 | + rte_trace_point_emit_time_t(time->tv_sec); | ||
82 | rte_trace_point_emit_long(time->tv_nsec); | ||
83 | rte_trace_point_emit_int(ret); | ||
84 | ) | ||
85 | @@ -2146,7 +2146,7 @@ RTE_TRACE_POINT_FP( | ||
86 | RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct timespec *timestamp, | ||
87 | uint32_t flags, int ret), | ||
88 | rte_trace_point_emit_u16(port_id); | ||
89 | - rte_trace_point_emit_size_t(timestamp->tv_sec); | ||
90 | + rte_trace_point_emit_time_t(timestamp->tv_sec); | ||
91 | rte_trace_point_emit_long(timestamp->tv_nsec); | ||
92 | rte_trace_point_emit_u32(flags); | ||
93 | rte_trace_point_emit_int(ret); | ||
94 | @@ -2158,7 +2158,7 @@ RTE_TRACE_POINT_FP( | ||
95 | RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct timespec *timestamp, | ||
96 | int ret), | ||
97 | rte_trace_point_emit_u16(port_id); | ||
98 | - rte_trace_point_emit_size_t(timestamp->tv_sec); | ||
99 | + rte_trace_point_emit_time_t(timestamp->tv_sec); | ||
100 | rte_trace_point_emit_long(timestamp->tv_nsec); | ||
101 | rte_trace_point_emit_int(ret); | ||
102 | ) | ||
103 | @@ -2169,7 +2169,7 @@ RTE_TRACE_POINT_FP( | ||
104 | RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct timespec *time, | ||
105 | int ret), | ||
106 | rte_trace_point_emit_u16(port_id); | ||
107 | - rte_trace_point_emit_size_t(time->tv_sec); | ||
108 | + rte_trace_point_emit_time_t(time->tv_sec); | ||
109 | rte_trace_point_emit_long(time->tv_nsec); | ||
110 | rte_trace_point_emit_int(ret); | ||
111 | ) | ||
112 | -- | ||
113 | 2.34.1 | ||
114 | |||
diff --git a/recipes-extended/dpdk/dpdk_23.11.1.bb b/recipes-extended/dpdk/dpdk_23.11.1.bb index b505d55..c2d6a97 100644 --- a/recipes-extended/dpdk/dpdk_23.11.1.bb +++ b/recipes-extended/dpdk/dpdk_23.11.1.bb | |||
@@ -2,7 +2,8 @@ include dpdk.inc | |||
2 | 2 | ||
3 | SRC_URI += " file://0001-config-meson-get-cpu_instruction_set-from-meson-opti.patch \ | 3 | SRC_URI += " file://0001-config-meson-get-cpu_instruction_set-from-meson-opti.patch \ |
4 | file://0001-net-ionic-fix-build-with-Fedora.patch \ | 4 | file://0001-net-ionic-fix-build-with-Fedora.patch \ |
5 | file://0001-net-gve-base-fix-build-with-Fedora.patch" | 5 | file://0001-net-gve-base-fix-build-with-Fedora.patch \ |
6 | file://0001-Add-new-tracepoint-function-for-type-time_t.patch" | ||
6 | 7 | ||
7 | STABLE = "-stable" | 8 | STABLE = "-stable" |
8 | BRANCH = "23.11" | 9 | BRANCH = "23.11" |