diff options
Diffstat (limited to 'meta/recipes-kernel/lttng/lttng-modules/0009-fix-tracepoint-Optimize-using-static_call-v5.10.patch')
-rw-r--r-- | meta/recipes-kernel/lttng/lttng-modules/0009-fix-tracepoint-Optimize-using-static_call-v5.10.patch | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0009-fix-tracepoint-Optimize-using-static_call-v5.10.patch b/meta/recipes-kernel/lttng/lttng-modules/0009-fix-tracepoint-Optimize-using-static_call-v5.10.patch deleted file mode 100644 index b942aa5c95..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0009-fix-tracepoint-Optimize-using-static_call-v5.10.patch +++ /dev/null | |||
@@ -1,155 +0,0 @@ | |||
1 | From c6b31b349fe901a8f586a66064f9e9b15449ac1c Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Jeanson <mjeanson@efficios.com> | ||
3 | Date: Mon, 26 Oct 2020 17:09:05 -0400 | ||
4 | Subject: [PATCH 09/16] fix: tracepoint: Optimize using static_call() (v5.10) | ||
5 | |||
6 | See upstream commit : | ||
7 | |||
8 | commit d25e37d89dd2f41d7acae0429039d2f0ae8b4a07 | ||
9 | Author: Steven Rostedt (VMware) <rostedt@goodmis.org> | ||
10 | Date: Tue Aug 18 15:57:52 2020 +0200 | ||
11 | |||
12 | tracepoint: Optimize using static_call() | ||
13 | |||
14 | Currently the tracepoint site will iterate a vector and issue indirect | ||
15 | calls to however many handlers are registered (ie. the vector is | ||
16 | long). | ||
17 | |||
18 | Using static_call() it is possible to optimize this for the common | ||
19 | case of only having a single handler registered. In this case the | ||
20 | static_call() can directly call this handler. Otherwise, if the vector | ||
21 | is longer than 1, call a function that iterates the whole vector like | ||
22 | the current code. | ||
23 | |||
24 | Upstream-Status: Backport | ||
25 | |||
26 | Change-Id: I739dd84d62cc1a821b8bd8acff74fa29aa25d22f | ||
27 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> | ||
28 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
29 | --- | ||
30 | lttng-statedump-impl.c | 44 ++++++++++++++++++++++++++++++++------- | ||
31 | probes/lttng.c | 7 +++++-- | ||
32 | tests/probes/lttng-test.c | 7 ++++++- | ||
33 | wrapper/tracepoint.h | 8 +++++++ | ||
34 | 4 files changed, 56 insertions(+), 10 deletions(-) | ||
35 | |||
36 | diff --git a/lttng-statedump-impl.c b/lttng-statedump-impl.c | ||
37 | index 54a309d1..e0b19b42 100644 | ||
38 | --- a/lttng-statedump-impl.c | ||
39 | +++ b/lttng-statedump-impl.c | ||
40 | @@ -55,13 +55,43 @@ | ||
41 | #define LTTNG_INSTRUMENTATION | ||
42 | #include <instrumentation/events/lttng-module/lttng-statedump.h> | ||
43 | |||
44 | -DEFINE_TRACE(lttng_statedump_block_device); | ||
45 | -DEFINE_TRACE(lttng_statedump_end); | ||
46 | -DEFINE_TRACE(lttng_statedump_interrupt); | ||
47 | -DEFINE_TRACE(lttng_statedump_file_descriptor); | ||
48 | -DEFINE_TRACE(lttng_statedump_start); | ||
49 | -DEFINE_TRACE(lttng_statedump_process_state); | ||
50 | -DEFINE_TRACE(lttng_statedump_network_interface); | ||
51 | +LTTNG_DEFINE_TRACE(lttng_statedump_block_device, | ||
52 | + TP_PROTO(struct lttng_session *session, | ||
53 | + dev_t dev, const char *diskname), | ||
54 | + TP_ARGS(session, dev, diskname)); | ||
55 | + | ||
56 | +LTTNG_DEFINE_TRACE(lttng_statedump_end, | ||
57 | + TP_PROTO(struct lttng_session *session), | ||
58 | + TP_ARGS(session)); | ||
59 | + | ||
60 | +LTTNG_DEFINE_TRACE(lttng_statedump_interrupt, | ||
61 | + TP_PROTO(struct lttng_session *session, | ||
62 | + unsigned int irq, const char *chip_name, | ||
63 | + struct irqaction *action), | ||
64 | + TP_ARGS(session, irq, chip_name, action)); | ||
65 | + | ||
66 | +LTTNG_DEFINE_TRACE(lttng_statedump_file_descriptor, | ||
67 | + TP_PROTO(struct lttng_session *session, | ||
68 | + struct files_struct *files, | ||
69 | + int fd, const char *filename, | ||
70 | + unsigned int flags, fmode_t fmode), | ||
71 | + TP_ARGS(session, files, fd, filename, flags, fmode)); | ||
72 | + | ||
73 | +LTTNG_DEFINE_TRACE(lttng_statedump_start, | ||
74 | + TP_PROTO(struct lttng_session *session), | ||
75 | + TP_ARGS(session)); | ||
76 | + | ||
77 | +LTTNG_DEFINE_TRACE(lttng_statedump_process_state, | ||
78 | + TP_PROTO(struct lttng_session *session, | ||
79 | + struct task_struct *p, | ||
80 | + int type, int mode, int submode, int status, | ||
81 | + struct files_struct *files), | ||
82 | + TP_ARGS(session, p, type, mode, submode, status, files)); | ||
83 | + | ||
84 | +LTTNG_DEFINE_TRACE(lttng_statedump_network_interface, | ||
85 | + TP_PROTO(struct lttng_session *session, | ||
86 | + struct net_device *dev, struct in_ifaddr *ifa), | ||
87 | + TP_ARGS(session, dev, ifa)); | ||
88 | |||
89 | struct lttng_fd_ctx { | ||
90 | char *page; | ||
91 | diff --git a/probes/lttng.c b/probes/lttng.c | ||
92 | index 05bc1388..7ddaa69f 100644 | ||
93 | --- a/probes/lttng.c | ||
94 | +++ b/probes/lttng.c | ||
95 | @@ -8,7 +8,7 @@ | ||
96 | */ | ||
97 | |||
98 | #include <linux/module.h> | ||
99 | -#include <linux/tracepoint.h> | ||
100 | +#include <wrapper/tracepoint.h> | ||
101 | #include <linux/uaccess.h> | ||
102 | #include <linux/gfp.h> | ||
103 | #include <linux/fs.h> | ||
104 | @@ -32,7 +32,10 @@ | ||
105 | #define LTTNG_LOGGER_COUNT_MAX 1024 | ||
106 | #define LTTNG_LOGGER_FILE "lttng-logger" | ||
107 | |||
108 | -DEFINE_TRACE(lttng_logger); | ||
109 | +LTTNG_DEFINE_TRACE(lttng_logger, | ||
110 | + PARAMS(const char __user *text, size_t len), | ||
111 | + PARAMS(text, len) | ||
112 | +); | ||
113 | |||
114 | static struct proc_dir_entry *lttng_logger_dentry; | ||
115 | |||
116 | diff --git a/tests/probes/lttng-test.c b/tests/probes/lttng-test.c | ||
117 | index c728bed5..8f2d3feb 100644 | ||
118 | --- a/tests/probes/lttng-test.c | ||
119 | +++ b/tests/probes/lttng-test.c | ||
120 | @@ -26,7 +26,12 @@ | ||
121 | #define LTTNG_INSTRUMENTATION | ||
122 | #include <instrumentation/events/lttng-module/lttng-test.h> | ||
123 | |||
124 | -DEFINE_TRACE(lttng_test_filter_event); | ||
125 | +LTTNG_DEFINE_TRACE(lttng_test_filter_event, | ||
126 | + PARAMS(int anint, int netint, long *values, | ||
127 | + char *text, size_t textlen, | ||
128 | + char *etext, uint32_t * net_values), | ||
129 | + PARAMS(anint, netint, values, text, textlen, etext, net_values) | ||
130 | +); | ||
131 | |||
132 | #define LTTNG_TEST_FILTER_EVENT_FILE "lttng-test-filter-event" | ||
133 | |||
134 | diff --git a/wrapper/tracepoint.h b/wrapper/tracepoint.h | ||
135 | index 3883e11a..758038b6 100644 | ||
136 | --- a/wrapper/tracepoint.h | ||
137 | +++ b/wrapper/tracepoint.h | ||
138 | @@ -20,6 +20,14 @@ | ||
139 | |||
140 | #endif | ||
141 | |||
142 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,10,0)) | ||
143 | +#define LTTNG_DEFINE_TRACE(name, proto, args) \ | ||
144 | + DEFINE_TRACE(name, PARAMS(proto), PARAMS(args)) | ||
145 | +#else | ||
146 | +#define LTTNG_DEFINE_TRACE(name, proto, args) \ | ||
147 | + DEFINE_TRACE(name) | ||
148 | +#endif | ||
149 | + | ||
150 | #ifndef HAVE_KABI_2635_TRACEPOINT | ||
151 | |||
152 | #define kabi_2635_tracepoint_probe_register tracepoint_probe_register | ||
153 | -- | ||
154 | 2.25.1 | ||
155 | |||