From 28bb030f93334495ddc64ade0bff18721bf7023d Mon Sep 17 00:00:00 2001 From: Guo Ren Date: Fri, 1 Mar 2019 08:50:36 +0800 Subject: csky/ftrace: Add dynamic function tracer (include graph tracer) Support dynamic ftrace including dynamic graph tracer. Gcc-csky with -pg will produce call site in every function prologue and we can use these call site to hook trace function. gcc with -pg origin call site: push lr jbsr _mcount nop32 nop32 If the (callee - caller)'s offset is in range of bsr instruction, we'll modify code with: push lr bsr _mcount nop32 nop32 Else if the (callee - caller)'s offset is out of bsr instrunction, we'll modify code with: push lr movih r26, ... ori r26, ... jsr r26 (r26 is reserved for jsr link reg in csky abiv2 spec.) Signed-off-by: Guo Ren --- arch/csky/Kconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'arch/csky/Kconfig') diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig index 725a115759c9..60ebaa325584 100644 --- a/arch/csky/Kconfig +++ b/arch/csky/Kconfig @@ -29,13 +29,14 @@ config CSKY select GENERIC_SCHED_CLOCK select GENERIC_SMP_IDLE_THREAD select HAVE_ARCH_TRACEHOOK + select HAVE_DYNAMIC_FTRACE select HAVE_FUNCTION_TRACER select HAVE_FUNCTION_GRAPH_TRACER + select HAVE_FTRACE_MCOUNT_RECORD select HAVE_KERNEL_GZIP select HAVE_KERNEL_LZO select HAVE_KERNEL_LZMA select HAVE_PERF_EVENTS - select HAVE_C_RECORDMCOUNT select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select MAY_HAVE_SPARSE_IRQ -- cgit v1.2.3 From 2f7932b011e7fb9f98732f95a68f6017d4d8c542 Mon Sep 17 00:00:00 2001 From: Guo Ren Date: Wed, 20 Mar 2019 18:27:27 +0800 Subject: csky: Update syscall_trace_enter/exit implementation Previous syscall_trace implementation couldn't support AUDITSYSCALL and SYSCALL_TRACEPOINTS. Now we redesign it to support audit_syscall and syscall_tracepoints just like other archs'. Signed-off-by: Guo Ren Cc: Dmitry V. Levin Cc: Arnd Bergmann --- arch/csky/Kconfig | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arch/csky/Kconfig') diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig index 60ebaa325584..c4974cf6a222 100644 --- a/arch/csky/Kconfig +++ b/arch/csky/Kconfig @@ -29,6 +29,7 @@ config CSKY select GENERIC_SCHED_CLOCK select GENERIC_SMP_IDLE_THREAD select HAVE_ARCH_TRACEHOOK + select HAVE_ARCH_AUDITSYSCALL select HAVE_DYNAMIC_FTRACE select HAVE_FUNCTION_TRACER select HAVE_FUNCTION_GRAPH_TRACER @@ -39,6 +40,7 @@ config CSKY select HAVE_PERF_EVENTS select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS + select HAVE_SYSCALL_TRACEPOINTS select MAY_HAVE_SPARSE_IRQ select MODULES_USE_ELF_RELA if MODULES select OF -- cgit v1.2.3 From daac95e70f482e7add3305ee5e38f00dca505268 Mon Sep 17 00:00:00 2001 From: Mao Han Date: Mon, 15 Apr 2019 17:17:29 +0800 Subject: csky: Add support for perf registers sampling This patch implements the perf registers sampling and validation API for csky arch. The valid registers and their register ID are defined in perf_regs.h. Perf tool can backtrace in userspace with unwind library and the registers/user stack dump support. Signed-off-by: Mao Han Signed-off-by: Guo Ren --- arch/csky/Kconfig | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arch/csky/Kconfig') diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig index c4974cf6a222..8e45c7ac8e24 100644 --- a/arch/csky/Kconfig +++ b/arch/csky/Kconfig @@ -38,6 +38,8 @@ config CSKY select HAVE_KERNEL_LZO select HAVE_KERNEL_LZMA select HAVE_PERF_EVENTS + select HAVE_PERF_REGS + select HAVE_PERF_USER_STACK_DUMP select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select HAVE_SYSCALL_TRACEPOINTS -- cgit v1.2.3