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 <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Anders Roxell <[email protected]>
---
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
+
ifdef CONFIG_FTRACE_SELFTEST
# selftest needs instrumentation
CFLAGS_trace_selftest_dynamic.o = $(CC_FLAGS_FTRACE)
--
2.19.2
On Fri, 30 Nov 2018 16:09:35 +0100
Anders Roxell <[email protected]> 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 <[email protected]>
> Signed-off-by: Arnd Bergmann <[email protected]>
> Signed-off-by: Anders Roxell <[email protected]>
> ---
> 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) <[email protected]>
-- Steve
> ifdef CONFIG_FTRACE_SELFTEST
> # selftest needs instrumentation
> CFLAGS_trace_selftest_dynamic.o = $(CC_FLAGS_FTRACE)