From mboxrd@z Thu Jan 1 00:00:00 1970 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-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 { static struct list_head osnoise_instances; +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 = 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); inst = 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 = inst->tr->array_buffer.buffer; \ - trace_array_printk_buf(buffer, _THIS_IP_, msg); \ - } \ - rcu_read_unlock(); \ + osnoise_print(msg); \ osnoise_data.tainted = true; \ }) @@ -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 = 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); 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 = 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()); if (test_bit(OSN_PANIC_ON_STOP, &osnoise_options)) panic("tracer hit stop condition on CPU %d\n", smp_processor_id()); -- 2.53.0