diff options
Diffstat (limited to 'meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch')
-rw-r--r-- | meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch | 394 |
1 files changed, 0 insertions, 394 deletions
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch deleted file mode 100644 index 08ad2ddaa8..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch +++ /dev/null | |||
@@ -1,394 +0,0 @@ | |||
1 | From 8be4c8a38ee1e297578e094a6e4c143ec5259aba Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Jeanson <mjeanson@efficios.com> | ||
3 | Date: Mon, 13 Sep 2021 12:00:38 -0400 | ||
4 | Subject: [PATCH 1/2] fix: cpu/hotplug: Remove deprecated CPU-hotplug | ||
5 | functions. (v5.15) | ||
6 | |||
7 | The CPU-hotplug functions get|put_online_cpus() were deprecated in v4.13 | ||
8 | and removed in v5.15. | ||
9 | |||
10 | See upstream commits : | ||
11 | |||
12 | commit 8c854303ce0e38e5bbedd725ff39da7e235865d8 | ||
13 | Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de> | ||
14 | Date: Tue Aug 3 16:16:21 2021 +0200 | ||
15 | |||
16 | cpu/hotplug: Remove deprecated CPU-hotplug functions. | ||
17 | |||
18 | No users in tree use the deprecated CPU-hotplug functions anymore. | ||
19 | |||
20 | Remove them. | ||
21 | |||
22 | Introduced in v4.13 : | ||
23 | |||
24 | commit 8f553c498e1772cccb39a114da4a498d22992758 | ||
25 | Author: Thomas Gleixner <tglx@linutronix.de> | ||
26 | Date: Wed May 24 10:15:12 2017 +0200 | ||
27 | |||
28 | cpu/hotplug: Provide cpus_read|write_[un]lock() | ||
29 | |||
30 | The counting 'rwsem' hackery of get|put_online_cpus() is going to be | ||
31 | replaced by percpu rwsem. | ||
32 | |||
33 | Rename the functions to make it clear that it's locking and not some | ||
34 | refcount style interface. These new functions will be used for the | ||
35 | preparatory patches which make the code ready for the percpu rwsem | ||
36 | conversion. | ||
37 | |||
38 | Rename all instances in the cpu hotplug code while at it. | ||
39 | |||
40 | Upstream-Status: Backport [https://git.lttng.org/?p=lttng-modules.git;a=commit;h=ffcc873470121ef1ebb110df3d9038a38d9cb7cb] | ||
41 | |||
42 | Change-Id: I5a37cf5afc075a402b7347989fac637dfa60a1ed | ||
43 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> | ||
44 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
45 | --- | ||
46 | include/wrapper/cpu.h | 44 +++++++++++++++++++++++ | ||
47 | src/lib/ringbuffer/ring_buffer_backend.c | 8 ++--- | ||
48 | src/lib/ringbuffer/ring_buffer_frontend.c | 17 ++++----- | ||
49 | src/lib/ringbuffer/ring_buffer_iterator.c | 15 ++++---- | ||
50 | src/lttng-context-perf-counters.c | 11 +++--- | ||
51 | src/lttng-statedump-impl.c | 6 ++-- | ||
52 | 6 files changed, 74 insertions(+), 27 deletions(-) | ||
53 | create mode 100644 include/wrapper/cpu.h | ||
54 | |||
55 | diff --git a/include/wrapper/cpu.h b/include/wrapper/cpu.h | ||
56 | new file mode 100644 | ||
57 | index 00000000..cbee1962 | ||
58 | --- /dev/null | ||
59 | +++ b/include/wrapper/cpu.h | ||
60 | @@ -0,0 +1,44 @@ | ||
61 | +/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) | ||
62 | + * | ||
63 | + * wrapper/cpu.h | ||
64 | + * | ||
65 | + * Copyright (C) 2021 Michael Jeanson <mjeanson@efficios.com> | ||
66 | + */ | ||
67 | + | ||
68 | +#ifndef _LTTNG_WRAPPER_CPU_H | ||
69 | +#define _LTTNG_WRAPPER_CPU_H | ||
70 | + | ||
71 | +#include <linux/cpu.h> | ||
72 | +#include <lttng/kernel-version.h> | ||
73 | + | ||
74 | +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0)) | ||
75 | + | ||
76 | +static inline | ||
77 | +void lttng_cpus_read_lock(void) | ||
78 | +{ | ||
79 | + cpus_read_lock(); | ||
80 | +} | ||
81 | + | ||
82 | +static inline | ||
83 | +void lttng_cpus_read_unlock(void) | ||
84 | +{ | ||
85 | + cpus_read_unlock(); | ||
86 | +} | ||
87 | + | ||
88 | +#else /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0) */ | ||
89 | + | ||
90 | +static inline | ||
91 | +void lttng_cpus_read_lock(void) | ||
92 | +{ | ||
93 | + get_online_cpus(); | ||
94 | +} | ||
95 | + | ||
96 | +static inline | ||
97 | +void lttng_cpus_read_unlock(void) | ||
98 | +{ | ||
99 | + put_online_cpus(); | ||
100 | +} | ||
101 | + | ||
102 | +#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0) */ | ||
103 | + | ||
104 | +#endif /* _LTTNG_WRAPPER_CPU_H */ | ||
105 | diff --git a/src/lib/ringbuffer/ring_buffer_backend.c b/src/lib/ringbuffer/ring_buffer_backend.c | ||
106 | index 26efb2bc..9a339be0 100644 | ||
107 | --- a/src/lib/ringbuffer/ring_buffer_backend.c | ||
108 | +++ b/src/lib/ringbuffer/ring_buffer_backend.c | ||
109 | @@ -12,10 +12,10 @@ | ||
110 | #include <linux/delay.h> | ||
111 | #include <linux/errno.h> | ||
112 | #include <linux/slab.h> | ||
113 | -#include <linux/cpu.h> | ||
114 | #include <linux/mm.h> | ||
115 | #include <linux/vmalloc.h> | ||
116 | |||
117 | +#include <wrapper/cpu.h> | ||
118 | #include <wrapper/mm.h> | ||
119 | #include <wrapper/vmalloc.h> /* for wrapper_vmalloc_sync_mappings() */ | ||
120 | #include <ringbuffer/config.h> | ||
121 | @@ -445,14 +445,14 @@ int channel_backend_init(struct channel_backend *chanb, | ||
122 | chanb->cpu_hp_notifier.priority = 5; | ||
123 | register_hotcpu_notifier(&chanb->cpu_hp_notifier); | ||
124 | |||
125 | - get_online_cpus(); | ||
126 | + lttng_cpus_read_lock(); | ||
127 | for_each_online_cpu(i) { | ||
128 | ret = lib_ring_buffer_create(per_cpu_ptr(chanb->buf, i), | ||
129 | chanb, i); | ||
130 | if (ret) | ||
131 | goto free_bufs; /* cpu hotplug locked */ | ||
132 | } | ||
133 | - put_online_cpus(); | ||
134 | + lttng_cpus_read_unlock(); | ||
135 | #else | ||
136 | for_each_possible_cpu(i) { | ||
137 | ret = lib_ring_buffer_create(per_cpu_ptr(chanb->buf, i), | ||
138 | @@ -485,7 +485,7 @@ free_bufs: | ||
139 | */ | ||
140 | #else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */ | ||
141 | #ifdef CONFIG_HOTPLUG_CPU | ||
142 | - put_online_cpus(); | ||
143 | + lttng_cpus_read_unlock(); | ||
144 | unregister_hotcpu_notifier(&chanb->cpu_hp_notifier); | ||
145 | #endif | ||
146 | #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */ | ||
147 | diff --git a/src/lib/ringbuffer/ring_buffer_frontend.c b/src/lib/ringbuffer/ring_buffer_frontend.c | ||
148 | index e9056118..87a575d0 100644 | ||
149 | --- a/src/lib/ringbuffer/ring_buffer_frontend.c | ||
150 | +++ b/src/lib/ringbuffer/ring_buffer_frontend.c | ||
151 | @@ -48,6 +48,7 @@ | ||
152 | #include <ringbuffer/iterator.h> | ||
153 | #include <ringbuffer/nohz.h> | ||
154 | #include <wrapper/atomic.h> | ||
155 | +#include <wrapper/cpu.h> | ||
156 | #include <wrapper/kref.h> | ||
157 | #include <wrapper/percpu-defs.h> | ||
158 | #include <wrapper/timer.h> | ||
159 | @@ -724,7 +725,7 @@ static void channel_unregister_notifiers(struct lttng_kernel_ring_buffer_channel | ||
160 | int cpu; | ||
161 | |||
162 | #ifdef CONFIG_HOTPLUG_CPU | ||
163 | - get_online_cpus(); | ||
164 | + lttng_cpus_read_lock(); | ||
165 | chan->cpu_hp_enable = 0; | ||
166 | for_each_online_cpu(cpu) { | ||
167 | struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, | ||
168 | @@ -732,7 +733,7 @@ static void channel_unregister_notifiers(struct lttng_kernel_ring_buffer_channel | ||
169 | lib_ring_buffer_stop_switch_timer(buf); | ||
170 | lib_ring_buffer_stop_read_timer(buf); | ||
171 | } | ||
172 | - put_online_cpus(); | ||
173 | + lttng_cpus_read_unlock(); | ||
174 | unregister_cpu_notifier(&chan->cpu_hp_notifier); | ||
175 | #else | ||
176 | for_each_possible_cpu(cpu) { | ||
177 | @@ -772,14 +773,14 @@ void lib_ring_buffer_set_quiescent_channel(struct lttng_kernel_ring_buffer_chann | ||
178 | const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config; | ||
179 | |||
180 | if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) { | ||
181 | - get_online_cpus(); | ||
182 | + lttng_cpus_read_lock(); | ||
183 | for_each_channel_cpu(cpu, chan) { | ||
184 | struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, | ||
185 | cpu); | ||
186 | |||
187 | lib_ring_buffer_set_quiescent(buf); | ||
188 | } | ||
189 | - put_online_cpus(); | ||
190 | + lttng_cpus_read_unlock(); | ||
191 | } else { | ||
192 | struct lttng_kernel_ring_buffer *buf = chan->backend.buf; | ||
193 | |||
194 | @@ -794,14 +795,14 @@ void lib_ring_buffer_clear_quiescent_channel(struct lttng_kernel_ring_buffer_cha | ||
195 | const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config; | ||
196 | |||
197 | if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) { | ||
198 | - get_online_cpus(); | ||
199 | + lttng_cpus_read_lock(); | ||
200 | for_each_channel_cpu(cpu, chan) { | ||
201 | struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, | ||
202 | cpu); | ||
203 | |||
204 | lib_ring_buffer_clear_quiescent(buf); | ||
205 | } | ||
206 | - put_online_cpus(); | ||
207 | + lttng_cpus_read_unlock(); | ||
208 | } else { | ||
209 | struct lttng_kernel_ring_buffer *buf = chan->backend.buf; | ||
210 | |||
211 | @@ -899,7 +900,7 @@ struct lttng_kernel_ring_buffer_channel *channel_create(const struct lttng_kerne | ||
212 | chan->cpu_hp_notifier.priority = 6; | ||
213 | register_cpu_notifier(&chan->cpu_hp_notifier); | ||
214 | |||
215 | - get_online_cpus(); | ||
216 | + lttng_cpus_read_lock(); | ||
217 | for_each_online_cpu(cpu) { | ||
218 | struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, | ||
219 | cpu); | ||
220 | @@ -909,7 +910,7 @@ struct lttng_kernel_ring_buffer_channel *channel_create(const struct lttng_kerne | ||
221 | spin_unlock(&per_cpu(ring_buffer_nohz_lock, cpu)); | ||
222 | } | ||
223 | chan->cpu_hp_enable = 1; | ||
224 | - put_online_cpus(); | ||
225 | + lttng_cpus_read_unlock(); | ||
226 | #else | ||
227 | for_each_possible_cpu(cpu) { | ||
228 | struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, | ||
229 | diff --git a/src/lib/ringbuffer/ring_buffer_iterator.c b/src/lib/ringbuffer/ring_buffer_iterator.c | ||
230 | index 25839af6..60c95ca6 100644 | ||
231 | --- a/src/lib/ringbuffer/ring_buffer_iterator.c | ||
232 | +++ b/src/lib/ringbuffer/ring_buffer_iterator.c | ||
233 | @@ -10,6 +10,7 @@ | ||
234 | */ | ||
235 | |||
236 | #include <ringbuffer/iterator.h> | ||
237 | +#include <wrapper/cpu.h> | ||
238 | #include <wrapper/file.h> | ||
239 | #include <wrapper/uaccess.h> | ||
240 | #include <linux/jiffies.h> | ||
241 | @@ -440,13 +441,13 @@ int channel_iterator_init(struct lttng_kernel_ring_buffer_channel *chan) | ||
242 | chan->hp_iter_notifier.priority = 10; | ||
243 | register_cpu_notifier(&chan->hp_iter_notifier); | ||
244 | |||
245 | - get_online_cpus(); | ||
246 | + lttng_cpus_read_lock(); | ||
247 | for_each_online_cpu(cpu) { | ||
248 | buf = per_cpu_ptr(chan->backend.buf, cpu); | ||
249 | lib_ring_buffer_iterator_init(chan, buf); | ||
250 | } | ||
251 | chan->hp_iter_enable = 1; | ||
252 | - put_online_cpus(); | ||
253 | + lttng_cpus_read_unlock(); | ||
254 | #else | ||
255 | for_each_possible_cpu(cpu) { | ||
256 | buf = per_cpu_ptr(chan->backend.buf, cpu); | ||
257 | @@ -519,7 +520,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan) | ||
258 | CHAN_WARN_ON(chan, config->output != RING_BUFFER_ITERATOR); | ||
259 | |||
260 | if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) { | ||
261 | - get_online_cpus(); | ||
262 | + lttng_cpus_read_lock(); | ||
263 | /* Allow CPU hotplug to keep track of opened reader */ | ||
264 | chan->iter.read_open = 1; | ||
265 | for_each_channel_cpu(cpu, chan) { | ||
266 | @@ -529,7 +530,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan) | ||
267 | goto error; | ||
268 | buf->iter.read_open = 1; | ||
269 | } | ||
270 | - put_online_cpus(); | ||
271 | + lttng_cpus_read_unlock(); | ||
272 | } else { | ||
273 | buf = channel_get_ring_buffer(config, chan, 0); | ||
274 | ret = lib_ring_buffer_iterator_open(buf); | ||
275 | @@ -538,7 +539,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan) | ||
276 | error: | ||
277 | /* Error should always happen on CPU 0, hence no close is required. */ | ||
278 | CHAN_WARN_ON(chan, cpu != 0); | ||
279 | - put_online_cpus(); | ||
280 | + lttng_cpus_read_unlock(); | ||
281 | return ret; | ||
282 | } | ||
283 | EXPORT_SYMBOL_GPL(channel_iterator_open); | ||
284 | @@ -550,7 +551,7 @@ void channel_iterator_release(struct lttng_kernel_ring_buffer_channel *chan) | ||
285 | int cpu; | ||
286 | |||
287 | if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) { | ||
288 | - get_online_cpus(); | ||
289 | + lttng_cpus_read_lock(); | ||
290 | for_each_channel_cpu(cpu, chan) { | ||
291 | buf = channel_get_ring_buffer(config, chan, cpu); | ||
292 | if (buf->iter.read_open) { | ||
293 | @@ -559,7 +560,7 @@ void channel_iterator_release(struct lttng_kernel_ring_buffer_channel *chan) | ||
294 | } | ||
295 | } | ||
296 | chan->iter.read_open = 0; | ||
297 | - put_online_cpus(); | ||
298 | + lttng_cpus_read_unlock(); | ||
299 | } else { | ||
300 | buf = channel_get_ring_buffer(config, chan, 0); | ||
301 | lib_ring_buffer_iterator_release(buf); | ||
302 | diff --git a/src/lttng-context-perf-counters.c b/src/lttng-context-perf-counters.c | ||
303 | index b0227d47..372f05e0 100644 | ||
304 | --- a/src/lttng-context-perf-counters.c | ||
305 | +++ b/src/lttng-context-perf-counters.c | ||
306 | @@ -16,6 +16,7 @@ | ||
307 | #include <lttng/events.h> | ||
308 | #include <lttng/events-internal.h> | ||
309 | #include <ringbuffer/frontend_types.h> | ||
310 | +#include <wrapper/cpu.h> | ||
311 | #include <wrapper/vmalloc.h> | ||
312 | #include <wrapper/perf.h> | ||
313 | #include <lttng/tracer.h> | ||
314 | @@ -97,10 +98,10 @@ void lttng_destroy_perf_counter_ctx_field(void *priv) | ||
315 | { | ||
316 | int cpu; | ||
317 | |||
318 | - get_online_cpus(); | ||
319 | + lttng_cpus_read_lock(); | ||
320 | for_each_online_cpu(cpu) | ||
321 | perf_event_release_kernel(events[cpu]); | ||
322 | - put_online_cpus(); | ||
323 | + lttng_cpus_read_unlock(); | ||
324 | #ifdef CONFIG_HOTPLUG_CPU | ||
325 | unregister_cpu_notifier(&perf_field->nb); | ||
326 | #endif | ||
327 | @@ -304,7 +305,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type, | ||
328 | perf_field->nb.priority = 0; | ||
329 | register_cpu_notifier(&perf_field->nb); | ||
330 | #endif | ||
331 | - get_online_cpus(); | ||
332 | + lttng_cpus_read_lock(); | ||
333 | for_each_online_cpu(cpu) { | ||
334 | events[cpu] = wrapper_perf_event_create_kernel_counter(attr, | ||
335 | cpu, NULL, overflow_callback); | ||
336 | @@ -317,7 +318,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type, | ||
337 | goto counter_busy; | ||
338 | } | ||
339 | } | ||
340 | - put_online_cpus(); | ||
341 | + lttng_cpus_read_unlock(); | ||
342 | perf_field->hp_enable = 1; | ||
343 | } | ||
344 | #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */ | ||
345 | @@ -351,7 +352,7 @@ counter_error: | ||
346 | if (events[cpu] && !IS_ERR(events[cpu])) | ||
347 | perf_event_release_kernel(events[cpu]); | ||
348 | } | ||
349 | - put_online_cpus(); | ||
350 | + lttng_cpus_read_unlock(); | ||
351 | #ifdef CONFIG_HOTPLUG_CPU | ||
352 | unregister_cpu_notifier(&perf_field->nb); | ||
353 | #endif | ||
354 | diff --git a/src/lttng-statedump-impl.c b/src/lttng-statedump-impl.c | ||
355 | index 4dfbca0b..2b42783a 100644 | ||
356 | --- a/src/lttng-statedump-impl.c | ||
357 | +++ b/src/lttng-statedump-impl.c | ||
358 | @@ -23,7 +23,6 @@ | ||
359 | #include <linux/file.h> | ||
360 | #include <linux/interrupt.h> | ||
361 | #include <linux/irqnr.h> | ||
362 | -#include <linux/cpu.h> | ||
363 | #include <linux/netdevice.h> | ||
364 | #include <linux/inetdevice.h> | ||
365 | #include <linux/mm.h> | ||
366 | @@ -34,6 +33,7 @@ | ||
367 | |||
368 | #include <lttng/events.h> | ||
369 | #include <lttng/tracer.h> | ||
370 | +#include <wrapper/cpu.h> | ||
371 | #include <wrapper/irqdesc.h> | ||
372 | #include <wrapper/fdtable.h> | ||
373 | #include <wrapper/namespace.h> | ||
374 | @@ -770,7 +770,7 @@ int do_lttng_statedump(struct lttng_kernel_session *session) | ||
375 | * is to guarantee that each CPU has been in a state where is was in | ||
376 | * syscall mode (i.e. not in a trap, an IRQ or a soft IRQ). | ||
377 | */ | ||
378 | - get_online_cpus(); | ||
379 | + lttng_cpus_read_lock(); | ||
380 | atomic_set(&kernel_threads_to_run, num_online_cpus()); | ||
381 | for_each_online_cpu(cpu) { | ||
382 | INIT_DELAYED_WORK(&cpu_work[cpu], lttng_statedump_work_func); | ||
383 | @@ -778,7 +778,7 @@ int do_lttng_statedump(struct lttng_kernel_session *session) | ||
384 | } | ||
385 | /* Wait for all threads to run */ | ||
386 | __wait_event(statedump_wq, (atomic_read(&kernel_threads_to_run) == 0)); | ||
387 | - put_online_cpus(); | ||
388 | + lttng_cpus_read_unlock(); | ||
389 | /* Our work is done */ | ||
390 | trace_lttng_statedump_end(session); | ||
391 | return 0; | ||
392 | -- | ||
393 | 2.19.1 | ||
394 | |||