Re: [PATCH] fgraph: Use CPU hotplug mechanism to initialize idle shadow stacks

From: Linus Walleij
Date: Tue Dec 10 2024 - 10:11:37 EST


Hi Stephen,

On Sat, Oct 19, 2024 at 3:43 AM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> The function graph infrastructure allocates a shadow stack for every task
> when enabled. This includes the idle tasks. The first time the function
> graph is invoked, the shadow stacks are created and never freed until the
> task exits. This includes the idle tasks.
(...)
> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: 868baf07b1a25 ("ftrace: Fix memory leak with function graph and cpu hotplug")
> Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx>

This patch regressed boot-time tracing for me.

How to reproduce:
- Enable CONFIG_FTRACE, CONFIG_FUNCTION_TRACER,
CONFIG_BOOTTIME_TRACING
- Pass command line
ftrace=function_graph ftrace_graph_filter=do_idle
to make ftrace trace this function all through the boot process.

Before this patch:

cd /sys/kernel/debug/tracing
cat trace

gives a nice trace of all invocations of do_idle() during boot.

After this patch:

cd /sys/kernel/debug/tracing
cat trace

Gives an empty trace :(

And:

cat current_tracer
function_graph
cat set_graph_function
do_idle
cat tracing_on
1

So all *is* set up, just not performing

I tried to figure out why this happens but I'm not good with tracing
internals. Any ideas?

Yours,
Linus Walleij