Message ID | 1573849732.5937.136.camel@lca.pw (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | powerpc ftrace broken due to "manual merge of the ftrace tree with the arm64 tree" | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/merge (3b4852888d3f7e0cde65b29af9c518f4019e145f) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/next (565f9bc05e2dad6c7fdfc7c2e641be580aa599cd) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch linus/master (875fef493f21e54d20d71a581687990aaa50268c) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/fixes (7d6475051fb3d9339c5c760ed9883bc0a9048b21) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch linux-next (5a6fcbeabe3e20459ed8504690b2515dacc5246f) |
snowpatch_ozlabs/apply_patch | fail | Failed to apply to any branch |
On Fri, 15 Nov 2019 15:28:52 -0500 Qian Cai <cai@lca.pw> wrote: > # echo function >/sys/kernel/debug/tracing/current_tracer > > It hangs forever with today's linux-next on powerpc. Reverted the conflict fix > [1] as below fixes the issue. > > [1] https://lore.kernel.org/linux-next/20191115135357.10386fac@canb.auug.org.au/ What's your config file. And can you test the two conflicting commits to see which one caused your error? Test this commit please: b83b43ffc6e4b514ca034a0fbdee01322e2f7022 And see if the issue is with that one, and not with the one without it. -- Steve > > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm- > generic/vmlinux.lds.h > index 7d0d03a03d4d..a92222f79b53 100644 > --- a/include/asm-generic/vmlinux.lds.h > +++ b/include/asm-generic/vmlinux.lds.h > @@ -136,29 +136,20 @@ > #endif > > #ifdef CONFIG_FTRACE_MCOUNT_RECORD > -/* > - * The ftrace call sites are logged to a section whose name depends on the > - * compiler option used. A given kernel image will only use one, AKA > - * FTRACE_CALLSITE_SECTION. We capture all of them here to avoid header > - * dependencies for FTRACE_CALLSITE_SECTION's definition. > - */ > -/* > - * Need to also make ftrace_graph_stub point to ftrace_stub > - * so that the same stub location may have different protocols > - * and not mess up with C verifiers. > - */ > -#define MCOUNT_REC() . = ALIGN(8); \ > +#ifdef CC_USING_PATCHABLE_FUNCTION_ENTRY > +#define MCOUNT_REC() . = ALIGN(8) \ > __start_mcount_loc = .; \ > - KEEP(*(__mcount_loc)) \ > KEEP(*(__patchable_function_entries)) \ > __stop_mcount_loc = .; \ > ftrace_graph_stub = ftrace_stub; > #else > -# ifdef CONFIG_FUNCTION_TRACER > -# define MCOUNT_REC() ftrace_graph_stub = ftrace_stub; > -# else > -# define MCOUNT_REC() > -# endif > +#define MCOUNT_REC() . = ALIGN(8); \ > + __start_mcount_loc = .; \ > + KEEP(*(__mcount_loc)) \ > + __stop_mcount_loc = .; > +#endif > +#else > +#define MCOUNT_REC() > #endif > > #ifdef CONFIG_TRACE_BRANCH_PROFILING
On Fri, 2019-11-15 at 16:02 -0500, Steven Rostedt wrote: > On Fri, 15 Nov 2019 15:28:52 -0500 > Qian Cai <cai@lca.pw> wrote: > > > # echo function >/sys/kernel/debug/tracing/current_tracer > > > > It hangs forever with today's linux-next on powerpc. Reverted the conflict fix > > [1] as below fixes the issue. > > > > [1] https://lore.kernel.org/linux-next/20191115135357.10386fac@canb.auug.org.au/ > > What's your config file. https://raw.githubusercontent.com/cailca/linux-mm/master/powerpc.config > > And can you test the two conflicting commits to see which one caused > your error? > > Test this commit please: b83b43ffc6e4b514ca034a0fbdee01322e2f7022 # git reset --hard b83b43ffc6e4b514ca034a0fbdee01322e2f7022 Yes, that one is bad. > > And see if the issue is with that one, and not with the one without it. > > -- Steve > > > > > > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm- > > generic/vmlinux.lds.h > > index 7d0d03a03d4d..a92222f79b53 100644 > > --- a/include/asm-generic/vmlinux.lds.h > > +++ b/include/asm-generic/vmlinux.lds.h > > @@ -136,29 +136,20 @@ > > #endif > > > > #ifdef CONFIG_FTRACE_MCOUNT_RECORD > > -/* > > - * The ftrace call sites are logged to a section whose name depends on the > > - * compiler option used. A given kernel image will only use one, AKA > > - * FTRACE_CALLSITE_SECTION. We capture all of them here to avoid header > > - * dependencies for FTRACE_CALLSITE_SECTION's definition. > > - */ > > -/* > > - * Need to also make ftrace_graph_stub point to ftrace_stub > > - * so that the same stub location may have different protocols > > - * and not mess up with C verifiers. > > - */ > > -#define MCOUNT_REC() . = ALIGN(8); \ > > +#ifdef CC_USING_PATCHABLE_FUNCTION_ENTRY > > +#define MCOUNT_REC() . = ALIGN(8) \ > > __start_mcount_loc = .; \ > > - KEEP(*(__mcount_loc)) \ > > KEEP(*(__patchable_function_entries)) \ > > __stop_mcount_loc = .; \ > > ftrace_graph_stub = ftrace_stub; > > #else > > -# ifdef CONFIG_FUNCTION_TRACER > > -# define MCOUNT_REC() ftrace_graph_stub = ftrace_stub; > > -# else > > -# define MCOUNT_REC() > > -# endif > > +#define MCOUNT_REC() . = ALIGN(8); \ > > + __start_mcount_loc = .; \ > > + KEEP(*(__mcount_loc)) \ > > + __stop_mcount_loc = .; > > +#endif > > +#else > > +#define MCOUNT_REC() > > #endif > > > > #ifdef CONFIG_TRACE_BRANCH_PROFILING > >
On Fri, 15 Nov 2019 16:06:34 -0500 Qian Cai <cai@lca.pw> 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? Thanks! -- Steve diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 0f358be551cd..fd8f4dc661dc 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -109,6 +109,13 @@ #define MEM_DISCARD(sec) *(.mem##sec) #endif +/* PowerPC defines ftrace_graph_stub in the code */ +#ifndef CONFIG_PPC +# define DEFINE_FTRACE_GRAPH_STUB ftrace_graph_stub = ftrace_stub; +#else +# define DEFINE_FTRACE_GRAPH_STUB +#endif + #ifdef CONFIG_FTRACE_MCOUNT_RECORD #ifdef CC_USING_PATCHABLE_FUNCTION_ENTRY /* @@ -120,17 +127,17 @@ __start_mcount_loc = .; \ KEEP(*(__patchable_function_entries)) \ __stop_mcount_loc = .; \ - ftrace_graph_stub = ftrace_stub; + DEFINE_FTRACE_GRAPH_STUB #else #define MCOUNT_REC() . = ALIGN(8); \ __start_mcount_loc = .; \ KEEP(*(__mcount_loc)) \ __stop_mcount_loc = .; \ - ftrace_graph_stub = ftrace_stub; + DEFINE_FTRACE_GRAPH_STUB #endif #else # ifdef CONFIG_FUNCTION_TRACER -# define MCOUNT_REC() ftrace_graph_stub = ftrace_stub; +# define MCOUNT_REC() DEFINE_FTRACE_GRAPH_STUB # else # define MCOUNT_REC() # endif
On Mon, 18 Nov 2019 09:51:04 -0500 Steven Rostedt <rostedt@goodmis.org> 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. -- Steve
On Mon, 18 Nov 2019 09:58:42 -0500 Steven Rostedt <rostedt@goodmis.org> wrote: > On Mon, 18 Nov 2019 09:51:04 -0500 > Steven Rostedt <rostedt@goodmis.org> 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? 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);
On Mon, 2019-11-18 at 10:16 -0500, Steven Rostedt wrote: > On Mon, 18 Nov 2019 09:58:42 -0500 > Steven Rostedt <rostedt@goodmis.org> wrote: > > > On Mon, 18 Nov 2019 09:51:04 -0500 > > Steven Rostedt <rostedt@goodmis.org> 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);
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm- generic/vmlinux.lds.h index 7d0d03a03d4d..a92222f79b53 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -136,29 +136,20 @@ #endif #ifdef CONFIG_FTRACE_MCOUNT_RECORD -/* - * The ftrace call sites are logged to a section whose name depends on the - * compiler option used. A given kernel image will only use one, AKA - * FTRACE_CALLSITE_SECTION. We capture all of them here to avoid header - * dependencies for FTRACE_CALLSITE_SECTION's definition. - */ -/* - * Need to also make ftrace_graph_stub point to ftrace_stub - * so that the same stub location may have different protocols - * and not mess up with C verifiers. - */ -#define MCOUNT_REC() . = ALIGN(8); \ +#ifdef CC_USING_PATCHABLE_FUNCTION_ENTRY +#define MCOUNT_REC() . = ALIGN(8) \ __start_mcount_loc = .; \ - KEEP(*(__mcount_loc)) \ KEEP(*(__patchable_function_entries)) \ __stop_mcount_loc = .; \ ftrace_graph_stub = ftrace_stub; #else -# ifdef CONFIG_FUNCTION_TRACER -# define MCOUNT_REC() ftrace_graph_stub = ftrace_stub; -# else -# define MCOUNT_REC() -# endif +#define MCOUNT_REC() . = ALIGN(8); \ + __start_mcount_loc = .; \ + KEEP(*(__mcount_loc)) \ + __stop_mcount_loc = .; +#endif +#else +#define MCOUNT_REC() #endif #ifdef CONFIG_TRACE_BRANCH_PROFILING