Under the help of the -mlong-calls option of gcc, This revision comes with the module tracing support. and there are also lots of cleanups and fixes. therefore, it is ready to upstream. Currently, function graph tracer support have some overhead for searching the stack address of the return address(ra). we hope the PROFILE_BEFORE_PROLOGUE macro will be enabled by default in the next version of gcc, and then the overhead can be removed via hijacking the ra register directly for both non-leaf and leaf function. Thanks very much to the people in the CC list for their feedbacks, all the lastest changes goes to this git repo: git://dev.lemote.com/rt4ls.git linux-mips/dev/ftrace-upstream Welcome to play with it and give more feedbacks. Thanks & Regards, Wu Zhangjin Wu Zhangjin (11): tracing: convert trace_clock_local() as weak function MIPS: add mips_timecounter_read() to get high precision timestamp tracing: add MIPS specific trace_clock_local() tracing: add static function tracer support for MIPS tracing: enable HAVE_FUNCTION_TRACE_MCOUNT_TEST for MIPS tracing: add an endian argument to scripts/recordmcount.pl tracing: add dynamic function tracer support for MIPS tracing: not trace mips_timecounter_init() in MIPS tracing: add IRQENTRY_EXIT for MIPS tracing: add function graph tracer support for MIPS tracing: add dynamic function graph tracer for MIPS arch/mips/Kconfig | 5 + arch/mips/Makefile | 4 + arch/mips/include/asm/ftrace.h | 37 ++++++++- arch/mips/include/asm/time.h | 19 ++++ arch/mips/kernel/Makefile | 9 ++ arch/mips/kernel/csrc-r4k.c | 41 +++++++++ arch/mips/kernel/ftrace.c | 190 ++++++++++++++++++++++++++++++++++++++++ arch/mips/kernel/mcount.S | 177 +++++++++++++++++++++++++++++++++++++ arch/mips/kernel/mips_ksyms.c | 5 + arch/mips/kernel/time.c | 2 + arch/mips/kernel/trace_clock.c | 33 +++++++ arch/mips/kernel/vmlinux.lds.S | 1 + include/linux/clocksource.h | 2 +- kernel/time/clocksource.c | 4 +- kernel/trace/trace_clock.c | 2 +- scripts/Makefile.build | 1 + scripts/recordmcount.pl | 44 +++++++++- 17 files changed, 568 insertions(+), 8 deletions(-) create mode 100644 arch/mips/kernel/ftrace.c create mode 100644 arch/mips/kernel/mcount.S create mode 100644 arch/mips/kernel/trace_clock.c