diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-hrtimer-Reduce-trace-noise-in-hrtimer_start-v7.1.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-fix-hrtimer-Reduce-trace-noise-in-hrtimer_start-v7.1.patch new file mode 100644 index 0000000000..e9124b4f87 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0001-fix-hrtimer-Reduce-trace-noise-in-hrtimer_start-v7.1.patch @@ -0,0 +1,103 @@ +From c370026b0a077ba9491b07c559b343fde6353074 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson +Date: Mon, 25 May 2026 10:38:18 -0400 +Subject: [PATCH] fix: hrtimer: Reduce trace noise in hrtimer_start() (v7.1) + + +See upstream commit: + + commit f2e388a019e4cf83a15883a3d1f1384298e9a6aa + Author: Thomas Gleixner + Date: Tue Feb 24 17:36:59 2026 +0100 + + hrtimer: Reduce trace noise in hrtimer_start() + + hrtimer_start() when invoked with an already armed timer traces like: + + -.. [032] d.h2. 5.002263: hrtimer_cancel: hrtimer= .... + -.. [032] d.h1. 5.002263: hrtimer_start: hrtimer= .... + + Which is incorrect as the timer doesn't get canceled. Just the expiry time + changes. The internal dequeue operation which is required for that is not + really interesting for trace analysis. But it makes it tedious to keep real + cancellations and the above case apart. + + Remove the cancel tracing in hrtimer_start() and add a 'was_armed' + indicator to the hrtimer start tracepoint, which clearly indicates what the + state of the hrtimer is when hrtimer_start() is invoked: + + -.. [032] d.h1. 6.200103: hrtimer_start: hrtimer= .... was_armed=0 + -.. [032] d.h1. 6.200558: hrtimer_start: hrtimer= .... was_armed=1 + +Change-Id: I37ee0ae0af665a51fd4f92adffb6b1dcb2ecd9d2 +Signed-off-by: Michael Jeanson +Signed-off-by: Mathieu Desnoyers +Upstream-Status: Backport [https://github.com/lttng/lttng-modules/commit/b77f94c7a7109e70a97bf936b72d66d611187d61] +Signed-off-by: He Zhe +[YC: Backport: revert usage of non-defined-yet ctf_enum] +Signed-off-by: Yoann Congal +--- + include/instrumentation/events/timer.h | 39 ++++++++++++++++++++++++-- + 1 file changed, 37 insertions(+), 2 deletions(-) + +diff --git a/include/instrumentation/events/timer.h b/include/instrumentation/events/timer.h +index bd21c03..9d4476a 100644 +--- a/include/instrumentation/events/timer.h ++++ b/include/instrumentation/events/timer.h +@@ -203,12 +203,43 @@ LTTNG_TRACEPOINT_EVENT_MAP(hrtimer_init, + ) + ) + ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(7,1,0) || \ ++ LTTNG_KERNEL_RANGE(7,0,10, 7,1,0) || \ ++ LTTNG_KERNEL_RANGE(6,18,33, 6,19,0) || \ ++ LTTNG_KERNEL_RANGE(6,12,91, 6,13,0) || \ ++ LTTNG_KERNEL_RANGE(6,6,141, 6,7,0)) + /** + * hrtimer_start - called when the hrtimer is started +- * @timer: pointer to struct hrtimer ++ * @hrtimer: pointer to struct hrtimer ++ * @mode: the hrtimers mode ++ * @was_armed: Was armed when hrtimer_start*() was invoked + */ +-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,16,0) || \ ++LTTNG_TRACEPOINT_EVENT_MAP(hrtimer_start, ++ ++ timer_hrtimer_start, ++ ++ TP_PROTO(struct hrtimer *hrtimer, enum hrtimer_mode mode, bool was_armed), ++ ++ TP_ARGS(hrtimer, mode, was_armed), ++ ++ TP_FIELDS( ++ ctf_integer_hex(void *, hrtimer, hrtimer) ++ ctf_integer_hex(void *, function, hrtimer->function) ++ ctf_integer(s64, expires, ++ lttng_ktime_get_tv64(hrtimer_get_expires(hrtimer))) ++ ctf_integer(s64, softexpires, ++ lttng_ktime_get_tv64(hrtimer_get_softexpires(hrtimer))) ++ ctf_integer(enum hrtimer_mode, mode, mode) ++ ctf_integer(bool, was_armed, was_armed) ++ ) ++) ++#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,16,0) || \ + LTTNG_RT_KERNEL_RANGE(4,14,0,0, 4,15,0,0)) ++/** ++ * hrtimer_start - called when the hrtimer is started ++ * @hrtimer: pointer to struct hrtimer ++ * @mode: the hrtimers mode ++ */ + LTTNG_TRACEPOINT_EVENT_MAP(hrtimer_start, + + timer_hrtimer_start, +@@ -228,6 +259,10 @@ LTTNG_TRACEPOINT_EVENT_MAP(hrtimer_start, + ) + ) + #else ++/** ++ * hrtimer_start - called when the hrtimer is started ++ * @hrtimer: pointer to struct hrtimer ++ */ + LTTNG_TRACEPOINT_EVENT_MAP(hrtimer_start, + + timer_hrtimer_start, diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb b/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb index 34aff1ba8d..b29d73aa89 100644 --- a/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb +++ b/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb @@ -15,10 +15,12 @@ SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ file://0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch \ file://0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch \ file://0001-Fix-sched_stat_runtime-changed-in-Linux-6.6.66.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:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch \ + file://0001-fix-hrtimer-Reduce-trace-noise-in-hrtimer_start-v7.1.patch \ + " SRC_URI[sha256sum] = "d85fcb66c7bd31003ab8735e8c77700e5e4f417b4c22fe1f20112cf435abad79"