Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2464a609 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

ftrace: do not trace library functions



make function tracing more robust: do not trace library functions.

We've already got a sizable list of exceptions:

 ifdef CONFIG_FTRACE
 # Do not profile string.o, since it may be used in early boot or vdso
 CFLAGS_REMOVE_string.o = -pg
 # Also do not profile any debug utilities
 CFLAGS_REMOVE_spinlock_debug.o = -pg
 CFLAGS_REMOVE_list_debug.o = -pg
 CFLAGS_REMOVE_debugobjects.o = -pg
 CFLAGS_REMOVE_find_next_bit.o = -pg
 CFLAGS_REMOVE_cpumask.o = -pg
 CFLAGS_REMOVE_bitmap.o = -pg
 endif

... and the pattern has been that random library functionality showed
up in ftrace's critical path (outside of its recursion check), causing
hard to debug lockups.

So be a bit defensive about it and exclude all lib/*.o functions by
default. It's not that they are overly interesting for tracing purposes
anyway. Specific ones can still be traced, in an opt-in manner.

Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent c349e0a0
Loading
Loading
Loading
Loading
+5 −12
Original line number Original line Diff line number Diff line
@@ -2,24 +2,17 @@
# Makefile for some libs needed in the kernel.
# Makefile for some libs needed in the kernel.
#
#


ifdef CONFIG_FTRACE
ORIG_CFLAGS := $(KBUILD_CFLAGS)
KBUILD_CFLAGS = $(subst -pg,,$(ORIG_CFLAGS))
endif

lib-y := ctype.o string.o vsprintf.o cmdline.o \
lib-y := ctype.o string.o vsprintf.o cmdline.o \
	 rbtree.o radix-tree.o dump_stack.o \
	 rbtree.o radix-tree.o dump_stack.o \
	 idr.o int_sqrt.o extable.o prio_tree.o \
	 idr.o int_sqrt.o extable.o prio_tree.o \
	 sha1.o irq_regs.o reciprocal_div.o argv_split.o \
	 sha1.o irq_regs.o reciprocal_div.o argv_split.o \
	 proportions.o prio_heap.o ratelimit.o
	 proportions.o prio_heap.o ratelimit.o


ifdef CONFIG_FTRACE
# Do not profile string.o, since it may be used in early boot or vdso
CFLAGS_REMOVE_string.o = -pg
# Also do not profile any debug utilities
CFLAGS_REMOVE_spinlock_debug.o = -pg
CFLAGS_REMOVE_list_debug.o = -pg
CFLAGS_REMOVE_debugobjects.o = -pg
CFLAGS_REMOVE_find_next_bit.o = -pg
CFLAGS_REMOVE_cpumask.o = -pg
CFLAGS_REMOVE_bitmap.o = -pg
endif

lib-$(CONFIG_MMU) += ioremap.o
lib-$(CONFIG_MMU) += ioremap.o
lib-$(CONFIG_SMP) += cpumask.o
lib-$(CONFIG_SMP) += cpumask.o