Thread (26 messages) 26 messages, 4 authors, 2016-02-10

Re: [PATCH v7 04/10] ppc64 ftrace_with_regs configuration variables

From: Petr Mladek <pmladek@suse.com>
Date: 2016-02-05 16:18:39
Also in: linuxppc-dev
Subsystem: the rest, tracing · Maintainers: Linus Torvalds, Steven Rostedt, Masami Hiramatsu

On Fri 2016-02-05 09:48:03, Steven Rostedt wrote:
quoted hunk ↗ jump to hunk
On Fri, 5 Feb 2016 15:05:17 +0100
Petr Mladek [off-list ref] wrote:
quoted
On Mon 2016-01-25 16:29:54, Torsten Duwe wrote:
quoted
diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c
index ef8b916..29b7014 100644
--- a/arch/powerpc/kernel/ftrace.c
+++ b/arch/powerpc/kernel/ftrace.c
@@ -28,6 +28,11 @@
 
 
 #ifdef CONFIG_DYNAMIC_FTRACE
+#if defined(CONFIG_DYNAMIC_FTRACE_WITH_REGS) && defined(CONFIG_PPC64) && \
+  !defined(CC_USING_MPROFILE_KERNEL)
+#error "DYNAMIC_FTRACE_WITH_REGS requires working -mprofile-kernel"
+#endif  
CONFIG_DYNAMIC_FTRACE_WITH_REGS is automatically enabled when
both CONFIG_DYNAMIC_FTRACE and HAVE_DYNAMIC_FTRACE_WITH_REGS
are enabled.

Therefore it is not possible to build kernel with broken gcc
and DYNAMIC_FTRACE.

IMHO, we need to allow to explicitely disable DYNAMIC_FTRACE_WITH_REGS
if the compiler is broken to get around this build error.

We either need to define DYNAMIC_FTRACE_WITH_REGS as a proper
bool with description, help text, ... Or we need a way to
explicitely disable HAVE_DYNAMIC_FTRACE_WITH_REGS. Or something
like this.
You mean something like this?

(not tested)

-- Steve
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index e45db6b0d878..19377bacebfc 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -470,6 +470,19 @@ config DYNAMIC_FTRACE_WITH_REGS
 	def_bool y
 	depends on DYNAMIC_FTRACE
 	depends on HAVE_DYNAMIC_FTRACE_WITH_REGS
+	depends on !DISABLE_DYNAMIC_FTRACE_WITH_REGS
+
+config DISABLE_DYNAMIC_FTRACE_WITH_REGS
+       bool "Force build to not have function tracer pass in registers"
+       depends on DYNAMIC_FTRACE
+       depends on HAVE_DYNAMIC_FTRACE_WITH_REGS
+       help
+	 If the architecture supports passing in registers to the function
+	 tracer, then that is automatically enabled. But there may be some
+	 compilers out there that are broken and cause this to fail.
+	 This option makes the build think that the architecture does not
+	 support the register passing and allows the build to work even
+	 with compilers that do not support the feature.g
s/feature.g/feature/

 config FUNCTION_PROFILER
 	bool "Kernel function profiler"
It works but the extra option and reverse logic makes things even
more complicated. Whem I think about it, the change below does similar
job and looks more strightforwad:
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index a138f6d..de6dab0 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -449,7 +449,7 @@ config PROBE_EVENTS
 	def_bool n
 
 config DYNAMIC_FTRACE
-	bool "enable/disable function tracing dynamically"
+	bool "Enable/Disable function tracing dynamically"
 	depends on FUNCTION_TRACER
 	depends on HAVE_DYNAMIC_FTRACE
 	default y
@@ -472,9 +472,17 @@ config DYNAMIC_FTRACE
 	  otherwise has native performance as long as no tracing is active.
 
 config DYNAMIC_FTRACE_WITH_REGS
-	def_bool y
+	bool "Pass registers to function tracer"
 	depends on DYNAMIC_FTRACE
 	depends on HAVE_DYNAMIC_FTRACE_WITH_REGS
+	default y
+	help
+	  This option enables passing the current state of processor
+	  registers to the function tracer. It allows to do a more
+	  detailed analyze and print more information.
+
+	  Say Y here if you are unsure. The only exception is if
+	  you want to pass a build error caused by a broken compiler.
 
 config FUNCTION_PROFILER
 	bool "Kernel function profiler"

I made "enable/disable" uppercase because it looked weird in
context of other descritions.

Best Regards,
Petr
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help