Message ID | 20201211184633.3213045-2-samitolvanen@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for Clang LTO | expand |
On Fri, Dec 11, 2020 at 10:46:18AM -0800, Sami Tolvanen wrote: > Move function tracer options to Kconfig to make it easier to add > new methods for generating __mcount_loc, and to make the options > available also when building kernel modules. > > Note that FTRACE_MCOUNT_USE_* options are updated on rebuild and > therefore, work even if the .config was generated in a different > environment. > > Signed-off-by: Sami Tolvanen <samitolvanen@google.com> > Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org> With this patch in place, parisc:allmodconfig no longer builds. Error log: Arch parisc is not supported with CONFIG_FTRACE_MCOUNT_RECORD at scripts/recordmcount.pl line 405. make[2]: *** [scripts/mod/empty.o] Error 2 Due to this problem, CONFIG_FTRACE_MCOUNT_RECORD can no longer be enabled in parisc builds. Since that is auto-selected by DYNAMIC_FTRACE, DYNAMIC_FTRACE can no longer be enabled, and with it everything that depends on it. Bisect log attached. Guenter --- # bad: [414eece95b98b209cef0f49cfcac108fd00b8ced] Merge tag 'clang-lto-v5.12-rc1-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux # good: [b12b47249688915e987a9a2a393b522f86f6b7ab] Merge tag 'powerpc-5.12-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux git bisect start '414eece95b98' 'b12b47249688' # bad: [f6e1e1d1e149802ed4062fa514c2d184d30aacdf] Merge tag 'gfs2-for-5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2 git bisect bad f6e1e1d1e149802ed4062fa514c2d184d30aacdf # bad: [79db4d2293eba2ce6265a341bedf6caecad5eeb3] Merge tag 'clang-lto-v5.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux git bisect bad 79db4d2293eba2ce6265a341bedf6caecad5eeb3 # good: [9d5032f97e9e0655e8c507ab1f43237e31520b00] dt-bindings: mediatek: mt8192: Fix dt_binding_check warning git bisect good 9d5032f97e9e0655e8c507ab1f43237e31520b00 # good: [f81f213850ca84b3d5e59e17d17acb2ecfc24076] Merge tag 'for-linus-5.12-1' of git://github.com/cminyard/linux-ipmi git bisect good f81f213850ca84b3d5e59e17d17acb2ecfc24076 # bad: [112b6a8e038d793d016e330f53acb9383ac504b3] arm64: allow LTO to be selected git bisect bad 112b6a8e038d793d016e330f53acb9383ac504b3 # bad: [3578ad11f3fba07e64c26d8db68cfd3dde28c59e] init: lto: fix PREL32 relocations git bisect bad 3578ad11f3fba07e64c26d8db68cfd3dde28c59e # bad: [22d429e75f24d114d99223389d6ba7047e952e32] kbuild: lto: limit inlining git bisect bad 22d429e75f24d114d99223389d6ba7047e952e32 # bad: [dc5723b02e523b2c4a68667f7e28c65018f7202f] kbuild: add support for Clang LTO git bisect bad dc5723b02e523b2c4a68667f7e28c65018f7202f # bad: [3b15cdc15956673ba1551d79bceae471436ac6a9] tracing: move function tracer options to Kconfig git bisect bad 3b15cdc15956673ba1551d79bceae471436ac6a9 # first bad commit: [3b15cdc15956673ba1551d79bceae471436ac6a9] tracing: move function tracer options to Kconfig
On Wed, Feb 24, 2021 at 12:17:23PM -0800, Guenter Roeck wrote: > On Fri, Dec 11, 2020 at 10:46:18AM -0800, Sami Tolvanen wrote: > > Move function tracer options to Kconfig to make it easier to add > > new methods for generating __mcount_loc, and to make the options > > available also when building kernel modules. > > > > Note that FTRACE_MCOUNT_USE_* options are updated on rebuild and > > therefore, work even if the .config was generated in a different > > environment. > > > > Signed-off-by: Sami Tolvanen <samitolvanen@google.com> > > Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org> > > With this patch in place, parisc:allmodconfig no longer builds. > > Error log: > Arch parisc is not supported with CONFIG_FTRACE_MCOUNT_RECORD at scripts/recordmcount.pl line 405. > make[2]: *** [scripts/mod/empty.o] Error 2 > > Due to this problem, CONFIG_FTRACE_MCOUNT_RECORD can no longer be > enabled in parisc builds. Since that is auto-selected by DYNAMIC_FTRACE, > DYNAMIC_FTRACE can no longer be enabled, and with it everything that > depends on it. Ew. Any idea why this didn't show up while it was in linux-next?
On Wed, Feb 24, 2021 at 12:38 PM Kees Cook <keescook@chromium.org> wrote: > > On Wed, Feb 24, 2021 at 12:17:23PM -0800, Guenter Roeck wrote: > > On Fri, Dec 11, 2020 at 10:46:18AM -0800, Sami Tolvanen wrote: > > > Move function tracer options to Kconfig to make it easier to add > > > new methods for generating __mcount_loc, and to make the options > > > available also when building kernel modules. > > > > > > Note that FTRACE_MCOUNT_USE_* options are updated on rebuild and > > > therefore, work even if the .config was generated in a different > > > environment. > > > > > > Signed-off-by: Sami Tolvanen <samitolvanen@google.com> > > > Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org> > > > > With this patch in place, parisc:allmodconfig no longer builds. > > > > Error log: > > Arch parisc is not supported with CONFIG_FTRACE_MCOUNT_RECORD at scripts/recordmcount.pl line 405. > > make[2]: *** [scripts/mod/empty.o] Error 2 > > > > Due to this problem, CONFIG_FTRACE_MCOUNT_RECORD can no longer be > > enabled in parisc builds. Since that is auto-selected by DYNAMIC_FTRACE, > > DYNAMIC_FTRACE can no longer be enabled, and with it everything that > > depends on it. > > Ew. Any idea why this didn't show up while it was in linux-next? Does anyone build parisc allmodconfig from -next? parisc seems to always use -fpatchable-function-entry with dynamic ftrace, so we just need to select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY to stop it from defaulting to recordmcount: diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index ecef9aff9d72..9ee806f68123 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig @@ -60,6 +60,7 @@ config PARISC select HAVE_KPROBES select HAVE_KRETPROBES select HAVE_DYNAMIC_FTRACE if $(cc-option,-fpatchable-function-entry=1,1) + select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY if HAVE_DYNAMIC_FTRACE select HAVE_FTRACE_MCOUNT_RECORD if HAVE_DYNAMIC_FTRACE select HAVE_KPROBES_ON_FTRACE select HAVE_DYNAMIC_FTRACE_WITH_REGS I'll send a proper patch shortly. Sami
On Wed, Feb 24, 2021 at 12:38:54PM -0800, Kees Cook wrote: > On Wed, Feb 24, 2021 at 12:17:23PM -0800, Guenter Roeck wrote: > > On Fri, Dec 11, 2020 at 10:46:18AM -0800, Sami Tolvanen wrote: > > > Move function tracer options to Kconfig to make it easier to add > > > new methods for generating __mcount_loc, and to make the options > > > available also when building kernel modules. > > > > > > Note that FTRACE_MCOUNT_USE_* options are updated on rebuild and > > > therefore, work even if the .config was generated in a different > > > environment. > > > > > > Signed-off-by: Sami Tolvanen <samitolvanen@google.com> > > > Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org> > > > > With this patch in place, parisc:allmodconfig no longer builds. > > > > Error log: > > Arch parisc is not supported with CONFIG_FTRACE_MCOUNT_RECORD at scripts/recordmcount.pl line 405. > > make[2]: *** [scripts/mod/empty.o] Error 2 > > > > Due to this problem, CONFIG_FTRACE_MCOUNT_RECORD can no longer be > > enabled in parisc builds. Since that is auto-selected by DYNAMIC_FTRACE, > > DYNAMIC_FTRACE can no longer be enabled, and with it everything that > > depends on it. > > Ew. Any idea why this didn't show up while it was in linux-next? > It did, I just wasn't able to bisect it there. Guenter
On Wed, Feb 24, 2021 at 12:54:15PM -0800, Sami Tolvanen wrote: > On Wed, Feb 24, 2021 at 12:38 PM Kees Cook <keescook@chromium.org> wrote: > > > > On Wed, Feb 24, 2021 at 12:17:23PM -0800, Guenter Roeck wrote: > > > On Fri, Dec 11, 2020 at 10:46:18AM -0800, Sami Tolvanen wrote: > > > > Move function tracer options to Kconfig to make it easier to add > > > > new methods for generating __mcount_loc, and to make the options > > > > available also when building kernel modules. > > > > > > > > Note that FTRACE_MCOUNT_USE_* options are updated on rebuild and > > > > therefore, work even if the .config was generated in a different > > > > environment. > > > > > > > > Signed-off-by: Sami Tolvanen <samitolvanen@google.com> > > > > Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org> > > > > > > With this patch in place, parisc:allmodconfig no longer builds. > > > > > > Error log: > > > Arch parisc is not supported with CONFIG_FTRACE_MCOUNT_RECORD at scripts/recordmcount.pl line 405. > > > make[2]: *** [scripts/mod/empty.o] Error 2 > > > > > > Due to this problem, CONFIG_FTRACE_MCOUNT_RECORD can no longer be > > > enabled in parisc builds. Since that is auto-selected by DYNAMIC_FTRACE, > > > DYNAMIC_FTRACE can no longer be enabled, and with it everything that > > > depends on it. > > > > Ew. Any idea why this didn't show up while it was in linux-next? > > Does anyone build parisc allmodconfig from -next? > https://kerneltests.org/builders/next-parisc-next Guenter > parisc seems to always use -fpatchable-function-entry with dynamic > ftrace, so we just need to select > FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY to stop it from defaulting > to recordmcount: > > diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig > index ecef9aff9d72..9ee806f68123 100644 > --- a/arch/parisc/Kconfig > +++ b/arch/parisc/Kconfig > @@ -60,6 +60,7 @@ config PARISC > select HAVE_KPROBES > select HAVE_KRETPROBES > select HAVE_DYNAMIC_FTRACE if > $(cc-option,-fpatchable-function-entry=1,1) > + select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY if HAVE_DYNAMIC_FTRACE > select HAVE_FTRACE_MCOUNT_RECORD if HAVE_DYNAMIC_FTRACE > select HAVE_KPROBES_ON_FTRACE > select HAVE_DYNAMIC_FTRACE_WITH_REGS > > I'll send a proper patch shortly. > > Sami
On Wed, Feb 24, 2021 at 02:28:07PM -0800, Guenter Roeck wrote: > On Wed, Feb 24, 2021 at 12:38:54PM -0800, Kees Cook wrote: > > On Wed, Feb 24, 2021 at 12:17:23PM -0800, Guenter Roeck wrote: > > > On Fri, Dec 11, 2020 at 10:46:18AM -0800, Sami Tolvanen wrote: > > > > Move function tracer options to Kconfig to make it easier to add > > > > new methods for generating __mcount_loc, and to make the options > > > > available also when building kernel modules. > > > > > > > > Note that FTRACE_MCOUNT_USE_* options are updated on rebuild and > > > > therefore, work even if the .config was generated in a different > > > > environment. > > > > > > > > Signed-off-by: Sami Tolvanen <samitolvanen@google.com> > > > > Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org> > > > > > > With this patch in place, parisc:allmodconfig no longer builds. > > > > > > Error log: > > > Arch parisc is not supported with CONFIG_FTRACE_MCOUNT_RECORD at scripts/recordmcount.pl line 405. > > > make[2]: *** [scripts/mod/empty.o] Error 2 > > > > > > Due to this problem, CONFIG_FTRACE_MCOUNT_RECORD can no longer be > > > enabled in parisc builds. Since that is auto-selected by DYNAMIC_FTRACE, > > > DYNAMIC_FTRACE can no longer be enabled, and with it everything that > > > depends on it. > > > > Ew. Any idea why this didn't show up while it was in linux-next? > > > > It did, I just wasn't able to bisect it there. Ah-ha! Okay, thanks. Sorry it's been broken for so long! I've added parisc to my local cross builder now.
diff --git a/Makefile b/Makefile index 9ec53d947628..94549264dd5c 100644 --- a/Makefile +++ b/Makefile @@ -851,12 +851,8 @@ KBUILD_CFLAGS += $(DEBUG_CFLAGS) export DEBUG_CFLAGS ifdef CONFIG_FUNCTION_TRACER -ifdef CONFIG_FTRACE_MCOUNT_RECORD - # gcc 5 supports generating the mcount tables directly - ifeq ($(call cc-option-yn,-mrecord-mcount),y) - CC_FLAGS_FTRACE += -mrecord-mcount - export CC_USING_RECORD_MCOUNT := 1 - endif +ifdef CONFIG_FTRACE_MCOUNT_USE_CC + CC_FLAGS_FTRACE += -mrecord-mcount ifdef CONFIG_HAVE_NOP_MCOUNT ifeq ($(call cc-option-yn, -mnop-mcount),y) CC_FLAGS_FTRACE += -mnop-mcount @@ -864,6 +860,12 @@ ifdef CONFIG_FTRACE_MCOUNT_RECORD endif endif endif +ifdef CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT + ifdef CONFIG_HAVE_C_RECORDMCOUNT + BUILD_C_RECORDMCOUNT := y + export BUILD_C_RECORDMCOUNT + endif +endif ifdef CONFIG_HAVE_FENTRY ifeq ($(call cc-option-yn, -mfentry),y) CC_FLAGS_FTRACE += -mfentry @@ -873,12 +875,6 @@ endif export CC_FLAGS_FTRACE KBUILD_CFLAGS += $(CC_FLAGS_FTRACE) $(CC_FLAGS_USING) KBUILD_AFLAGS += $(CC_FLAGS_USING) -ifdef CONFIG_DYNAMIC_FTRACE - ifdef CONFIG_HAVE_C_RECORDMCOUNT - BUILD_C_RECORDMCOUNT := y - export BUILD_C_RECORDMCOUNT - endif -endif endif # We trigger additional mismatches with less inlining diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig index e1bf5228fb69..616a198661d6 100644 --- a/kernel/trace/Kconfig +++ b/kernel/trace/Kconfig @@ -595,6 +595,22 @@ config FTRACE_MCOUNT_RECORD depends on DYNAMIC_FTRACE depends on HAVE_FTRACE_MCOUNT_RECORD +config FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY + bool + depends on FTRACE_MCOUNT_RECORD + +config FTRACE_MCOUNT_USE_CC + def_bool y + depends on $(cc-option,-mrecord-mcount) + depends on !FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY + depends on FTRACE_MCOUNT_RECORD + +config FTRACE_MCOUNT_USE_RECORDMCOUNT + def_bool y + depends on !FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY + depends on !FTRACE_MCOUNT_USE_CC + depends on FTRACE_MCOUNT_RECORD + config TRACING_MAP bool depends on ARCH_HAVE_NMI_SAFE_CMPXCHG diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 4c058f12dd73..22654a463ad8 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -178,8 +178,7 @@ cmd_modversions_c = \ fi endif -ifdef CONFIG_FTRACE_MCOUNT_RECORD -ifndef CC_USING_RECORD_MCOUNT +ifdef CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT # compiler will not generate __mcount_loc use recordmcount or recordmcount.pl ifdef BUILD_C_RECORDMCOUNT ifeq ("$(origin RECORDMCOUNT_WARN)", "command line") @@ -206,8 +205,7 @@ recordmcount_source := $(srctree)/scripts/recordmcount.pl endif # BUILD_C_RECORDMCOUNT cmd_record_mcount = $(if $(findstring $(strip $(CC_FLAGS_FTRACE)),$(_c_flags)), \ $(sub_cmd_record_mcount)) -endif # CC_USING_RECORD_MCOUNT -endif # CONFIG_FTRACE_MCOUNT_RECORD +endif # CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT ifdef CONFIG_STACK_VALIDATION ifneq ($(SKIP_STACK_VALIDATION),1)