From nobody Sun Feb 8 11:26:31 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 1201D29A9CD for ; Sat, 15 Nov 2025 14:09:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763215757; cv=none; b=dwhMYbI0IixynbNaF9GZJ1PjkXG/7c1xbqAsDcOe/PXqRgeD7TcFtle8VEXEGd/ofEV+7Y9Q0YI/YsgMBA/R5Z7Or5FqWJ44g+ZxJZTTJ4dbo1P/A7REpJhEGL8KDbqA1nOnvX34zUi565wYln+SehGnY8JcBmLub3l4w8lUpuU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763215757; c=relaxed/simple; bh=X0HY+ztPEHbQlkYJg3bxEMwPq/D82eFLQb//Uv+/NEw=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=amamAnqzJBJb0CRWVJgITaIBX8eyibQ+A10TWgHCiPmHg32p87Nh3GgGnDnnI5ZOf3+gWNfmGpJmWNtQObuGGq+hJZf92tf2topdjeQ9mVtqr/S060Osy4i0IG1uIhR+JnNU8wUmnMFM+nkuH/Xp0bRB8/0zqESKqByS7dzcRlw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=m3l0Ik/H; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="m3l0Ik/H" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 80CF8C2BCAF; Sat, 15 Nov 2025 14:09:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763215756; bh=X0HY+ztPEHbQlkYJg3bxEMwPq/D82eFLQb//Uv+/NEw=; h=Date:From:To:Cc:Subject:References:From; b=m3l0Ik/HwOlGu7jAfPozDLFx85ixLoyJrhin7Be9OyoA0IAl7tDHI4DdmvAO1PxVM lh45MNXaz5382U6hf7hkMi/ktnKrsr6Mco/9Vp9mwC2t2gLYUxPvpE0nAyAirRkDTg i+JFoNatCbq8bem4Xf2zHtTNeWSVinHix27l64lgDKao9GLv4cthLw3lndgmNVxBKW 6llWnwe2X2hBX8d0+kEO0Ixq56bkyiDQuyBpREuppM3FYogWU/M65gH1R8neyNJMO7 9ZklUYw5OBuM2JQA4ZM3sKBB5n04PHpxmw0rXRcSjS+NM0kk5ZSZzwHBvvgza3+TVG viUf3ZVjuZLgA== Received: from rostedt by gandalf with local (Exim 4.98.2) (envelope-from ) id 1vKGy8-00000002Ato-42hZ; Sat, 15 Nov 2025 09:09:36 -0500 Message-ID: <20251115140936.827589526@kernel.org> User-Agent: quilt/0.68 Date: Sat, 15 Nov 2025 09:09:13 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton Subject: [for-next][PATCH 3/5] tracing: Move graph-time out of function graph options References: <20251115140910.386662473@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: Steven Rostedt The option "graph-time" affects the function profiler when it is using the function graph infrastructure. It has nothing to do with the function graph tracer itself. The option only affects the global function profiler and does nothing to the function graph tracer. Move it out of the function graph tracer options and make it a global option that is only available at the top level instance. Cc: Masami Hiramatsu Cc: Mark Rutland Cc: Mathieu Desnoyers Cc: Andrew Morton Link: https://patch.msgid.link/20251114192318.781711154@kernel.org Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace.c | 14 ++++++++++---- kernel/trace/trace.h | 13 ++++++++++++- kernel/trace/trace_functions_graph.c | 10 +--------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 9268489d2ce8..8ae95800592d 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -509,10 +509,10 @@ EXPORT_SYMBOL_GPL(unregister_ftrace_export); =20 /* trace_flags holds trace_options default values */ #define TRACE_DEFAULT_FLAGS \ - (FUNCTION_DEFAULT_FLAGS | \ - TRACE_ITER(PRINT_PARENT) | TRACE_ITER(PRINTK) | \ + (FUNCTION_DEFAULT_FLAGS | FPROFILE_DEFAULT_FLAGS | \ + TRACE_ITER(PRINT_PARENT) | TRACE_ITER(PRINTK) | \ TRACE_ITER(ANNOTATE) | TRACE_ITER(CONTEXT_INFO) | \ - TRACE_ITER(RECORD_CMD) | TRACE_ITER(OVERWRITE) | \ + TRACE_ITER(RECORD_CMD) | TRACE_ITER(OVERWRITE) | \ TRACE_ITER(IRQ_INFO) | TRACE_ITER(MARKERS) | \ TRACE_ITER(HASH_PTR) | TRACE_ITER(TRACE_PRINTK) | \ TRACE_ITER(COPY_MARKER)) @@ -520,7 +520,7 @@ EXPORT_SYMBOL_GPL(unregister_ftrace_export); /* trace_options that are only supported by global_trace */ #define TOP_LEVEL_TRACE_FLAGS (TRACE_ITER(PRINTK) | \ TRACE_ITER(PRINTK_MSGONLY) | TRACE_ITER(RECORD_CMD) | \ - TRACE_ITER(PROF_TEXT_OFFSET)) + TRACE_ITER(PROF_TEXT_OFFSET) | FPROFILE_DEFAULT_FLAGS) =20 /* trace_flags that are default zero for instances */ #define ZEROED_TRACE_FLAGS \ @@ -5331,6 +5331,12 @@ int set_tracer_flag(struct trace_array *tr, u64 mask= , int enabled) trace_printk_start_stop_comm(enabled); trace_printk_control(enabled); break; + +#if defined(CONFIG_FUNCTION_PROFILER) && defined(CONFIG_FUNCTION_GRAPH_TRA= CER) + case TRACE_GRAPH_GRAPH_TIME: + ftrace_graph_graph_time_control(enabled); + break; +#endif } =20 return 0; diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 299862aad66c..41b416a22450 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -1368,8 +1368,18 @@ extern int trace_get_user(struct trace_parser *parse= r, const char __user *ubuf, #ifdef CONFIG_FUNCTION_PROFILER # define PROFILER_FLAGS \ C(PROF_TEXT_OFFSET, "prof-text-offset"), +# ifdef CONFIG_FUNCTION_GRAPH_TRACER +# define FPROFILE_FLAGS \ + C(GRAPH_TIME, "graph-time"), +# define FPROFILE_DEFAULT_FLAGS TRACE_ITER(GRAPH_TIME) +# else +# define FPROFILE_FLAGS +# define FPROFILE_DEFAULT_FLAGS 0UL +# endif #else # define PROFILER_FLAGS +# define FPROFILE_FLAGS +# define FPROFILE_DEFAULT_FLAGS 0UL # define TRACE_ITER_PROF_TEXT_OFFSET_BIT -1 #endif =20 @@ -1412,7 +1422,8 @@ extern int trace_get_user(struct trace_parser *parser= , const char __user *ubuf, FGRAPH_FLAGS \ STACK_FLAGS \ BRANCH_FLAGS \ - PROFILER_FLAGS + PROFILER_FLAGS \ + FPROFILE_FLAGS =20 /* * By defining C, we can make TRACE_FLAGS a list of bit names diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_func= tions_graph.c index 3f55b49cf64e..53adbe4bfedb 100644 --- a/kernel/trace/trace_functions_graph.c +++ b/kernel/trace/trace_functions_graph.c @@ -85,11 +85,6 @@ static struct tracer_opt trace_opts[] =3D { /* Include sleep time (scheduled out) between entry and return */ { TRACER_OPT(sleep-time, TRACE_GRAPH_SLEEP_TIME) }, =20 -#ifdef CONFIG_FUNCTION_PROFILER - /* Include time within nested functions */ - { TRACER_OPT(graph-time, TRACE_GRAPH_GRAPH_TIME) }, -#endif - { } /* Empty entry */ }; =20 @@ -97,7 +92,7 @@ static struct tracer_flags tracer_flags =3D { /* Don't display overruns, proc, or tail by default */ .val =3D TRACE_GRAPH_PRINT_CPU | TRACE_GRAPH_PRINT_OVERHEAD | TRACE_GRAPH_PRINT_DURATION | TRACE_GRAPH_PRINT_IRQS | - TRACE_GRAPH_SLEEP_TIME | TRACE_GRAPH_GRAPH_TIME, + TRACE_GRAPH_SLEEP_TIME, .opts =3D trace_opts }; =20 @@ -1627,9 +1622,6 @@ func_graph_set_flag(struct trace_array *tr, u32 old_f= lags, u32 bit, int set) if (bit =3D=3D TRACE_GRAPH_SLEEP_TIME) ftrace_graph_sleep_time_control(set); =20 - if (bit =3D=3D TRACE_GRAPH_GRAPH_TIME) - ftrace_graph_graph_time_control(set); - /* Do nothing if the current tracer is not this tracer */ if (tr->current_trace !=3D &graph_trace) return 0; --=20 2.51.0