[2/3] tracing: instruct KCOV not to track tracing files

Message ID 20181130150935.27493-1-anders.roxell@linaro.org
State New
Headers show
Series
  • [1/3] stackleak: mark stackleak_track_stack() as notrace
Related show

Commit Message

Anders Roxell Nov. 30, 2018, 3:09 p.m.
When we have KCOV enabled and running ftrace startup tests we end up in
a softlockup. Kcov and ftrace tracing each other makes it really slow:

[  275.141388] Testing tracer wakeup_dl:  PASSED
[  304.738345] Testing tracer function_graph:
[  716.236822] watchdog: BUG: soft lockup - CPU#0 stuck for 21s! [ksoftirqd/0:9]

Rework so that we don't let KCOV look at tracing files. Could probably
be more selective here, but in in general letting KCOV and ftrace check
each isn't the best idea.

Co-developed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Signed-off-by: Anders Roxell <anders.roxell@linaro.org>

---
 kernel/trace/Makefile | 5 +++++
 1 file changed, 5 insertions(+)

-- 
2.19.2

Comments

Steven Rostedt Nov. 30, 2018, 3:22 p.m. | #1
On Fri, 30 Nov 2018 16:09:35 +0100
Anders Roxell <anders.roxell@linaro.org> wrote:

> When we have KCOV enabled and running ftrace startup tests we end up in

> a softlockup. Kcov and ftrace tracing each other makes it really slow:

> 

> [  275.141388] Testing tracer wakeup_dl:  PASSED

> [  304.738345] Testing tracer function_graph:

> [  716.236822] watchdog: BUG: soft lockup - CPU#0 stuck for 21s! [ksoftirqd/0:9]

> 

> Rework so that we don't let KCOV look at tracing files. Could probably

> be more selective here, but in in general letting KCOV and ftrace check

> each isn't the best idea.

> 

> Co-developed-by: Arnd Bergmann <arnd@arndb.de>

> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

> Signed-off-by: Anders Roxell <anders.roxell@linaro.org>

> ---

>  kernel/trace/Makefile | 5 +++++

>  1 file changed, 5 insertions(+)

> 

> diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile

> index f81dadbc7c4a..c7c73b976103 100644

> --- a/kernel/trace/Makefile

> +++ b/kernel/trace/Makefile

> @@ -6,6 +6,11 @@ ifdef CONFIG_FUNCTION_TRACER

>  ORIG_CFLAGS := $(KBUILD_CFLAGS)

>  KBUILD_CFLAGS = $(subst $(CC_FLAGS_FTRACE),,$(ORIG_CFLAGS))

>  

> +# If instrumentation of this dir is enabled, the function tracer gets really

> +# slow. Probably could be more selective here, but note that files related

> +# to tracing.shouldn't be traced anyway.

> +KCOV_INSTRUMENT		:= n

> +


The entire directory is also set to not be traced by function tracing,
which also is a bit overkill, as there's functions in this directory
that can (and probably should) be.

Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>


-- Steve

>  ifdef CONFIG_FTRACE_SELFTEST

>  # selftest needs instrumentation

>  CFLAGS_trace_selftest_dynamic.o = $(CC_FLAGS_FTRACE)

Patch

diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile
index f81dadbc7c4a..c7c73b976103 100644
--- a/kernel/trace/Makefile
+++ b/kernel/trace/Makefile
@@ -6,6 +6,11 @@  ifdef CONFIG_FUNCTION_TRACER
 ORIG_CFLAGS := $(KBUILD_CFLAGS)
 KBUILD_CFLAGS = $(subst $(CC_FLAGS_FTRACE),,$(ORIG_CFLAGS))
 
+# If instrumentation of this dir is enabled, the function tracer gets really
+# slow. Probably could be more selective here, but note that files related
+# to tracing.shouldn't be traced anyway.
+KCOV_INSTRUMENT		:= n
+
 ifdef CONFIG_FTRACE_SELFTEST
 # selftest needs instrumentation
 CFLAGS_trace_selftest_dynamic.o = $(CC_FLAGS_FTRACE)