diff options
Diffstat (limited to 'poky/meta/recipes-kernel')
19 files changed, 792 insertions, 1262 deletions
diff --git a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20220310.bb b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20220509.bb index fa0f906db0..ed6cdb5c16 100644 --- a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20220310.bb +++ b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20220509.bb @@ -132,7 +132,7 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \ file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \ file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \ - file://WHENCE;md5=45a9c4a92d152e9495db81e1192f2bdc \ + file://WHENCE;md5=d3eb82686904888f8bbbe8d865371404 \ " # These are not common licenses, set NO_GENERIC_LICENSE for them @@ -205,7 +205,7 @@ PE = "1" SRC_URI = "${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz" -SRC_URI[sha256sum] = "5938ee717b2023b48f6bfcf344b40ddc947e3e22c0bc36d4c3418f90fea68182" +SRC_URI[sha256sum] = "376e0b3d7b4f8aaa2abf7f5ab74803dcf14b06b94e3d841b1467cd9a2848255e" inherit allarch @@ -352,7 +352,7 @@ FILES:${PN}-carl9170 = " \ RDEPENDS:${PN}-carl9170 += "${PN}-gplv2-license" # For QualCommAthos -LICENSE:${PN}-ar3k = "Firmware-qualcommAthos_ar3k" +LICENSE:${PN}-ar3k = "Firmware-qualcommAthos_ar3k & Firmware-atheros_firmware" LICENSE:${PN}-ar3k-license = "Firmware-qualcommAthos_ar3k" LICENSE:${PN}-ath10k = "Firmware-qualcommAthos_ath10k" LICENSE:${PN}-ath10k-license = "Firmware-qualcommAthos_ath10k" @@ -376,7 +376,7 @@ FILES:${PN}-qca = " \ ${nonarch_base_libdir}/firmware/qca \ " -RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license" +RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license ${PN}-atheros-license" RDEPENDS:${PN}-ath10k += "${PN}-ath10k-license" RDEPENDS:${PN}-ath11k += "${PN}-ath10k-license" RDEPENDS:${PN}-qca += "${PN}-ath10k-license" diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb index a8b6aa203d..62d7494b88 100644 --- a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb +++ b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb @@ -11,13 +11,13 @@ python () { raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") } -SRCREV_machine ?= "7f96d3fd60eea0ab38afdf07b3fc7c8c9f501802" -SRCREV_meta ?= "24ab54209a8822aad92afe2c51ea5b95f5175394" +SRCREV_machine ?= "88b754b80392e1f1ac7df46595f9712edc8aec02" +SRCREV_meta ?= "7767ab05bd3e525a287a7f9bfd780005b5eb25a3" SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}" -LINUX_VERSION ?= "5.10.107" +LINUX_VERSION ?= "5.10.113" LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb index 758260c3d8..e0c693fed2 100644 --- a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb +++ b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb @@ -6,7 +6,7 @@ KCONFIG_MODE = "--allnoconfig" require recipes-kernel/linux/linux-yocto.inc -LINUX_VERSION ?= "5.10.107" +LINUX_VERSION ?= "5.10.113" LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" @@ -15,9 +15,9 @@ DEPENDS += "openssl-native util-linux-native" KMETA = "kernel-meta" KCONF_BSP_AUDIT_LEVEL = "2" -SRCREV_machine:qemuarm ?= "d47f1b40f2f77d0c810defd853c69eb39cb84bf5" -SRCREV_machine ?= "1ae0844c6a36151066744e43fd30db3a946bc21d" -SRCREV_meta ?= "24ab54209a8822aad92afe2c51ea5b95f5175394" +SRCREV_machine:qemuarm ?= "7dacc8332b0bc5600d97583f45b841c9724f2191" +SRCREV_machine ?= "8dc46fa883d7b9a3412791f6731096e2e516d949" +SRCREV_meta ?= "7767ab05bd3e525a287a7f9bfd780005b5eb25a3" PV = "${LINUX_VERSION}+git${SRCPV}" diff --git a/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb b/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb index 9c1bd26b36..e05a4769d1 100644 --- a/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb +++ b/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb @@ -13,17 +13,17 @@ KBRANCH:qemux86 ?= "v5.10/standard/base" KBRANCH:qemux86-64 ?= "v5.10/standard/base" KBRANCH:qemumips64 ?= "v5.10/standard/mti-malta64" -SRCREV_machine:qemuarm ?= "2ef8231651bb6a4c79b307f59a794b92238546ec" -SRCREV_machine:qemuarm64 ?= "00684b441f15d202c5849eed164a9b3b94a5c1e8" -SRCREV_machine:qemumips ?= "661a4f517906253e074fe301d68ff1e6b6968e9f" -SRCREV_machine:qemuppc ?= "bff933cb7a11019c64e6034c48ab79453f75b99e" -SRCREV_machine:qemuriscv64 ?= "763c0dbc0458ebcb1d06afe2f324925f0f61bd27" -SRCREV_machine:qemuriscv32 ?= "763c0dbc0458ebcb1d06afe2f324925f0f61bd27" -SRCREV_machine:qemux86 ?= "763c0dbc0458ebcb1d06afe2f324925f0f61bd27" -SRCREV_machine:qemux86-64 ?= "763c0dbc0458ebcb1d06afe2f324925f0f61bd27" -SRCREV_machine:qemumips64 ?= "7a89b456542ff1fa0ab71fa4a2ae6f04281f3a2d" -SRCREV_machine ?= "763c0dbc0458ebcb1d06afe2f324925f0f61bd27" -SRCREV_meta ?= "24ab54209a8822aad92afe2c51ea5b95f5175394" +SRCREV_machine:qemuarm ?= "6092497574895b1179a3c7a9e07c7f40c2d4c136" +SRCREV_machine:qemuarm64 ?= "97ad6c5f9ffdb6b108cbbf99d9061dd0fe03e4e8" +SRCREV_machine:qemumips ?= "e53b2d1867f7bdc2c0cc904a15992178688c3ad4" +SRCREV_machine:qemuppc ?= "b12ed76165bfc9fe2b99fcc224b5e0134b7b533f" +SRCREV_machine:qemuriscv64 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06" +SRCREV_machine:qemuriscv32 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06" +SRCREV_machine:qemux86 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06" +SRCREV_machine:qemux86-64 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06" +SRCREV_machine:qemumips64 ?= "07580586b738406b4dec9bf91d4eecdb933f2a07" +SRCREV_machine ?= "a8b4c628f382412e5e7df5750f2be711df95fa06" +SRCREV_meta ?= "7767ab05bd3e525a287a7f9bfd780005b5eb25a3" # remap qemuarm to qemuarma15 for the 5.8 kernel # KMACHINE:qemuarm ?= "qemuarma15" @@ -32,7 +32,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRA git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}" LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" -LINUX_VERSION ?= "5.10.107" +LINUX_VERSION ?= "5.10.113" DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" DEPENDS += "openssl-native util-linux-native" @@ -53,6 +53,9 @@ KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}" KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc" KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" +KERNEL_FEATURES:append:powerpc =" arch/powerpc/powerpc-debug.scc" +KERNEL_FEATURES:append:powerpc64 =" arch/powerpc/powerpc-debug.scc" +KERNEL_FEATURES:append:powerpc64le =" arch/powerpc/powerpc-debug.scc" KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}" KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}" KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}" diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-compaction-migratepages-event-name.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-compaction-migratepages-event-name.patch new file mode 100644 index 0000000000..e988f7a3d5 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-compaction-migratepages-event-name.patch @@ -0,0 +1,37 @@ +From c312bda00d2dc10ce5f6c1189acbefee5c6c8c6c Mon Sep 17 00:00:00 2001 +From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +Date: Tue, 29 Mar 2022 16:34:07 -0400 +Subject: [PATCH 01/10] Fix: compaction migratepages event name + +The commit "fix: mm: compaction: fix the migration stats in trace_mm_compaction_migratepages() (v5.17)" + +Triggers this warning: + + LTTng: event provider mismatch: The event name needs to start with provider name + _ + one or more letter, provider: compaction, event name: mm_compaction_migratepages + +Upstream-Status: Backport + +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +Change-Id: I01c7485af765084dafb33bf33ae392e60bfbf1e7 +--- + include/instrumentation/events/compaction.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/include/instrumentation/events/compaction.h b/include/instrumentation/events/compaction.h +index 340e41f5..15964537 100644 +--- a/include/instrumentation/events/compaction.h ++++ b/include/instrumentation/events/compaction.h +@@ -98,7 +98,9 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(compaction_isolate_template, + #endif /* #else #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */ + + #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0)) +-LTTNG_TRACEPOINT_EVENT(mm_compaction_migratepages, ++LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, ++ ++ compaction_migratepages, + + TP_PROTO(unsigned long nr_all, + unsigned int nr_succeeded), +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch deleted file mode 100644 index 4e52e5f122..0000000000 --- a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch +++ /dev/null @@ -1,394 +0,0 @@ -From 8be4c8a38ee1e297578e094a6e4c143ec5259aba Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 13 Sep 2021 12:00:38 -0400 -Subject: [PATCH 1/2] fix: cpu/hotplug: Remove deprecated CPU-hotplug - functions. (v5.15) - -The CPU-hotplug functions get|put_online_cpus() were deprecated in v4.13 -and removed in v5.15. - -See upstream commits : - -commit 8c854303ce0e38e5bbedd725ff39da7e235865d8 -Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de> -Date: Tue Aug 3 16:16:21 2021 +0200 - - cpu/hotplug: Remove deprecated CPU-hotplug functions. - - No users in tree use the deprecated CPU-hotplug functions anymore. - - Remove them. - -Introduced in v4.13 : - - commit 8f553c498e1772cccb39a114da4a498d22992758 - Author: Thomas Gleixner <tglx@linutronix.de> - Date: Wed May 24 10:15:12 2017 +0200 - - cpu/hotplug: Provide cpus_read|write_[un]lock() - - The counting 'rwsem' hackery of get|put_online_cpus() is going to be - replaced by percpu rwsem. - - Rename the functions to make it clear that it's locking and not some - refcount style interface. These new functions will be used for the - preparatory patches which make the code ready for the percpu rwsem - conversion. - - Rename all instances in the cpu hotplug code while at it. - -Upstream-Status: backport [https://git.lttng.org/?p=lttng-modules.git;a=commit;h=ffcc873470121ef1ebb110df3d9038a38d9cb7cb] - -Change-Id: I5a37cf5afc075a402b7347989fac637dfa60a1ed -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/wrapper/cpu.h | 44 +++++++++++++++++++++++ - src/lib/ringbuffer/ring_buffer_backend.c | 8 ++--- - src/lib/ringbuffer/ring_buffer_frontend.c | 17 ++++----- - src/lib/ringbuffer/ring_buffer_iterator.c | 15 ++++---- - src/lttng-context-perf-counters.c | 11 +++--- - src/lttng-statedump-impl.c | 6 ++-- - 6 files changed, 74 insertions(+), 27 deletions(-) - create mode 100644 include/wrapper/cpu.h - -diff --git a/include/wrapper/cpu.h b/include/wrapper/cpu.h -new file mode 100644 -index 00000000..cbee1962 ---- /dev/null -+++ b/include/wrapper/cpu.h -@@ -0,0 +1,44 @@ -+/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) -+ * -+ * wrapper/cpu.h -+ * -+ * Copyright (C) 2021 Michael Jeanson <mjeanson@efficios.com> -+ */ -+ -+#ifndef _LTTNG_WRAPPER_CPU_H -+#define _LTTNG_WRAPPER_CPU_H -+ -+#include <linux/cpu.h> -+#include <lttng/kernel-version.h> -+ -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0)) -+ -+static inline -+void lttng_cpus_read_lock(void) -+{ -+ cpus_read_lock(); -+} -+ -+static inline -+void lttng_cpus_read_unlock(void) -+{ -+ cpus_read_unlock(); -+} -+ -+#else /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0) */ -+ -+static inline -+void lttng_cpus_read_lock(void) -+{ -+ get_online_cpus(); -+} -+ -+static inline -+void lttng_cpus_read_unlock(void) -+{ -+ put_online_cpus(); -+} -+ -+#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0) */ -+ -+#endif /* _LTTNG_WRAPPER_CPU_H */ -diff --git a/src/lib/ringbuffer/ring_buffer_backend.c b/src/lib/ringbuffer/ring_buffer_backend.c -index 26efb2bc..9a339be0 100644 ---- a/src/lib/ringbuffer/ring_buffer_backend.c -+++ b/src/lib/ringbuffer/ring_buffer_backend.c -@@ -12,10 +12,10 @@ - #include <linux/delay.h> - #include <linux/errno.h> - #include <linux/slab.h> --#include <linux/cpu.h> - #include <linux/mm.h> - #include <linux/vmalloc.h> - -+#include <wrapper/cpu.h> - #include <wrapper/mm.h> - #include <wrapper/vmalloc.h> /* for wrapper_vmalloc_sync_mappings() */ - #include <ringbuffer/config.h> -@@ -445,14 +445,14 @@ int channel_backend_init(struct channel_backend *chanb, - chanb->cpu_hp_notifier.priority = 5; - register_hotcpu_notifier(&chanb->cpu_hp_notifier); - -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_online_cpu(i) { - ret = lib_ring_buffer_create(per_cpu_ptr(chanb->buf, i), - chanb, i); - if (ret) - goto free_bufs; /* cpu hotplug locked */ - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - #else - for_each_possible_cpu(i) { - ret = lib_ring_buffer_create(per_cpu_ptr(chanb->buf, i), -@@ -485,7 +485,7 @@ free_bufs: - */ - #else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */ - #ifdef CONFIG_HOTPLUG_CPU -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - unregister_hotcpu_notifier(&chanb->cpu_hp_notifier); - #endif - #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */ -diff --git a/src/lib/ringbuffer/ring_buffer_frontend.c b/src/lib/ringbuffer/ring_buffer_frontend.c -index e9056118..87a575d0 100644 ---- a/src/lib/ringbuffer/ring_buffer_frontend.c -+++ b/src/lib/ringbuffer/ring_buffer_frontend.c -@@ -48,6 +48,7 @@ - #include <ringbuffer/iterator.h> - #include <ringbuffer/nohz.h> - #include <wrapper/atomic.h> -+#include <wrapper/cpu.h> - #include <wrapper/kref.h> - #include <wrapper/percpu-defs.h> - #include <wrapper/timer.h> -@@ -724,7 +725,7 @@ static void channel_unregister_notifiers(struct lttng_kernel_ring_buffer_channel - int cpu; - - #ifdef CONFIG_HOTPLUG_CPU -- get_online_cpus(); -+ lttng_cpus_read_lock(); - chan->cpu_hp_enable = 0; - for_each_online_cpu(cpu) { - struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, -@@ -732,7 +733,7 @@ static void channel_unregister_notifiers(struct lttng_kernel_ring_buffer_channel - lib_ring_buffer_stop_switch_timer(buf); - lib_ring_buffer_stop_read_timer(buf); - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - unregister_cpu_notifier(&chan->cpu_hp_notifier); - #else - for_each_possible_cpu(cpu) { -@@ -772,14 +773,14 @@ void lib_ring_buffer_set_quiescent_channel(struct lttng_kernel_ring_buffer_chann - const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config; - - if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) { -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_channel_cpu(cpu, chan) { - struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, - cpu); - - lib_ring_buffer_set_quiescent(buf); - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - } else { - struct lttng_kernel_ring_buffer *buf = chan->backend.buf; - -@@ -794,14 +795,14 @@ void lib_ring_buffer_clear_quiescent_channel(struct lttng_kernel_ring_buffer_cha - const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config; - - if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) { -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_channel_cpu(cpu, chan) { - struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, - cpu); - - lib_ring_buffer_clear_quiescent(buf); - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - } else { - struct lttng_kernel_ring_buffer *buf = chan->backend.buf; - -@@ -899,7 +900,7 @@ struct lttng_kernel_ring_buffer_channel *channel_create(const struct lttng_kerne - chan->cpu_hp_notifier.priority = 6; - register_cpu_notifier(&chan->cpu_hp_notifier); - -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_online_cpu(cpu) { - struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, - cpu); -@@ -909,7 +910,7 @@ struct lttng_kernel_ring_buffer_channel *channel_create(const struct lttng_kerne - spin_unlock(&per_cpu(ring_buffer_nohz_lock, cpu)); - } - chan->cpu_hp_enable = 1; -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - #else - for_each_possible_cpu(cpu) { - struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, -diff --git a/src/lib/ringbuffer/ring_buffer_iterator.c b/src/lib/ringbuffer/ring_buffer_iterator.c -index 25839af6..60c95ca6 100644 ---- a/src/lib/ringbuffer/ring_buffer_iterator.c -+++ b/src/lib/ringbuffer/ring_buffer_iterator.c -@@ -10,6 +10,7 @@ - */ - - #include <ringbuffer/iterator.h> -+#include <wrapper/cpu.h> - #include <wrapper/file.h> - #include <wrapper/uaccess.h> - #include <linux/jiffies.h> -@@ -440,13 +441,13 @@ int channel_iterator_init(struct lttng_kernel_ring_buffer_channel *chan) - chan->hp_iter_notifier.priority = 10; - register_cpu_notifier(&chan->hp_iter_notifier); - -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_online_cpu(cpu) { - buf = per_cpu_ptr(chan->backend.buf, cpu); - lib_ring_buffer_iterator_init(chan, buf); - } - chan->hp_iter_enable = 1; -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - #else - for_each_possible_cpu(cpu) { - buf = per_cpu_ptr(chan->backend.buf, cpu); -@@ -519,7 +520,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan) - CHAN_WARN_ON(chan, config->output != RING_BUFFER_ITERATOR); - - if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) { -- get_online_cpus(); -+ lttng_cpus_read_lock(); - /* Allow CPU hotplug to keep track of opened reader */ - chan->iter.read_open = 1; - for_each_channel_cpu(cpu, chan) { -@@ -529,7 +530,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan) - goto error; - buf->iter.read_open = 1; - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - } else { - buf = channel_get_ring_buffer(config, chan, 0); - ret = lib_ring_buffer_iterator_open(buf); -@@ -538,7 +539,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan) - error: - /* Error should always happen on CPU 0, hence no close is required. */ - CHAN_WARN_ON(chan, cpu != 0); -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - return ret; - } - EXPORT_SYMBOL_GPL(channel_iterator_open); -@@ -550,7 +551,7 @@ void channel_iterator_release(struct lttng_kernel_ring_buffer_channel *chan) - int cpu; - - if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) { -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_channel_cpu(cpu, chan) { - buf = channel_get_ring_buffer(config, chan, cpu); - if (buf->iter.read_open) { -@@ -559,7 +560,7 @@ void channel_iterator_release(struct lttng_kernel_ring_buffer_channel *chan) - } - } - chan->iter.read_open = 0; -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - } else { - buf = channel_get_ring_buffer(config, chan, 0); - lib_ring_buffer_iterator_release(buf); -diff --git a/src/lttng-context-perf-counters.c b/src/lttng-context-perf-counters.c -index b0227d47..372f05e0 100644 ---- a/src/lttng-context-perf-counters.c -+++ b/src/lttng-context-perf-counters.c -@@ -16,6 +16,7 @@ - #include <lttng/events.h> - #include <lttng/events-internal.h> - #include <ringbuffer/frontend_types.h> -+#include <wrapper/cpu.h> - #include <wrapper/vmalloc.h> - #include <wrapper/perf.h> - #include <lttng/tracer.h> -@@ -97,10 +98,10 @@ void lttng_destroy_perf_counter_ctx_field(void *priv) - { - int cpu; - -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_online_cpu(cpu) - perf_event_release_kernel(events[cpu]); -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - #ifdef CONFIG_HOTPLUG_CPU - unregister_cpu_notifier(&perf_field->nb); - #endif -@@ -304,7 +305,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type, - perf_field->nb.priority = 0; - register_cpu_notifier(&perf_field->nb); - #endif -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_online_cpu(cpu) { - events[cpu] = wrapper_perf_event_create_kernel_counter(attr, - cpu, NULL, overflow_callback); -@@ -317,7 +318,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type, - goto counter_busy; - } - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - perf_field->hp_enable = 1; - } - #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */ -@@ -351,7 +352,7 @@ counter_error: - if (events[cpu] && !IS_ERR(events[cpu])) - perf_event_release_kernel(events[cpu]); - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - #ifdef CONFIG_HOTPLUG_CPU - unregister_cpu_notifier(&perf_field->nb); - #endif -diff --git a/src/lttng-statedump-impl.c b/src/lttng-statedump-impl.c -index 4dfbca0b..2b42783a 100644 ---- a/src/lttng-statedump-impl.c -+++ b/src/lttng-statedump-impl.c -@@ -23,7 +23,6 @@ - #include <linux/file.h> - #include <linux/interrupt.h> - #include <linux/irqnr.h> --#include <linux/cpu.h> - #include <linux/netdevice.h> - #include <linux/inetdevice.h> - #include <linux/mm.h> -@@ -34,6 +33,7 @@ - - #include <lttng/events.h> - #include <lttng/tracer.h> -+#include <wrapper/cpu.h> - #include <wrapper/irqdesc.h> - #include <wrapper/fdtable.h> - #include <wrapper/namespace.h> -@@ -770,7 +770,7 @@ int do_lttng_statedump(struct lttng_kernel_session *session) - * is to guarantee that each CPU has been in a state where is was in - * syscall mode (i.e. not in a trap, an IRQ or a soft IRQ). - */ -- get_online_cpus(); -+ lttng_cpus_read_lock(); - atomic_set(&kernel_threads_to_run, num_online_cpus()); - for_each_online_cpu(cpu) { - INIT_DELAYED_WORK(&cpu_work[cpu], lttng_statedump_work_func); -@@ -778,7 +778,7 @@ int do_lttng_statedump(struct lttng_kernel_session *session) - } - /* Wait for all threads to run */ - __wait_event(statedump_wq, (atomic_read(&kernel_threads_to_run) == 0)); -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - /* Our work is done */ - trace_lttng_statedump_end(session); - return 0; --- -2.19.1 - diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-tracepoint-event-allow-same-provider-and-event-n.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-tracepoint-event-allow-same-provider-and-event-n.patch new file mode 100644 index 0000000000..00367eebf8 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-tracepoint-event-allow-same-provider-and-event-n.patch @@ -0,0 +1,48 @@ +From a7eb2e3d0a4beb1ee80b132927641dd05ef2d542 Mon Sep 17 00:00:00 2001 +From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +Date: Mon, 4 Apr 2022 15:49:32 -0400 +Subject: [PATCH 02/10] Fix: tracepoint event: allow same provider and event + name + +Using the same name for the provider (TRACE_SYSTEM) and event name +causes a compilation error because the same identifiers are emitted +twice. + +Fix this by prefixing the provider identifier with +"__provider_event_desc___". + +Upstream-Status: Backport + +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +Change-Id: I8cdf8f859e35b8bd5c19737860d12f1ed546dfc2 +--- + include/lttng/tracepoint-event-impl.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/include/lttng/tracepoint-event-impl.h b/include/lttng/tracepoint-event-impl.h +index 38b1dc43..dcb22247 100644 +--- a/include/lttng/tracepoint-event-impl.h ++++ b/include/lttng/tracepoint-event-impl.h +@@ -1255,7 +1255,7 @@ static const struct lttng_kernel_event_desc __event_desc___##_map = { \ + #define TP_ID1(_token, _system) _token##_system + #define TP_ID(_token, _system) TP_ID1(_token, _system) + +-static const struct lttng_kernel_event_desc * const TP_ID(__event_desc___, TRACE_SYSTEM)[] = { ++static const struct lttng_kernel_event_desc * const TP_ID(__provider_event_desc___, TRACE_SYSTEM)[] = { + #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) + }; + +@@ -1274,8 +1274,8 @@ static const struct lttng_kernel_event_desc * const TP_ID(__event_desc___, TRACE + /* non-const because list head will be modified when registered. */ + static __used struct lttng_kernel_probe_desc TP_ID(__probe_desc___, TRACE_SYSTEM) = { + .provider_name = __stringify(TRACE_SYSTEM), +- .event_desc = TP_ID(__event_desc___, TRACE_SYSTEM), +- .nr_events = ARRAY_SIZE(TP_ID(__event_desc___, TRACE_SYSTEM)), ++ .event_desc = TP_ID(__provider_event_desc___, TRACE_SYSTEM), ++ .nr_events = ARRAY_SIZE(TP_ID(__provider_event_desc___, TRACE_SYSTEM)), + .head = { NULL, NULL }, + .lazy_init_head = { NULL, NULL }, + .lazy = 0, +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch deleted file mode 100644 index 5b5edc5319..0000000000 --- a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch +++ /dev/null @@ -1,829 +0,0 @@ -From c570be0da77e963d77bac099d468bc0cd5f1bd63 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 13 Sep 2021 14:16:22 -0400 -Subject: [PATCH 2/2] fix: Revert "Makefile: Enable -Wimplicit-fallthrough for - Clang" (v5.15) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Starting with v5.15, "-Wimplicit-fallthrough=5" was added to the build -flags which requires the use of "__attribute__((__fallthrough__))" to -annotate fallthrough case statements. - -See upstream commit by the man himself: - - commit d936eb23874433caa3e3d841cfa16f5434b85dcf - Author: Linus Torvalds <torvalds@linux-foundation.org> - Date: Thu Jul 15 18:05:31 2021 -0700 - - Revert "Makefile: Enable -Wimplicit-fallthrough for Clang" - - This reverts commit b7eb335e26a9c7f258c96b3962c283c379d3ede0. - - It turns out that the problem with the clang -Wimplicit-fallthrough - warning is not about the kernel source code, but about clang itself, and - that the warning is unusable until clang fixes its broken ways. - - In particular, when you enable this warning for clang, you not only get - warnings about implicit fallthroughs. You also get this: - - warning: fallthrough annotation in unreachable code [-Wimplicit-fallthrough] - - which is completely broken becasue it - - (a) doesn't even tell you where the problem is (seriously: no line - numbers, no filename, no nothing). - - (b) is fundamentally broken anyway, because there are perfectly valid - reasons to have a fallthrough statement even if it turns out that - it can perhaps not be reached. - - In the kernel, an example of that second case is code in the scheduler: - - switch (state) { - case cpuset: - if (IS_ENABLED(CONFIG_CPUSETS)) { - cpuset_cpus_allowed_fallback(p); - state = possible; - break; - } - fallthrough; - case possible: - - where if CONFIG_CPUSETS is enabled you actually never hit the - fallthrough case at all. But that in no way makes the fallthrough - wrong. - - So the warning is completely broken, and enabling it for clang is a very - bad idea. - - In the meantime, we can keep the gcc option enabled, and make the gcc - build use - - -Wimplicit-fallthrough=5 - - which means that we will at least continue to require a proper - fallthrough statement, and that gcc won't silently accept the magic - comment versions. Because gcc does this all correctly, and while the odd - "=5" part is kind of obscure, it's documented in [1]: - - "-Wimplicit-fallthrough=5 doesn’t recognize any comments as - fallthrough comments, only attributes disable the warning" - - so if clang ever fixes its bad behavior we can try enabling it there again. - -Upstream-Status: backport [https://git.lttng.org/?p=lttng-modules.git;a=commit;h=c190d76e8c7b44d62b3651ab845b765c1b1f8104] - -Change-Id: Iea69849592fb69ac04fb9bb28efcd6b8dce8ba88 -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/counter/counter-api.h | 4 +- - include/lttng/events-internal.h | 11 ++- - include/wrapper/compiler_attributes.h | 34 +++++++ - src/lib/counter/counter.c | 13 ++- - src/lttng-abi.c | 91 ++++++++++++------ - src/lttng-bytecode-interpreter.c | 4 +- - src/lttng-bytecode-specialize.c | 5 +- - src/lttng-events.c | 129 +++++++++++++++++--------- - src/lttng-string-utils.c | 3 +- - src/probes/lttng-kretprobes.c | 7 +- - 10 files changed, 215 insertions(+), 86 deletions(-) - create mode 100644 include/wrapper/compiler_attributes.h - -diff --git a/include/counter/counter-api.h b/include/counter/counter-api.h -index fbc65818..c9f2b141 100644 ---- a/include/counter/counter-api.h -+++ b/include/counter/counter-api.h -@@ -15,6 +15,7 @@ - #include <linux/bitops.h> - #include <counter/counter.h> - #include <counter/counter-internal.h> -+#include <wrapper/compiler_attributes.h> - #include <wrapper/limits.h> - - /* -@@ -256,7 +257,8 @@ static __always_inline int lttng_counter_add(const struct lib_counter_config *co - const size_t *dimension_indexes, int64_t v) - { - switch (config->alloc) { -- case COUNTER_ALLOC_PER_CPU: /* Fallthrough */ -+ case COUNTER_ALLOC_PER_CPU: -+ lttng_fallthrough; - case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: - return __lttng_counter_add_percpu(config, counter, dimension_indexes, v); - case COUNTER_ALLOC_GLOBAL: -diff --git a/include/lttng/events-internal.h b/include/lttng/events-internal.h -index cd560de8..ca2190c4 100644 ---- a/include/lttng/events-internal.h -+++ b/include/lttng/events-internal.h -@@ -8,6 +8,8 @@ - #ifndef _LTTNG_EVENTS_INTERNAL_H - #define _LTTNG_EVENTS_INTERNAL_H - -+#include <wrapper/compiler_attributes.h> -+ - #include <lttng/events.h> - - struct lttng_syscall_filter; -@@ -561,9 +563,12 @@ static inline bool lttng_kernel_type_is_bytewise_integer(const struct lttng_kern - if (!type_integer) - return false; - switch (type_integer->size) { -- case 8: /* Fall-through. */ -- case 16: /* Fall-through. */ -- case 32: /* Fall-through. */ -+ case 8: -+ lttng_fallthrough; -+ case 16: -+ lttng_fallthrough; -+ case 32: -+ lttng_fallthrough; - case 64: - break; - default: -diff --git a/include/wrapper/compiler_attributes.h b/include/wrapper/compiler_attributes.h -new file mode 100644 -index 00000000..c2c96e76 ---- /dev/null -+++ b/include/wrapper/compiler_attributes.h -@@ -0,0 +1,34 @@ -+/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) -+ * -+ * wrapper/compiler_attributes.h -+ * -+ * Copyright (C) 2021 Michael Jeanson <mjeanson@efficios.com> -+ */ -+ -+#ifndef _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H -+#define _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H -+ -+#include <lttng/kernel-version.h> -+ -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,20,0)) -+#include <linux/compiler_attributes.h> -+#endif -+ -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0)) -+ -+/* -+ * Use the kernel provided fallthrough attribute macro. -+ */ -+#define lttng_fallthrough fallthrough -+ -+#else /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0) */ -+ -+/* -+ * Fallback to the comment for kernels pre 5.15 that don't build with -+ * '-Wimplicit-fallthrough=5'. -+ */ -+#define lttng_fallthrough do {} while (0) /* fallthrough */ -+ -+#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0) */ -+ -+#endif /* _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H */ -diff --git a/src/lib/counter/counter.c b/src/lib/counter/counter.c -index a4500a0e..bf038aac 100644 ---- a/src/lib/counter/counter.c -+++ b/src/lib/counter/counter.c -@@ -11,6 +11,7 @@ - #include <linux/cpumask.h> - #include <counter/counter.h> - #include <counter/counter-internal.h> -+#include <wrapper/compiler_attributes.h> - #include <wrapper/vmalloc.h> - #include <wrapper/limits.h> - -@@ -324,7 +325,8 @@ int lttng_counter_aggregate(const struct lib_counter_config *config, - *underflow = false; - - switch (config->alloc) { -- case COUNTER_ALLOC_GLOBAL: /* Fallthrough */ -+ case COUNTER_ALLOC_GLOBAL: -+ lttng_fallthrough; - case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: - /* Read global counter. */ - ret = lttng_counter_read(config, counter, dimension_indexes, -@@ -342,7 +344,8 @@ int lttng_counter_aggregate(const struct lib_counter_config *config, - switch (config->alloc) { - case COUNTER_ALLOC_GLOBAL: - break; -- case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: /* Fallthrough */ -+ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: -+ lttng_fallthrough; - case COUNTER_ALLOC_PER_CPU: - //TODO: integrate with CPU hotplug and online cpus - for (cpu = 0; cpu < num_possible_cpus(); cpu++) { -@@ -448,7 +451,8 @@ int lttng_counter_clear(const struct lib_counter_config *config, - int cpu, ret; - - switch (config->alloc) { -- case COUNTER_ALLOC_GLOBAL: /* Fallthrough */ -+ case COUNTER_ALLOC_GLOBAL: -+ lttng_fallthrough; - case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: - /* Clear global counter. */ - ret = lttng_counter_clear_cpu(config, counter, dimension_indexes, -1); -@@ -462,7 +466,8 @@ int lttng_counter_clear(const struct lib_counter_config *config, - switch (config->alloc) { - case COUNTER_ALLOC_GLOBAL: - break; -- case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: /* Fallthrough */ -+ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: -+ lttng_fallthrough; - case COUNTER_ALLOC_PER_CPU: - //TODO: integrate with CPU hotplug and online cpus - for (cpu = 0; cpu < num_possible_cpus(); cpu++) { -diff --git a/src/lttng-abi.c b/src/lttng-abi.c -index cc453894..eac1afd1 100644 ---- a/src/lttng-abi.c -+++ b/src/lttng-abi.c -@@ -34,6 +34,7 @@ - #include <ringbuffer/vfs.h> - #include <ringbuffer/backend.h> - #include <ringbuffer/frontend.h> -+#include <wrapper/compiler_attributes.h> - #include <wrapper/poll.h> - #include <wrapper/file.h> - #include <wrapper/kref.h> -@@ -1332,7 +1333,8 @@ long lttng_metadata_ring_buffer_ioctl(struct file *filp, - */ - return -ENOSYS; - } -- case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: /* Fall-through. */ -+ case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH: - { - struct lttng_metadata_stream *stream = filp->private_data; -@@ -1441,7 +1443,8 @@ long lttng_metadata_ring_buffer_compat_ioctl(struct file *filp, - */ - return -ENOSYS; - } -- case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: /* Fall-through. */ -+ case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH: - { - struct lttng_metadata_stream *stream = filp->private_data; -@@ -1758,8 +1761,10 @@ int lttng_abi_validate_event_param(struct lttng_kernel_abi_event *event_param) - switch (event_param->instrumentation) { - case LTTNG_KERNEL_ABI_SYSCALL: - switch (event_param->u.syscall.entryexit) { -- case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: /* Fall-through */ -- case LTTNG_KERNEL_ABI_SYSCALL_EXIT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_SYSCALL_EXIT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL_ENTRYEXIT: - break; - default: -@@ -1783,20 +1788,26 @@ int lttng_abi_validate_event_param(struct lttng_kernel_abi_event *event_param) - switch (event_param->u.kretprobe.entryexit) { - case LTTNG_KERNEL_ABI_SYSCALL_ENTRYEXIT: - break; -- case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: /* Fall-through */ -- case LTTNG_KERNEL_ABI_SYSCALL_EXIT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_SYSCALL_EXIT: -+ lttng_fallthrough; - default: - return -EINVAL; - } - break; - -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - return -EINVAL; - } -@@ -1830,18 +1841,23 @@ int lttng_abi_create_event(struct file *channel_file, - } - - switch (event_param->instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - fops = <tng_event_recorder_enabler_fops; - break; -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - fops = <tng_event_recorder_event_fops; - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - return -EINVAL; - } -@@ -1867,7 +1883,8 @@ int lttng_abi_create_event(struct file *channel_file, - goto event_error; - - switch (event_param->instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - { - struct lttng_event_enabler *event_enabler; -@@ -1887,8 +1904,10 @@ int lttng_abi_create_event(struct file *channel_file, - break; - } - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - { - struct lttng_kernel_event_recorder *event; -@@ -1908,8 +1927,10 @@ int lttng_abi_create_event(struct file *channel_file, - break; - } - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - ret = -EINVAL; - goto event_error; -@@ -2043,18 +2064,23 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file, - } - - switch (event_notifier_param->event.instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - fops = <tng_event_notifier_enabler_fops; - break; -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - fops = <tng_event_notifier_event_fops; - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - ret = -EINVAL; - goto inval_instr; -@@ -2086,7 +2112,8 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file, - goto event_notifier_error; - - switch (event_notifier_param->event.instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - { - struct lttng_event_notifier_enabler *enabler; -@@ -2110,8 +2137,10 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file, - break; - } - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - { - struct lttng_kernel_event_notifier *event_notifier; -@@ -2135,8 +2164,10 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file, - break; - } - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - ret = -EINVAL; - goto event_notifier_error; -diff --git a/src/lttng-bytecode-interpreter.c b/src/lttng-bytecode-interpreter.c -index b46a23b7..a2a932c6 100644 ---- a/src/lttng-bytecode-interpreter.c -+++ b/src/lttng-bytecode-interpreter.c -@@ -7,6 +7,7 @@ - * Copyright (C) 2010-2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - */ - -+#include <wrapper/compiler_attributes.h> - #include <wrapper/uaccess.h> - #include <wrapper/objtool.h> - #include <wrapper/types.h> -@@ -421,7 +422,8 @@ static int dynamic_get_index(struct lttng_kernel_probe_ctx *lttng_probe_ctx, - } - break; - case LOAD_ROOT_CONTEXT: -- case LOAD_ROOT_APP_CONTEXT: /* Fall-through */ -+ lttng_fallthrough; -+ case LOAD_ROOT_APP_CONTEXT: - { - ret = context_get_index(lttng_probe_ctx, - &stack_top->u.ptr, -diff --git a/src/lttng-bytecode-specialize.c b/src/lttng-bytecode-specialize.c -index c4b9d04b..f8b5f19d 100644 ---- a/src/lttng-bytecode-specialize.c -+++ b/src/lttng-bytecode-specialize.c -@@ -8,6 +8,8 @@ - */ - - #include <linux/slab.h> -+#include <wrapper/compiler_attributes.h> -+ - #include <lttng/lttng-bytecode.h> - #include <lttng/align.h> - #include <lttng/events-internal.h> -@@ -271,7 +273,8 @@ static int specialize_get_index(struct bytecode_runtime *runtime, - } - case OBJECT_TYPE_STRUCT: - /* Only generated by the specialize phase. */ -- case OBJECT_TYPE_VARIANT: /* Fall-through */ -+ case OBJECT_TYPE_VARIANT: -+ lttng_fallthrough; - default: - printk(KERN_WARNING "LTTng: bytecode: Unexpected get index type %d", - (int) stack_top->load.object_type); -diff --git a/src/lttng-events.c b/src/lttng-events.c -index e785fe4d..230e3934 100644 ---- a/src/lttng-events.c -+++ b/src/lttng-events.c -@@ -28,6 +28,7 @@ - #include <linux/vmalloc.h> - #include <linux/dmi.h> - -+#include <wrapper/compiler_attributes.h> - #include <wrapper/uuid.h> - #include <wrapper/vmalloc.h> /* for wrapper_vmalloc_sync_mappings() */ - #include <wrapper/random.h> -@@ -659,12 +660,14 @@ int lttng_event_enable(struct lttng_kernel_event_common *event) - goto end; - } - switch (event->priv->instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - ret = -EINVAL; - break; - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - WRITE_ONCE(event->enabled, 1); - break; -@@ -673,8 +676,10 @@ int lttng_event_enable(struct lttng_kernel_event_common *event) - ret = lttng_kretprobes_event_enable_state(event, 1); - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - ret = -EINVAL; -@@ -719,12 +724,14 @@ int lttng_event_disable(struct lttng_kernel_event_common *event) - goto end; - } - switch (event->priv->instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - ret = -EINVAL; - break; - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - WRITE_ONCE(event->enabled, 0); - break; -@@ -733,8 +740,10 @@ int lttng_event_disable(struct lttng_kernel_event_common *event) - ret = lttng_kretprobes_event_enable_state(event, 0); - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - ret = -EINVAL; -@@ -873,15 +882,20 @@ struct lttng_kernel_event_recorder *_lttng_kernel_event_recorder_create(struct l - event_name = event_desc->event_name; - break; - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_UPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - event_name = event_param->name; - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - ret = -EINVAL; -@@ -1093,8 +1107,10 @@ struct lttng_kernel_event_recorder *_lttng_kernel_event_recorder_create(struct l - WARN_ON_ONCE(!ret); - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - ret = -EINVAL; -@@ -1141,15 +1157,20 @@ struct lttng_kernel_event_notifier *_lttng_event_notifier_create( - event_name = event_desc->event_name; - break; - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_UPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - event_name = event_notifier_param->event.name; - break; - -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - ret = -EINVAL; -@@ -1296,9 +1317,12 @@ struct lttng_kernel_event_notifier *_lttng_event_notifier_create( - WARN_ON_ONCE(!ret); - break; - -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - ret = -EINVAL; -@@ -1423,14 +1447,18 @@ void register_event(struct lttng_kernel_event_recorder *event_recorder) - ret = lttng_syscall_filter_enable_event(event_recorder->chan, event_recorder); - break; - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_UPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_KRETPROBE: - ret = 0; - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -1481,7 +1509,8 @@ int _lttng_event_unregister(struct lttng_kernel_event_recorder *event_recorder) - ret = 0; - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -1512,14 +1541,18 @@ void register_event_notifier(struct lttng_kernel_event_notifier *event_notifier) - ret = lttng_syscall_filter_enable_event_notifier(event_notifier); - break; - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - ret = 0; - break; - -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -1559,9 +1592,12 @@ int _lttng_event_notifier_unregister( - ret = lttng_syscall_filter_disable_event_notifier(event_notifier); - break; - -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -1614,8 +1650,10 @@ void _lttng_event_destroy(struct lttng_kernel_event_common *event) - lttng_uprobes_destroy_event_private(event_recorder); - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -1647,9 +1685,12 @@ void _lttng_event_destroy(struct lttng_kernel_event_common *event) - lttng_uprobes_destroy_event_notifier_private(event_notifier); - break; - -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -2713,7 +2754,8 @@ void lttng_session_sync_event_enablers(struct lttng_kernel_session *session) - int nr_filters = 0; - - switch (event_recorder_priv->parent.instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - /* Enable events */ - list_for_each_entry(enabler_ref, -@@ -2807,7 +2849,8 @@ void lttng_event_notifier_group_sync_enablers(struct lttng_event_notifier_group - int nr_filters = 0, nr_captures = 0; - - switch (event_notifier_priv->parent.instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - /* Enable event_notifiers */ - list_for_each_entry(enabler_ref, -@@ -3877,7 +3920,7 @@ int print_escaped_ctf_string(struct lttng_kernel_session *session, const char *s - if (ret) - goto error; - /* We still print the current char */ -- /* Fallthrough */ -+ lttng_fallthrough; - default: - ret = lttng_metadata_printf(session, "%c", cur); - break; -diff --git a/src/lttng-string-utils.c b/src/lttng-string-utils.c -index d9447903..65946193 100644 ---- a/src/lttng-string-utils.c -+++ b/src/lttng-string-utils.c -@@ -4,6 +4,7 @@ - */ - - #include <linux/types.h> -+#include <wrapper/compiler_attributes.h> - - #include <lttng/string-utils.h> - -@@ -302,7 +303,7 @@ retry: - p = pattern_get_char_at_cb(p_at, - pattern_get_char_at_cb_data); - -- /* Fall-through. */ -+ lttng_fallthrough; - default: - /* - * Default case which will compare the escaped -diff --git a/src/probes/lttng-kretprobes.c b/src/probes/lttng-kretprobes.c -index 0fa6a1bf..1d0a5ecb 100644 ---- a/src/probes/lttng-kretprobes.c -+++ b/src/probes/lttng-kretprobes.c -@@ -14,6 +14,7 @@ - #include <lttng/events.h> - #include <lttng/events-internal.h> - #include <ringbuffer/frontend_types.h> -+#include <wrapper/compiler_attributes.h> - #include <wrapper/vmalloc.h> - #include <wrapper/irqflags.h> - #include <lttng/tracer.h> -@@ -61,7 +62,8 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi, - return 0; - break; - } -- case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: /* Fall-through. */ -+ case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -90,7 +92,8 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi, - chan->ops->event_commit(&ctx); - break; - } -- case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: /* Fall-through. */ -+ case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } --- -2.19.1 - diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0003-fix-sched-tracing-Don-t-re-read-p-state-when-emittin.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0003-fix-sched-tracing-Don-t-re-read-p-state-when-emittin.patch new file mode 100644 index 0000000000..afe514de82 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0003-fix-sched-tracing-Don-t-re-read-p-state-when-emittin.patch @@ -0,0 +1,183 @@ +From 8e52fd71e693619f7a58de2692e59f0c826e9988 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson <mjeanson@efficios.com> +Date: Mon, 4 Apr 2022 13:52:57 -0400 +Subject: [PATCH 03/10] fix: sched/tracing: Don't re-read p->state when + emitting sched_switch event (v5.18) + +See upstream commit : + + commit fa2c3254d7cfff5f7a916ab928a562d1165f17bb + Author: Valentin Schneider <valentin.schneider@arm.com> + Date: Thu Jan 20 16:25:19 2022 +0000 + + sched/tracing: Don't re-read p->state when emitting sched_switch event + + As of commit + + c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu") + + the following sequence becomes possible: + + p->__state = TASK_INTERRUPTIBLE; + __schedule() + deactivate_task(p); + ttwu() + READ !p->on_rq + p->__state=TASK_WAKING + trace_sched_switch() + __trace_sched_switch_state() + task_state_index() + return 0; + + TASK_WAKING isn't in TASK_REPORT, so the task appears as TASK_RUNNING in + the trace event. + + Prevent this by pushing the value read from __schedule() down the trace + event. + +Upstream-Status: Backport + +Change-Id: I46743cd006be4b4d573cae2d77df7d6d16744d04 +Signed-off-by: Michael Jeanson <mjeanson@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/instrumentation/events/sched.h | 88 +++++++++++++++++++++++--- + 1 file changed, 78 insertions(+), 10 deletions(-) + +diff --git a/include/instrumentation/events/sched.h b/include/instrumentation/events/sched.h +index 91953a6f..339bec94 100644 +--- a/include/instrumentation/events/sched.h ++++ b/include/instrumentation/events/sched.h +@@ -20,7 +20,37 @@ + #ifndef _TRACE_SCHED_DEF_ + #define _TRACE_SCHED_DEF_ + +-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0)) ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) ++ ++static inline long __trace_sched_switch_state(bool preempt, ++ unsigned int prev_state, ++ struct task_struct *p) ++{ ++ unsigned int state; ++ ++#ifdef CONFIG_SCHED_DEBUG ++ BUG_ON(p != current); ++#endif /* CONFIG_SCHED_DEBUG */ ++ ++ /* ++ * Preemption ignores task state, therefore preempted tasks are always ++ * RUNNING (we will not have dequeued if state != RUNNING). ++ */ ++ if (preempt) ++ return TASK_REPORT_MAX; ++ ++ /* ++ * task_state_index() uses fls() and returns a value from 0-8 range. ++ * Decrement it by 1 (except TASK_RUNNING state i.e 0) before using ++ * it for left shift operation to get the correct task->state ++ * mapping. ++ */ ++ state = __task_state_index(prev_state, p->exit_state); ++ ++ return state ? (1 << (state - 1)) : state; ++} ++ ++#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0)) + + static inline long __trace_sched_switch_state(bool preempt, struct task_struct *p) + { +@@ -321,43 +351,81 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(sched_wakeup_template, sched_wakeup_new, + /* + * Tracepoint for task switches, performed by the scheduler: + */ ++ ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) + LTTNG_TRACEPOINT_EVENT(sched_switch, + +-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0)) + TP_PROTO(bool preempt, +- struct task_struct *prev, +- struct task_struct *next), ++ unsigned int prev_state, ++ struct task_struct *prev, ++ struct task_struct *next), + +- TP_ARGS(preempt, prev, next), ++ TP_ARGS(preempt, prev_state, prev, next), ++ ++ TP_FIELDS( ++ ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN) ++ ctf_integer(pid_t, prev_tid, prev->pid) ++ ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO) ++#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM ++ ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(preempt, prev_state, prev)) + #else +- TP_PROTO(struct task_struct *prev, ++ ctf_integer(long, prev_state, __trace_sched_switch_state(preempt, prev_state, prev)) ++#endif ++ ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN) ++ ctf_integer(pid_t, next_tid, next->pid) ++ ctf_integer(int, next_prio, next->prio - MAX_RT_PRIO) ++ ) ++) ++ ++#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0)) ++ ++LTTNG_TRACEPOINT_EVENT(sched_switch, ++ ++ TP_PROTO(bool preempt, ++ struct task_struct *prev, + struct task_struct *next), + +- TP_ARGS(prev, next), +-#endif /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0)) */ ++ TP_ARGS(preempt, prev, next), + + TP_FIELDS( + ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN) + ctf_integer(pid_t, prev_tid, prev->pid) + ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO) +-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0)) + #ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM + ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(preempt, prev)) + #else + ctf_integer(long, prev_state, __trace_sched_switch_state(preempt, prev)) + #endif ++ ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN) ++ ctf_integer(pid_t, next_tid, next->pid) ++ ctf_integer(int, next_prio, next->prio - MAX_RT_PRIO) ++ ) ++) ++ + #else ++ ++LTTNG_TRACEPOINT_EVENT(sched_switch, ++ ++ TP_PROTO(struct task_struct *prev, ++ struct task_struct *next), ++ ++ TP_ARGS(prev, next), ++ ++ TP_FIELDS( ++ ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN) ++ ctf_integer(pid_t, prev_tid, prev->pid) ++ ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO) + #ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM + ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(prev)) + #else + ctf_integer(long, prev_state, __trace_sched_switch_state(prev)) +-#endif + #endif + ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN) + ctf_integer(pid_t, next_tid, next->pid) + ctf_integer(int, next_prio, next->prio - MAX_RT_PRIO) + ) + ) ++#endif + + /* + * Tracepoint for a task being migrated: +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0004-fix-block-remove-genhd.h-v5.18.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0004-fix-block-remove-genhd.h-v5.18.patch new file mode 100644 index 0000000000..9248ffe4ff --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0004-fix-block-remove-genhd.h-v5.18.patch @@ -0,0 +1,45 @@ +From 868e0b6db59159197c2cec3550fa4ad5e6572bc5 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson <mjeanson@efficios.com> +Date: Mon, 4 Apr 2022 13:54:59 -0400 +Subject: [PATCH 04/10] fix: block: remove genhd.h (v5.18) + +See upstream commit : + + commit 322cbb50de711814c42fb088f6d31901502c711a + Author: Christoph Hellwig <hch@lst.de> + Date: Mon Jan 24 10:39:13 2022 +0100 + + block: remove genhd.h + + There is no good reason to keep genhd.h separate from the main blkdev.h + header that includes it. So fold the contents of genhd.h into blkdev.h + and remove genhd.h entirely. + +Upstream-Status: Backport + +Change-Id: I7cf2aaa3a4c133320b95f2edde49f790f9515dbd +Signed-off-by: Michael Jeanson <mjeanson@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/wrapper/genhd.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/include/wrapper/genhd.h b/include/wrapper/genhd.h +index 3c6dbcbe..4a59b68e 100644 +--- a/include/wrapper/genhd.h ++++ b/include/wrapper/genhd.h +@@ -12,7 +12,11 @@ + #ifndef _LTTNG_WRAPPER_GENHD_H + #define _LTTNG_WRAPPER_GENHD_H + ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) ++#include <linux/blkdev.h> ++#else + #include <linux/genhd.h> ++#endif + + #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0)) + #define LTTNG_GENHD_FL_HIDDEN GENHD_FL_HIDDEN +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0005-fix-scsi-block-Remove-REQ_OP_WRITE_SAME-support-v5.1.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0005-fix-scsi-block-Remove-REQ_OP_WRITE_SAME-support-v5.1.patch new file mode 100644 index 0000000000..0751827613 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0005-fix-scsi-block-Remove-REQ_OP_WRITE_SAME-support-v5.1.patch @@ -0,0 +1,79 @@ +From 2bc7cb7193124d20aa4e1b5dbad0410bfb97a470 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson <mjeanson@efficios.com> +Date: Mon, 4 Apr 2022 14:12:13 -0400 +Subject: [PATCH 05/10] fix: scsi: block: Remove REQ_OP_WRITE_SAME support + (v5.18) + +See upstream commit : + + commit 73bd66d9c834220579c881a3eb020fd8917075d8 + Author: Christoph Hellwig <hch@lst.de> + Date: Wed Feb 9 09:28:28 2022 +0100 + + scsi: block: Remove REQ_OP_WRITE_SAME support + + No more users of REQ_OP_WRITE_SAME or drivers implementing it are left, + so remove the infrastructure. + +Upstream-Status: Backport + +Change-Id: Ifbff71f79f8b590436fc7cb79f82d90c6e033d84 +Signed-off-by: Michael Jeanson <mjeanson@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/instrumentation/events/block.h | 32 ++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +diff --git a/include/instrumentation/events/block.h b/include/instrumentation/events/block.h +index 3e1104d7..050a59a2 100644 +--- a/include/instrumentation/events/block.h ++++ b/include/instrumentation/events/block.h +@@ -66,6 +66,37 @@ LTTNG_TRACEPOINT_ENUM(block_rq_type, + #define lttng_bio_op(bio) bio_op(bio) + #define lttng_bio_rw(bio) ((bio)->bi_opf) + ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) ++#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM ++#define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \ ++ ctf_enum(block_rq_type, type, rwbs, \ ++ ( (op) == REQ_OP_WRITE ? RWBS_FLAG_WRITE : \ ++ ( (op) == REQ_OP_DISCARD ? RWBS_FLAG_DISCARD : \ ++ ( (op) == REQ_OP_SECURE_ERASE ? (RWBS_FLAG_DISCARD | RWBS_FLAG_SECURE) : \ ++ ( (op) == REQ_OP_FLUSH ? RWBS_FLAG_FLUSH : \ ++ ( (op) == REQ_OP_READ ? RWBS_FLAG_READ : \ ++ ( 0 )))))) \ ++ | ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0) \ ++ | ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0) \ ++ | ((rw) & REQ_META ? RWBS_FLAG_META : 0) \ ++ | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \ ++ | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0)) ++#else ++#define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \ ++ ctf_integer(type, rwbs, \ ++ ( (op) == REQ_OP_WRITE ? RWBS_FLAG_WRITE : \ ++ ( (op) == REQ_OP_DISCARD ? RWBS_FLAG_DISCARD : \ ++ ( (op) == REQ_OP_SECURE_ERASE ? (RWBS_FLAG_DISCARD | RWBS_FLAG_SECURE) : \ ++ ( (op) == REQ_OP_FLUSH ? RWBS_FLAG_FLUSH : \ ++ ( (op) == REQ_OP_READ ? RWBS_FLAG_READ : \ ++ ( 0 )))))) \ ++ | ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0) \ ++ | ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0) \ ++ | ((rw) & REQ_META ? RWBS_FLAG_META : 0) \ ++ | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \ ++ | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0)) ++#endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */ ++#else + #ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM + #define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \ + ctf_enum(block_rq_type, type, rwbs, \ +@@ -95,6 +126,7 @@ LTTNG_TRACEPOINT_ENUM(block_rq_type, + | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \ + | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0)) + #endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */ ++#endif + + #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,1,0)) + +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0006-fix-random-remove-unused-tracepoints-v5.18.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0006-fix-random-remove-unused-tracepoints-v5.18.patch new file mode 100644 index 0000000000..9c2f70d4af --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0006-fix-random-remove-unused-tracepoints-v5.18.patch @@ -0,0 +1,47 @@ +From 369d82bb1746447514c877088d7c5fd0f39140f8 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson <mjeanson@efficios.com> +Date: Mon, 4 Apr 2022 14:33:42 -0400 +Subject: [PATCH 06/10] fix: random: remove unused tracepoints (v5.18) + +See upstream commit : + + commit 14c174633f349cb41ea90c2c0aaddac157012f74 + Author: Jason A. Donenfeld <Jason@zx2c4.com> + Date: Thu Feb 10 16:40:44 2022 +0100 + + random: remove unused tracepoints + + These explicit tracepoints aren't really used and show sign of aging. + It's work to keep these up to date, and before I attempted to keep them + up to date, they weren't up to date, which indicates that they're not + really used. These days there are better ways of introspecting anyway. + +Upstream-Status: Backport + +Change-Id: I3b8c3e2732e7efdd76ce63204ac53a48784d0df6 +Signed-off-by: Michael Jeanson <mjeanson@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + src/probes/Kbuild | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/probes/Kbuild b/src/probes/Kbuild +index e26b4359..8d6ff0f2 100644 +--- a/src/probes/Kbuild ++++ b/src/probes/Kbuild +@@ -187,8 +187,11 @@ ifneq ($(CONFIG_FRAME_WARN),0) + CFLAGS_lttng-probe-printk.o += -Wframe-larger-than=2200 + endif + ++# Introduced in v3.6, remove in v5.18 + obj-$(CONFIG_LTTNG) += $(shell \ +- if [ $(VERSION) -ge 4 \ ++ if [ \( ! \( $(VERSION) -ge 6 -o \( $(VERSION) -eq 5 -a $(PATCHLEVEL) -ge 18 \) \) \) \ ++ -a \ ++ $(VERSION) -ge 4 \ + -o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -ge 6 \) \ + -o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -eq 5 -a $(SUBLEVEL) -ge 2 \) \ + -o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -eq 4 -a $(SUBLEVEL) -ge 9 \) \ +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0007-fix-kprobes-Use-rethook-for-kretprobe-if-possible-v5.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0007-fix-kprobes-Use-rethook-for-kretprobe-if-possible-v5.patch new file mode 100644 index 0000000000..effd37ffe1 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0007-fix-kprobes-Use-rethook-for-kretprobe-if-possible-v5.patch @@ -0,0 +1,72 @@ +From 3c46ddc134621dba65030263aa321dd6bdae3ba3 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson <mjeanson@efficios.com> +Date: Mon, 4 Apr 2022 15:02:10 -0400 +Subject: [PATCH 07/10] fix: kprobes: Use rethook for kretprobe if possible + (v5.18) + +See upstream commit : + + commit 73f9b911faa74ac5107879de05c9489c419f41bb + Author: Masami Hiramatsu <mhiramat@kernel.org> + Date: Sat Mar 26 11:27:05 2022 +0900 + + kprobes: Use rethook for kretprobe if possible + + Use rethook for kretprobe function return hooking if the arch sets + CONFIG_HAVE_RETHOOK=y. In this case, CONFIG_KRETPROBE_ON_RETHOOK is + set to 'y' automatically, and the kretprobe internal data fields + switches to use rethook. If not, it continues to use kretprobe + specific function return hooks. + +Upstream-Status: Backport + +Change-Id: I2b7670dc04e4769c1e3c372582ad2f555f6d7a66 +Signed-off-by: Michael Jeanson <mjeanson@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/wrapper/kprobes.h | 17 +++++++++++++++++ + src/probes/lttng-kretprobes.c | 2 +- + 2 files changed, 18 insertions(+), 1 deletion(-) + +diff --git a/include/wrapper/kprobes.h b/include/wrapper/kprobes.h +index b546d615..51d32b7c 100644 +--- a/include/wrapper/kprobes.h ++++ b/include/wrapper/kprobes.h +@@ -29,4 +29,21 @@ struct kretprobe *lttng_get_kretprobe(struct kretprobe_instance *ri) + + #endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) */ + ++ ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) ++static inline ++unsigned long lttng_get_kretprobe_retaddr(struct kretprobe_instance *ri) ++{ ++ return get_kretprobe_retaddr(ri); ++} ++ ++#else ++ ++static inline ++unsigned long lttng_get_kretprobe_retaddr(struct kretprobe_instance *ri) ++{ ++ return (unsigned long) ri->ret_addr; ++} ++#endif ++ + #endif /* _LTTNG_WRAPPER_KPROBES_H */ +diff --git a/src/probes/lttng-kretprobes.c b/src/probes/lttng-kretprobes.c +index 5cb2e953..565df739 100644 +--- a/src/probes/lttng-kretprobes.c ++++ b/src/probes/lttng-kretprobes.c +@@ -81,7 +81,7 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi, + int ret; + + payload.ip = (unsigned long) lttng_get_kretprobe(krpi)->kp.addr; +- payload.parent_ip = (unsigned long) krpi->ret_addr; ++ payload.parent_ip = lttng_get_kretprobe_retaddr(krpi); + + lib_ring_buffer_ctx_init(&ctx, event_recorder, sizeof(payload), + lttng_alignof(payload), <tng_probe_ctx); +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0008-fix-scsi-core-Remove-scsi-scsi_request.h-v5.18.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0008-fix-scsi-core-Remove-scsi-scsi_request.h-v5.18.patch new file mode 100644 index 0000000000..13c504b859 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0008-fix-scsi-core-Remove-scsi-scsi_request.h-v5.18.patch @@ -0,0 +1,44 @@ +From e8d2f286b5b208ac8870d0a9c167b170e96169b3 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson <mjeanson@efficios.com> +Date: Mon, 4 Apr 2022 15:08:48 -0400 +Subject: [PATCH 08/10] fix: scsi: core: Remove <scsi/scsi_request.h> (v5.18) + +See upstream commit : + + commit 26440303310591e29121964ede0048583cb3126d + Author: Christoph Hellwig <hch@lst.de> + Date: Thu Feb 24 18:55:52 2022 +0100 + + scsi: core: Remove <scsi/scsi_request.h> + + This header is empty now except for an include of <linux/blk-mq.h>, so + remove it. + +Upstream-Status: Backport + +Change-Id: Ic8ee3352f1e8bddfcd44c31be9b788db82f183aa +Signed-off-by: Michael Jeanson <mjeanson@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/instrumentation/events/block.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/instrumentation/events/block.h b/include/instrumentation/events/block.h +index 050a59a2..882e6e08 100644 +--- a/include/instrumentation/events/block.h ++++ b/include/instrumentation/events/block.h +@@ -11,9 +11,9 @@ + #include <linux/trace_seq.h> + #include <lttng/kernel-version.h> + +-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) ++#if LTTNG_KERNEL_RANGE(4,11,0, 5,18,0) + #include <scsi/scsi_request.h> +-#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */ ++#endif /* LTTNG_KERNEL_RANGE(4,11,0, 5,18,0) */ + + #ifndef _TRACE_BLOCK_DEF_ + #define _TRACE_BLOCK_DEF_ +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0009-Rename-genhd-wrapper-to-blkdev.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0009-Rename-genhd-wrapper-to-blkdev.patch new file mode 100644 index 0000000000..90fec9dc58 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0009-Rename-genhd-wrapper-to-blkdev.patch @@ -0,0 +1,76 @@ +From 82fbf9d383ff9069808fb0f5f75c660098dbae52 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson <mjeanson@efficios.com> +Date: Tue, 5 Apr 2022 14:57:41 -0400 +Subject: [PATCH 09/10] Rename genhd wrapper to blkdev + +The genhd.h header was folded into blkdev.h in v5.18, rename our wrapper +to follow upstream. + +Upstream-Status: Backport + +Change-Id: I4ec94fb94d11712dd20f0680aea1de77fbfa9d17 +Signed-off-by: Michael Jeanson <mjeanson@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/wrapper/{genhd.h => blkdev.h} | 10 +++++----- + src/lttng-statedump-impl.c | 2 +- + 2 files changed, 6 insertions(+), 6 deletions(-) + rename include/wrapper/{genhd.h => blkdev.h} (93%) + +diff --git a/include/wrapper/genhd.h b/include/wrapper/blkdev.h +similarity index 93% +rename from include/wrapper/genhd.h +rename to include/wrapper/blkdev.h +index 4a59b68e..0d5ad90f 100644 +--- a/include/wrapper/genhd.h ++++ b/include/wrapper/blkdev.h +@@ -1,6 +1,6 @@ + /* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) + * +- * wrapper/genhd.h ++ * wrapper/blkdev.h + * + * wrapper around block layer functions and data structures. Using + * KALLSYMS to get its address when available, else we need to have a +@@ -9,8 +9,8 @@ + * Copyright (C) 2011-2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> + */ + +-#ifndef _LTTNG_WRAPPER_GENHD_H +-#define _LTTNG_WRAPPER_GENHD_H ++#ifndef _LTTNG_WRAPPER_BLKDEV_H ++#define _LTTNG_WRAPPER_BLKDEV_H + + #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) + #include <linux/blkdev.h> +@@ -45,7 +45,7 @@ struct class *wrapper_get_block_class(void) + /* + * Canary function to check for 'block_class' at compile time. + * +- * From 'include/linux/genhd.h': ++ * From 'include/linux/blkdev.h': + * + * extern struct class block_class; + */ +@@ -104,4 +104,4 @@ struct device_type *wrapper_get_disk_type(void) + + #endif + +-#endif /* _LTTNG_WRAPPER_GENHD_H */ ++#endif /* _LTTNG_WRAPPER_BLKDEV_H */ +diff --git a/src/lttng-statedump-impl.c b/src/lttng-statedump-impl.c +index 4d7b2921..0e753090 100644 +--- a/src/lttng-statedump-impl.c ++++ b/src/lttng-statedump-impl.c +@@ -41,7 +41,7 @@ + #include <wrapper/namespace.h> + #include <wrapper/irq.h> + #include <wrapper/tracepoint.h> +-#include <wrapper/genhd.h> ++#include <wrapper/blkdev.h> + #include <wrapper/file.h> + #include <wrapper/fdtable.h> + #include <wrapper/sched.h> +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0010-fix-mm-compaction-cleanup-the-compaction-trace-event.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0010-fix-mm-compaction-cleanup-the-compaction-trace-event.patch new file mode 100644 index 0000000000..892d3f0d23 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0010-fix-mm-compaction-cleanup-the-compaction-trace-event.patch @@ -0,0 +1,106 @@ +From f9208dc00756dfa0a2f191799722030bdf3f793d Mon Sep 17 00:00:00 2001 +From: Michael Jeanson <mjeanson@efficios.com> +Date: Mon, 4 Apr 2022 15:14:01 -0400 +Subject: [PATCH 10/10] fix: mm: compaction: cleanup the compaction trace + events (v5.18) + +See upstream commit : + + commit abd4349ff9b8d242376b67711254221f64f447c7 + Author: Baolin Wang <baolin.wang@linux.alibaba.com> + Date: Tue Mar 22 14:45:56 2022 -0700 + + mm: compaction: cleanup the compaction trace events + + As Steven suggested [1], we should access the pointers from the trace + event to avoid dereferencing them to the tracepoint function when the + tracepoint is disabled. + + [1] https://lkml.org/lkml/2021/11/3/409 + +Upstream-Status: Backport + +Change-Id: I6c08250df8596e8dbc76780ae5d95c899c12e6fe +Signed-off-by: Michael Jeanson <mjeanson@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/instrumentation/events/compaction.h | 17 ++++++++++++++++- + src/probes/Kbuild | 17 ++++++++++++++++- + src/probes/lttng-probe-compaction.c | 5 +++++ + 3 files changed, 37 insertions(+), 2 deletions(-) + +diff --git a/include/instrumentation/events/compaction.h b/include/instrumentation/events/compaction.h +index 15964537..ecae39a8 100644 +--- a/include/instrumentation/events/compaction.h ++++ b/include/instrumentation/events/compaction.h +@@ -97,7 +97,22 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(compaction_isolate_template, + + #endif /* #else #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */ + +-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0)) ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) ++LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, ++ ++ compaction_migratepages, ++ ++ TP_PROTO(struct compact_control *cc, ++ unsigned int nr_succeeded), ++ ++ TP_ARGS(cc, nr_succeeded), ++ ++ TP_FIELDS( ++ ctf_integer(unsigned long, nr_migrated, nr_succeeded) ++ ctf_integer(unsigned long, nr_failed, cc->nr_migratepages - nr_succeeded) ++ ) ++) ++#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0)) + LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, + + compaction_migratepages, +diff --git a/src/probes/Kbuild b/src/probes/Kbuild +index 8d6ff0f2..54784477 100644 +--- a/src/probes/Kbuild ++++ b/src/probes/Kbuild +@@ -167,7 +167,22 @@ ifneq ($(CONFIG_BTRFS_FS),) + endif # $(wildcard $(btrfs_dep)) + endif # CONFIG_BTRFS_FS + +-obj-$(CONFIG_LTTNG) += lttng-probe-compaction.o ++# A dependency on internal header 'mm/internal.h' was introduced in v5.18 ++compaction_dep = $(srctree)/mm/internal.h ++compaction_dep_wildcard = $(wildcard $(compaction_dep)) ++compaction_dep_check = $(shell \ ++if [ \( $(VERSION) -ge 6 \ ++ -o \( $(VERSION) -eq 5 -a $(PATCHLEVEL) -ge 18 \) \) -a \ ++ -z "$(compaction_dep_wildcard)" ] ; then \ ++ echo "warn" ; \ ++else \ ++ echo "ok" ; \ ++fi ;) ++ifeq ($(compaction_dep_check),ok) ++ obj-$(CONFIG_LTTNG) += lttng-probe-compaction.o ++else ++ $(warning Files $(compaction_dep) not found. Probe "compaction" is disabled. Use full kernel source tree to enable it.) ++endif # $(wildcard $(compaction_dep)) + + ifneq ($(CONFIG_EXT4_FS),) + ext4_dep = $(srctree)/fs/ext4/*.h +diff --git a/src/probes/lttng-probe-compaction.c b/src/probes/lttng-probe-compaction.c +index f8ddf384..ffaf45f0 100644 +--- a/src/probes/lttng-probe-compaction.c ++++ b/src/probes/lttng-probe-compaction.c +@@ -10,6 +10,11 @@ + + #include <linux/module.h> + #include <lttng/tracer.h> ++#include <lttng/kernel-version.h> ++ ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) ++#include "../mm/internal.h" ++#endif + + /* + * Create the tracepoint static inlines from the kernel to validate that our +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.0.bb b/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.3.bb index 6dfde8dcad..c33920e0d0 100644 --- a/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.0.bb +++ b/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.3.bb @@ -10,13 +10,22 @@ inherit module include lttng-platforms.inc SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ - file://0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch \ - file://0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch \ + file://0001-Fix-compaction-migratepages-event-name.patch \ + file://0002-Fix-tracepoint-event-allow-same-provider-and-event-n.patch \ + file://0003-fix-sched-tracing-Don-t-re-read-p-state-when-emittin.patch \ + file://0004-fix-block-remove-genhd.h-v5.18.patch \ + file://0005-fix-scsi-block-Remove-REQ_OP_WRITE_SAME-support-v5.1.patch \ + file://0006-fix-random-remove-unused-tracepoints-v5.18.patch \ + file://0007-fix-kprobes-Use-rethook-for-kretprobe-if-possible-v5.patch \ + file://0008-fix-scsi-core-Remove-scsi-scsi_request.h-v5.18.patch \ + file://0009-Rename-genhd-wrapper-to-blkdev.patch \ + file://0010-fix-mm-compaction-cleanup-the-compaction-trace-event.patch \ " + # Use :append here so that the patch is applied also when using devupstream SRC_URI:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch" -SRC_URI[sha256sum] = "5ebf2b3cd128b3a1c8afaea1e98d5a6f7f0676fd524fcf72361c34d9dc603356" +SRC_URI[sha256sum] = "7cf1acbb50b84116acc9b4281b81dcc2643d6018bbd1e8514ad1270239896c4b" export INSTALL_MOD_DIR="kernel/lttng-modules" diff --git a/poky/meta/recipes-kernel/perf/perf/sort-pmuevents.py b/poky/meta/recipes-kernel/perf/perf/sort-pmuevents.py index 5ddf0f144f..09ba3328a7 100755 --- a/poky/meta/recipes-kernel/perf/perf/sort-pmuevents.py +++ b/poky/meta/recipes-kernel/perf/perf/sort-pmuevents.py @@ -33,10 +33,10 @@ if os.path.exists(outfile): with open(infile, 'r') as file: data = file.read() -preamble_regex = re.compile( '^(.*?)^struct', re.MULTILINE | re.DOTALL ) +preamble_regex = re.compile( '^(.*?)^(struct|const struct|static struct|static const struct)', re.MULTILINE | re.DOTALL ) preamble = re.search( preamble_regex, data ) -struct_block_regex = re.compile( '^struct.*?(\w+) (.*?)\[\] = {(.*?)^};', re.MULTILINE | re.DOTALL ) +struct_block_regex = re.compile( '^(struct|const struct|static struct|static const struct).*?(\w+) (.*?)\[\] = {(.*?)^};', re.MULTILINE | re.DOTALL ) field_regex = re.compile( '{.*?},', re.MULTILINE | re.DOTALL ) cpuid_regex = re.compile( '\.cpuid = (.*?),', re.MULTILINE | re.DOTALL ) name_regex = re.compile( '\.name = (.*?),', re.MULTILINE | re.DOTALL ) @@ -45,22 +45,25 @@ name_regex = re.compile( '\.name = (.*?),', re.MULTILINE | re.DOTALL ) # types and then their fields. entry_dict = {} for struct in re.findall( struct_block_regex, data ): - # print( "struct: %s %s" % (struct[0],struct[1]) ) - entry_dict[struct[1]] = {} - entry_dict[struct[1]]['type'] = struct[0] - entry_dict[struct[1]]['fields'] = {} - for entry in re.findall( field_regex, struct[2] ): + # print( "struct: %s %s %s" % (struct[0],struct[1],struct[2]) ) + entry_dict[struct[2]] = {} + entry_dict[struct[2]]['type_prefix'] = struct[0] + entry_dict[struct[2]]['type'] = struct[1] + entry_dict[struct[2]]['fields'] = {} + for entry in re.findall( field_regex, struct[3] ): #print( " entry: %s" % entry ) cpuid = re.search( cpuid_regex, entry ) if cpuid: #print( " cpuid found: %s" % cpuid.group(1) ) - entry_dict[struct[1]]['fields'][cpuid.group(1)] = entry - + entry_dict[struct[2]]['fields'][cpuid.group(1)] = entry + name = re.search( name_regex, entry ) if name: #print( " name found: %s" % name.group(1) ) - entry_dict[struct[1]]['fields'][name.group(1)] = entry - + entry_dict[struct[2]]['fields'][name.group(1)] = entry + + if not entry_dict[struct[2]]['fields']: + entry_dict[struct[2]]['fields']['0'] = entry # created ordered dictionaries from the captured values. These are ordered by # a sorted() iteration of the keys. We don't care about the order we read @@ -72,6 +75,7 @@ for struct in re.findall( struct_block_regex, data ): entry_dict_sorted = OrderedDict() for i in sorted(entry_dict.keys()): entry_dict_sorted[i] = {} + entry_dict_sorted[i]['type_prefix'] = entry_dict[i]['type_prefix'] entry_dict_sorted[i]['type'] = entry_dict[i]['type'] entry_dict_sorted[i]['fields'] = {} for f in sorted(entry_dict[i]['fields'].keys()): @@ -83,7 +87,7 @@ outf = open( outfile, 'w' ) print( preamble.group(1) ) outf.write( preamble.group(1) ) for d in entry_dict_sorted: - outf.write( "struct %s %s[] = {\n" % (entry_dict_sorted[d]['type'],d) ) + outf.write( "%s %s %s[] = {\n" % (entry_dict_sorted[d]['type_prefix'], entry_dict_sorted[d]['type'],d) ) for f in entry_dict_sorted[d]['fields']: outf.write( entry_dict_sorted[d]['fields'][f] + '\n' ) diff --git a/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2022.02.18.bb b/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2022.04.08.bb index 801a6f0584..cd42039680 100644 --- a/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2022.02.18.bb +++ b/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2022.04.08.bb @@ -5,7 +5,7 @@ LICENSE = "ISC" LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c" SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz" -SRC_URI[sha256sum] = "8828c25a4ee25020044004f57374bb9deac852809fad70f8d3d01770bf9ac97f" +SRC_URI[sha256sum] = "884ba2e3c1e8b98762b6dc25ff60b5ec75c8d33a39e019b3ed4aa615491460d3" inherit bin_package allarch |