From nobody Mon Jun 8 09:48:04 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 966E73A5443 for ; Sat, 30 May 2026 10:55:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780138559; cv=none; b=TJnkx9JSpLrdEH3cwdt7vFWpSPGjLL6JL99sj8dGnMN49epOBb/MkcW9OlDmOZE0i7GPugWppDOLc0+b6yKbrmqrzVH+ou/wlrggHDlQIigklmC4WGOfc9utGoLJP15h3NNqwhLPrLp1layY0mqK8D5FocTi/zjsh1Dnf8KBTK0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780138559; c=relaxed/simple; bh=7DeHpkZu37aaxJSx0mbryrusOf/EE4h5YjWj9hZ9MSg=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=FSgAgCIn9l1ehJzcJob+550AVFrv3k4ZZI9PzGUWSLJp96fmPuAxqJyANVsFiMrrQnxT/ssv2RTjIJoYVflfsLXWOiTZ1eYWEATjVT5WMXJyUgp5XBlSa+kvIz++d7Y7/MmIxDLtNulHSV9auTw5ttZOUR6RWQZ9dFtxRbo+4Tk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Y5SxDuon; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Y5SxDuon" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 51F8A1F00893; Sat, 30 May 2026 10:55:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1780138558; bh=TQlLU1+2xsZYaeD1xzbIsmb3Dq5cZDTO5AE3ZUAnaYM=; h=Date:From:To:Cc:Subject:References; b=Y5SxDuonGK7044OwIvou27O1uz3v0RMDaLF2s3LPluIWKmCws3PBddP4zsbdxJvbO r2lGbFrleePngKvs+k3Rk9lAvXj+4JI+efjXyPftqJgfTGDDPpzgYMfAt0y7t8pYBJ JTHSXJctPToYAjpidg0nYICsf9R/k2GW16Faf5kx3H8o/IhtNE/tp1l7SLcrGtrRPw 7awj/FARWl7wlV+CeqaFKEx7UPiO9EjxwB/K5Cjo8nmsFYlVxDCjMITqk8R1b6AviZ AFSv0Z3jg+Hl7YQ6BvNmIk5xBpA0Ka63OIpnvW8CEeQP13nf/29aiHVcYH0Z7VwuRn 182Bdg+yperwg== Received: from rostedt by gandalf with local (Exim 4.99.2) (envelope-from ) id 1wTHMt-0000000AsHr-20hb; Sat, 30 May 2026 06:56:39 -0400 Message-ID: <20260530105639.334261506@kernel.org> User-Agent: quilt/0.69 Date: Sat, 30 May 2026 06:56:16 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , John Kacur , Tomas Glozar , Costa Shulyupin , Wander Lairson Costa , Crystal Wood Subject: [for-next][PATCH 1/2] tracing/osnoise: Dump stack on timerlat uret threshold event References: <20260530105615.512858463@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Crystal Wood Dump the saved IRQ stack trace regardless of whether the event was THREAD_CONTEXT or THREAD_URET. In the uret case, the latency presumably had not yet crossed the threshold at IRQ time (or else it would have dumped the stack at thread wakeup time, unless we're racing with a change to the threshold), but it may have at least contributed -- and this is possible with THREAD_CONTEXT as well. In any case, it helps with writing reliable rtla tests if we always get a stack trace on a threshold event. Cc: John Kacur Cc: Tomas Glozar Cc: Costa Shulyupin Cc: Wander Lairson Costa Link: https://patch.msgid.link/20260511223143.1477332-1-crwood@redhat.com Signed-off-by: Crystal Wood Signed-off-by: Steven Rostedt --- kernel/trace/trace_osnoise.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c index 75678053b21c..62c2667d97fa 100644 --- a/kernel/trace/trace_osnoise.c +++ b/kernel/trace/trace_osnoise.c @@ -2544,9 +2544,12 @@ timerlat_fd_read(struct file *file, char __user *ubu= f, size_t count, notify_new_max_latency(diff); =20 tlat->tracing_thread =3D false; - if (osnoise_data.stop_tracing_total) - if (time_to_us(diff) >=3D osnoise_data.stop_tracing_total) + if (osnoise_data.stop_tracing_total) { + if (time_to_us(diff) >=3D osnoise_data.stop_tracing_total) { + timerlat_dump_stack(time_to_us(diff)); osnoise_stop_tracing(); + } + } } else { tlat->tracing_thread =3D false; tlat->kthread =3D current; --=20 2.53.0 From nobody Mon Jun 8 09:48:04 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 965A33C07A for ; Sat, 30 May 2026 10:55:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780138559; cv=none; b=XmDQnJpIb47y6BHsD2Dn8YRkQikC+ToAjyqV2nm7P1UknkyVCYKHcovoiH8xaNJjEKHqi+kwlYV0IWXwl7dbyh5N8/7YsoM/z8AmGz/+2WhNKU6L6eJHucF97Cc5kxpa5Z77XBwjRm1RXozkEqbFRdMLtOqRsifcV6J1GPA4Kog= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780138559; c=relaxed/simple; bh=QzE/KStGz5Qacxc3zEGjT77fgJcBAJLh1+tQ17DhZUA=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=Oxt5fYiC9TGjsTjPHdcOb5Zm6R1yb1alrWM8zxxYnefXuUfBUQI4K+dGvFcM9jPc6aFjDv+JjUMY4VePbH5JmmQDNv2Y+kk6d/Rxn/rj/CKZeHyG41sUXm8QMMiUJ3NT36MN4npyROANDNxg7UPxMe+1LNgh2vPEQRwBmwTQ8qs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cZS8JWnT; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="cZS8JWnT" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 779B31F00899; Sat, 30 May 2026 10:55:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1780138558; bh=ZumihdgprxbJEBltJ7UfhweizaotISoL7KyEK2grLoU=; h=Date:From:To:Cc:Subject:References; b=cZS8JWnTpu6Y/vAPRMlAGezql6v2ie1vP/9q5PrcxBDteBEGIQ/4v0wRTXdv8F/RG k6JioEPFqhJbou22savi2VMV2xupakUkVh2pCpbgvAtlQeeo1SwRegVDCK+393h9Z3 /fKCzj7Hm2eQwSEdKvcTrFrAwAHq6QlLrHSjdQbM876eiSdNDbnVc33Q5AclB+9rN1 luP5mMjVwdEYqiAqcx25cW9Mm5g02m1VFrHBQmPdNyhvIiLYI6FVEgigmQemkvqagx kISBlbogTlnVVslpVgQdXRp5z4JlGS7UQVk6X63yngQ6B2IcyV8NTJt6WxjgvgUz1C tmCSqPm+4DtkA== Received: from rostedt by gandalf with local (Exim 4.99.2) (envelope-from ) id 1wTHMt-0000000AsIL-2eBy; Sat, 30 May 2026 06:56:39 -0400 Message-ID: <20260530105639.495780999@kernel.org> User-Agent: quilt/0.69 Date: Sat, 30 May 2026 06:56:17 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Crystal Wood Subject: [for-next][PATCH 2/2] tracing/osnoise: Array printk init and cleanup References: <20260530105615.512858463@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Crystal Wood None of the calls to trace_array_printk_buf() will do anything if we don't initialize the buffer on instance creation (unless some other tracer called it), so do that. Add an osnoise_print() function to facilitate adding debug prints (without tainting). Use trace_array_printk() instead of trace_array_printk_buf(), as we're only writing to the main buffer (of a non-main instance) anyway -- and trace_array_printk_buf() skips the check to make sure we're not printing to the global instance. Link: https://patch.msgid.link/20260511223035.1475676-1-crwood@redhat.com Signed-off-by: Crystal Wood Signed-off-by: Steven Rostedt --- kernel/trace/trace_osnoise.c | 39 ++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c index 62c2667d97fa..5e83c4f6f2b4 100644 --- a/kernel/trace/trace_osnoise.c +++ b/kernel/trace/trace_osnoise.c @@ -83,6 +83,22 @@ struct osnoise_instance { =20 static struct list_head osnoise_instances; =20 +static void osnoise_print(const char *fmt, ...) +{ + struct osnoise_instance *inst; + struct trace_array *tr; + va_list ap; + + rcu_read_lock(); + list_for_each_entry_rcu(inst, &osnoise_instances, list) { + tr =3D inst->tr; + va_start(ap, fmt); + trace_array_vprintk(tr, _RET_IP_, fmt, ap); + va_end(ap); + } + rcu_read_unlock(); +} + static bool osnoise_has_registered_instances(void) { return !!list_first_or_null_rcu(&osnoise_instances, @@ -123,6 +139,7 @@ static int osnoise_register_instance(struct trace_array= *tr) * trace_types_lock. */ lockdep_assert_held(&trace_types_lock); + trace_array_init_printk(tr); =20 inst =3D kmalloc_obj(*inst); if (!inst) @@ -471,15 +488,7 @@ static void print_osnoise_headers(struct seq_file *s) * osnoise_taint - report an osnoise error. */ #define osnoise_taint(msg) ({ \ - struct osnoise_instance *inst; \ - struct trace_buffer *buffer; \ - \ - rcu_read_lock(); \ - list_for_each_entry_rcu(inst, &osnoise_instances, list) { \ - buffer =3D inst->tr->array_buffer.buffer; \ - trace_array_printk_buf(buffer, _THIS_IP_, msg); \ - } \ - rcu_read_unlock(); \ + osnoise_print(msg); \ osnoise_data.tainted =3D true; \ }) =20 @@ -1189,10 +1198,10 @@ static __always_inline void osnoise_stop_exception(= char *msg, int cpu) rcu_read_lock(); list_for_each_entry_rcu(inst, &osnoise_instances, list) { tr =3D inst->tr; - trace_array_printk_buf(tr->array_buffer.buffer, _THIS_IP_, - "stop tracing hit on cpu %d due to exception: %s\n", - smp_processor_id(), - msg); + trace_array_printk(tr, _THIS_IP_, + "stop tracing hit on cpu %d due to exception: %s\n", + smp_processor_id(), + msg); =20 if (test_bit(OSN_PANIC_ON_STOP, &osnoise_options)) panic("tracer hit on cpu %d due to exception: %s\n", @@ -1362,8 +1371,8 @@ static __always_inline void osnoise_stop_tracing(void) rcu_read_lock(); list_for_each_entry_rcu(inst, &osnoise_instances, list) { tr =3D inst->tr; - trace_array_printk_buf(tr->array_buffer.buffer, _THIS_IP_, - "stop tracing hit on cpu %d\n", smp_processor_id()); + trace_array_printk(tr, _THIS_IP_, + "stop tracing hit on cpu %d\n", smp_processor_id()); =20 if (test_bit(OSN_PANIC_ON_STOP, &osnoise_options)) panic("tracer hit stop condition on CPU %d\n", smp_processor_id()); --=20 2.53.0