Re: powerpc ftrace broken due to "manual merge of the ftrace tree with the arm64 tree"

From: Qian Cai
Date: Mon Nov 18 2019 - 12:11:33 EST


On Mon, 2019-11-18 at 10:16 -0500, Steven Rostedt wrote:
> On Mon, 18 Nov 2019 09:58:42 -0500
> Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
> > On Mon, 18 Nov 2019 09:51:04 -0500
> > Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> >
> > > > > Test this commit please: b83b43ffc6e4b514ca034a0fbdee01322e2f7022
> > > >
> > > > # git reset --hard b83b43ffc6e4b514ca034a0fbdee01322e2f7022
> > > >
> > > > Yes, that one is bad.
> > >
> > > Can you see if this patch fixes the issue for you?
> >
> > Don't bother. This isn't the right fix, I know see the real issue.
> >
> > New fix coming shortly.
> >
>
> Can you try this?

Yes, it works fine.

>
> It appears that I picked a name "ftrace_graph_stub", that was already in
> use by powerpc. This just renames the function stub I used.
>
> -- Steve
>
> diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
> index 0f358be551cd..996db32c491b 100644
> --- a/include/asm-generic/vmlinux.lds.h
> +++ b/include/asm-generic/vmlinux.lds.h
> @@ -112,7 +112,7 @@
> #ifdef CONFIG_FTRACE_MCOUNT_RECORD
> #ifdef CC_USING_PATCHABLE_FUNCTION_ENTRY
> /*
> - * Need to also make ftrace_graph_stub point to ftrace_stub
> + * Need to also make ftrace_stub_graph point to ftrace_stub
> * so that the same stub location may have different protocols
> * and not mess up with C verifiers.
> */
> @@ -120,17 +120,17 @@
> __start_mcount_loc = .; \
> KEEP(*(__patchable_function_entries)) \
> __stop_mcount_loc = .; \
> - ftrace_graph_stub = ftrace_stub;
> + ftrace_stub_graph = ftrace_stub;
> #else
> #define MCOUNT_REC() . = ALIGN(8); \
> __start_mcount_loc = .; \
> KEEP(*(__mcount_loc)) \
> __stop_mcount_loc = .; \
> - ftrace_graph_stub = ftrace_stub;
> + ftrace_stub_graph = ftrace_stub;
> #endif
> #else
> # ifdef CONFIG_FUNCTION_TRACER
> -# define MCOUNT_REC() ftrace_graph_stub = ftrace_stub;
> +# define MCOUNT_REC() ftrace_stub_graph = ftrace_stub;
> # else
> # define MCOUNT_REC()
> # endif
> diff --git a/kernel/trace/fgraph.c b/kernel/trace/fgraph.c
> index fa3ce10d0405..67e0c462b059 100644
> --- a/kernel/trace/fgraph.c
> +++ b/kernel/trace/fgraph.c
> @@ -336,10 +336,10 @@ int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace)
> * Simply points to ftrace_stub, but with the proper protocol.
> * Defined by the linker script in linux/vmlinux.lds.h
> */
> -extern void ftrace_graph_stub(struct ftrace_graph_ret *);
> +extern void ftrace_stub_graph(struct ftrace_graph_ret *);
>
> /* The callbacks that hook a function */
> -trace_func_graph_ret_t ftrace_graph_return = ftrace_graph_stub;
> +trace_func_graph_ret_t ftrace_graph_return = ftrace_stub_graph;
> trace_func_graph_ent_t ftrace_graph_entry = ftrace_graph_entry_stub;
> static trace_func_graph_ent_t __ftrace_graph_entry = ftrace_graph_entry_stub;
>
> @@ -619,7 +619,7 @@ void unregister_ftrace_graph(struct fgraph_ops *gops)
> goto out;
>
> ftrace_graph_active--;
> - ftrace_graph_return = ftrace_graph_stub;
> + ftrace_graph_return = ftrace_stub_graph;
> ftrace_graph_entry = ftrace_graph_entry_stub;
> __ftrace_graph_entry = ftrace_graph_entry_stub;
> ftrace_shutdown(&graph_ops, FTRACE_STOP_FUNC_RET);