This patch set enables s390 to use gcc's s390 specific "--mhotpatch" compile option if the kernel is instrumented for function tracing.
The normal -pg compile option adds 24 bytes to each function prologue. Performance measurements have shown that, depending on the workload, we have an impact of up to 2% - 10% additional cpu time spent as compared to a kernel which is compiled without the -pg option. In both cases function tracing is disabled. What we see is the overhead caused by simply adding 24 additional bytes to each function, where the first instruction is patched to skip the rest of the code block, which besides other effects causes instruction cache pollution. These patches change code generation on s390 to only add a single six byte nop to each function trace enabled function. With this change the overhead gets reduced close to zero. I tried to minimize the common code changes, which resulted mainly in a new CC_FTRACE_FLAGS makefile variable and a new "nohotpatch" define. The rest is s390 specific. The patches are against linux-next as of today. The gcc hotpatch feature patch, which changes the existing hotpatch mechanism to allow to specify the number of halfwords before/after the beginning of a function is not yet upstream, but should be soon. Heiko Carstens (3): ftrace: allow architectures to specify ftrace compile options ftrace: introduce nohotpatch function attribute s390/ftrace: hotpatch support for function tracing Makefile | 6 +++++- arch/s390/Kconfig | 1 - arch/s390/Makefile | 10 ++++++++++ arch/s390/include/asm/ftrace.h | 15 +++++++++++++++ arch/s390/kernel/Makefile | 4 ++-- arch/s390/kernel/ftrace.c | 15 ++++++++++++++- arch/s390/kernel/kprobes.c | 3 ++- arch/s390/kernel/mcount.S | 2 ++ include/linux/compiler.h | 8 +++++++- kernel/Makefile | 4 ++-- kernel/events/Makefile | 2 +- kernel/locking/Makefile | 8 ++++---- kernel/sched/Makefile | 2 +- kernel/trace/Makefile | 4 ++-- lib/Makefile | 2 +- scripts/Makefile.build | 5 +++-- scripts/recordmcount.pl | 9 +++++++-- 17 files changed, 78 insertions(+), 22 deletions(-) -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/