From: AKASHI Takahiro <takahiro.akashi@linaro.org> To: rostedt@goodmis.org, fweisbec@gmail.com, mingo@redhat.com, catalin.marinas@arm.com, will.deacon@arm.com, tim.bird@sonymobile.com Cc: gkulkarni@caviumnetworks.com, dsaxena@linaro.org, arndb@arndb.de, linux-arm-kernel@lists.infradead.org, linaro-kernel@lists.linaro.org, linux-kernel@vger.kernel.org, AKASHI Takahiro <takahiro.akashi@linaro.org> Subject: [PATCH v8 6/8] arm64: ftrace: Add dynamic ftrace support Date: Wed, 30 Apr 2014 18:54:34 +0900 [thread overview] Message-ID: <1398851676-16389-7-git-send-email-takahiro.akashi@linaro.org> (raw) In-Reply-To: <1398851676-16389-1-git-send-email-takahiro.akashi@linaro.org> This patch allows "dynamic ftrace" if CONFIG_DYNAMIC_FTRACE is enabled. Here we can turn on and off tracing dynamically per-function base. On arm64, this is done by patching single branch instruction to _mcount() inserted by gcc -pg option. The branch is replaced to NOP initially at kernel start up, and later on, NOP to branch to ftrace_caller() when enabled or branch to NOP when disabled. Please note that ftrace_caller() is a counterpart of _mcount() in case of 'static' ftrace. More details on architecture specific requirements are described in Documentation/trace/ftrace-design.txt. Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> --- arch/arm64/Kconfig | 1 + arch/arm64/include/asm/ftrace.h | 15 +++++ arch/arm64/kernel/entry-ftrace.S | 43 +++++++++++++++ arch/arm64/kernel/ftrace.c | 112 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 171 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 856007e..438a4ea 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -36,6 +36,7 @@ config ARM64 select HAVE_DMA_API_DEBUG select HAVE_DMA_ATTRS select HAVE_DMA_CONTIGUOUS + select HAVE_DYNAMIC_FTRACE select HAVE_EFFICIENT_UNALIGNED_ACCESS select HAVE_FTRACE_MCOUNT_RECORD select HAVE_FUNCTION_TRACER diff --git a/arch/arm64/include/asm/ftrace.h b/arch/arm64/include/asm/ftrace.h index 58ea595..ed5c448 100644 --- a/arch/arm64/include/asm/ftrace.h +++ b/arch/arm64/include/asm/ftrace.h @@ -18,6 +18,21 @@ #ifndef __ASSEMBLY__ extern void _mcount(unsigned long); + +struct dyn_arch_ftrace { + /* No extra data needed for arm64 */ +}; + +extern unsigned long ftrace_graph_call; + +static inline unsigned long ftrace_call_adjust(unsigned long addr) +{ + /* + * addr is the address of the mcount call instruction. + * recordmcount does the necessary offset calculation. + */ + return addr; +} #endif /* __ASSEMBLY__ */ #endif /* __ASM_FTRACE_H */ diff --git a/arch/arm64/kernel/entry-ftrace.S b/arch/arm64/kernel/entry-ftrace.S index b2d8c45..b051871 100644 --- a/arch/arm64/kernel/entry-ftrace.S +++ b/arch/arm64/kernel/entry-ftrace.S @@ -86,6 +86,7 @@ add \reg, \reg, #8 .endm +#ifndef CONFIG_DYNAMIC_FTRACE /* * void _mcount(unsigned long return_address) * @return_address: return address to instrumented function @@ -134,6 +135,48 @@ skip_ftrace_call: #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ ENDPROC(_mcount) +#else /* CONFIG_DYNAMIC_FTRACE */ +/* + * _mcount() is used to build the kernel with -pg option, but all the branch + * instructions to _mcount() are replaced to NOP initially at kernel start up, + * and later on, NOP to branch to ftrace_caller() when enabled or branch to + * NOP when disabled per-function base. + */ +ENTRY(_mcount) + ret +ENDPROC(_mcount) + +/* + * void ftrace_caller(unsigned long return_address) + * @return_address: return address to instrumented function + * + * This function is a counterpart of _mcount() in 'static' ftrace, and + * makes calls to: + * - tracer function to probe instrumented function's entry, + * - ftrace_graph_caller to set up an exit hook + */ +ENTRY(ftrace_caller) + mcount_enter + + mcount_get_pc0 x0 // function's pc + mcount_get_lr x1 // function's lr + + .global ftrace_call +ftrace_call: // tracer(pc, lr); + nop // This will be replaced with "bl xxx" + // where xxx can be any kind of tracer. + +#ifdef CONFIG_FUNCTION_GRAPH_TRACER + .global ftrace_graph_call +ftrace_graph_call: // ftrace_graph_caller(); + nop // If enabled, this will be replaced + // "b ftrace_graph_caller" +#endif + + mcount_exit +ENDPROC(ftrace_caller) +#endif /* CONFIG_DYNAMIC_FTRACE */ + ENTRY(ftrace_stub) ret ENDPROC(ftrace_stub) diff --git a/arch/arm64/kernel/ftrace.c b/arch/arm64/kernel/ftrace.c index a559ab8..7924d73 100644 --- a/arch/arm64/kernel/ftrace.c +++ b/arch/arm64/kernel/ftrace.c @@ -17,6 +17,87 @@ #include <asm/ftrace.h> #include <asm/insn.h> +#ifdef CONFIG_DYNAMIC_FTRACE +/* + * Replace a single instruction, which may be a branch or NOP. + * If @validate == true, a replaced instruction is checked against 'old'. + */ +static int ftrace_modify_code(unsigned long pc, u32 old, u32 new, + bool validate) +{ + u32 replaced; + + /* + * Note: + * Due to modules and __init, code can disappear and change, + * we need to protect against faulting as well as code changing. + * We do this by aarch64_insn_*() which use the probe_kernel_*(). + * + * No lock is held here because all the modifications are run + * through stop_machine(). + */ + if (validate) { + if (aarch64_insn_read((void *)pc, &replaced)) + return -EFAULT; + + if (replaced != old) + return -EINVAL; + } + if (aarch64_insn_patch_text_nosync((void *)pc, new)) + return -EPERM; + + return 0; +} + +/* + * Replace tracer function in ftrace_caller() + */ +int ftrace_update_ftrace_func(ftrace_func_t func) +{ + unsigned long pc; + u32 new; + + pc = (unsigned long)&ftrace_call; + new = aarch64_insn_gen_branch_imm(pc, (unsigned long)func, true); + + return ftrace_modify_code(pc, 0, new, false); +} + +/* + * Turn on the call to ftrace_caller() in instrumented function + */ +int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) +{ + unsigned long pc = rec->ip; + u32 old, new; + + old = aarch64_insn_gen_nop(); + new = aarch64_insn_gen_branch_imm(pc, addr, true); + + return ftrace_modify_code(pc, old, new, true); +} + +/* + * Turn off the call to ftrace_caller() in instrumented function + */ +int ftrace_make_nop(struct module *mod, struct dyn_ftrace *rec, + unsigned long addr) +{ + unsigned long pc = rec->ip; + u32 old, new; + + old = aarch64_insn_gen_branch_imm(pc, addr, true); + new = aarch64_insn_gen_nop(); + + return ftrace_modify_code(pc, old, new, true); +} + +int __init ftrace_dyn_arch_init(void) +{ + return 0; +} +#endif /* CONFIG_DYNAMIC_FTRACE */ + #ifdef CONFIG_FUNCTION_GRAPH_TRACER /* * function_graph tracer expects ftrace_return_to_handler() to be called @@ -61,4 +142,35 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr, return; } } + +#ifdef CONFIG_DYNAMIC_FTRACE +/* + * Turn on/off the call to ftrace_graph_caller() in ftrace_caller() + * depending on @enable. + */ +static int ftrace_modify_graph_caller(bool enable) +{ + unsigned long pc = (unsigned long)&ftrace_graph_call; + u32 branch, nop; + + branch = aarch64_insn_gen_branch_imm(pc, + (unsigned long)ftrace_graph_caller, false); + nop = aarch64_insn_gen_nop(); + + if (enable) + return ftrace_modify_code(pc, nop, branch, true); + else + return ftrace_modify_code(pc, branch, nop, true); +} + +int ftrace_enable_ftrace_graph_caller(void) +{ + return ftrace_modify_graph_caller(true); +} + +int ftrace_disable_ftrace_graph_caller(void) +{ + return ftrace_modify_graph_caller(false); +} +#endif /* CONFIG_DYNAMIC_FTRACE */ #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ -- 1.7.9.5
WARNING: multiple messages have this Message-ID (diff)
From: takahiro.akashi@linaro.org (AKASHI Takahiro) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v8 6/8] arm64: ftrace: Add dynamic ftrace support Date: Wed, 30 Apr 2014 18:54:34 +0900 [thread overview] Message-ID: <1398851676-16389-7-git-send-email-takahiro.akashi@linaro.org> (raw) In-Reply-To: <1398851676-16389-1-git-send-email-takahiro.akashi@linaro.org> This patch allows "dynamic ftrace" if CONFIG_DYNAMIC_FTRACE is enabled. Here we can turn on and off tracing dynamically per-function base. On arm64, this is done by patching single branch instruction to _mcount() inserted by gcc -pg option. The branch is replaced to NOP initially at kernel start up, and later on, NOP to branch to ftrace_caller() when enabled or branch to NOP when disabled. Please note that ftrace_caller() is a counterpart of _mcount() in case of 'static' ftrace. More details on architecture specific requirements are described in Documentation/trace/ftrace-design.txt. Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> --- arch/arm64/Kconfig | 1 + arch/arm64/include/asm/ftrace.h | 15 +++++ arch/arm64/kernel/entry-ftrace.S | 43 +++++++++++++++ arch/arm64/kernel/ftrace.c | 112 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 171 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 856007e..438a4ea 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -36,6 +36,7 @@ config ARM64 select HAVE_DMA_API_DEBUG select HAVE_DMA_ATTRS select HAVE_DMA_CONTIGUOUS + select HAVE_DYNAMIC_FTRACE select HAVE_EFFICIENT_UNALIGNED_ACCESS select HAVE_FTRACE_MCOUNT_RECORD select HAVE_FUNCTION_TRACER diff --git a/arch/arm64/include/asm/ftrace.h b/arch/arm64/include/asm/ftrace.h index 58ea595..ed5c448 100644 --- a/arch/arm64/include/asm/ftrace.h +++ b/arch/arm64/include/asm/ftrace.h @@ -18,6 +18,21 @@ #ifndef __ASSEMBLY__ extern void _mcount(unsigned long); + +struct dyn_arch_ftrace { + /* No extra data needed for arm64 */ +}; + +extern unsigned long ftrace_graph_call; + +static inline unsigned long ftrace_call_adjust(unsigned long addr) +{ + /* + * addr is the address of the mcount call instruction. + * recordmcount does the necessary offset calculation. + */ + return addr; +} #endif /* __ASSEMBLY__ */ #endif /* __ASM_FTRACE_H */ diff --git a/arch/arm64/kernel/entry-ftrace.S b/arch/arm64/kernel/entry-ftrace.S index b2d8c45..b051871 100644 --- a/arch/arm64/kernel/entry-ftrace.S +++ b/arch/arm64/kernel/entry-ftrace.S @@ -86,6 +86,7 @@ add \reg, \reg, #8 .endm +#ifndef CONFIG_DYNAMIC_FTRACE /* * void _mcount(unsigned long return_address) * @return_address: return address to instrumented function @@ -134,6 +135,48 @@ skip_ftrace_call: #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ ENDPROC(_mcount) +#else /* CONFIG_DYNAMIC_FTRACE */ +/* + * _mcount() is used to build the kernel with -pg option, but all the branch + * instructions to _mcount() are replaced to NOP initially at kernel start up, + * and later on, NOP to branch to ftrace_caller() when enabled or branch to + * NOP when disabled per-function base. + */ +ENTRY(_mcount) + ret +ENDPROC(_mcount) + +/* + * void ftrace_caller(unsigned long return_address) + * @return_address: return address to instrumented function + * + * This function is a counterpart of _mcount() in 'static' ftrace, and + * makes calls to: + * - tracer function to probe instrumented function's entry, + * - ftrace_graph_caller to set up an exit hook + */ +ENTRY(ftrace_caller) + mcount_enter + + mcount_get_pc0 x0 // function's pc + mcount_get_lr x1 // function's lr + + .global ftrace_call +ftrace_call: // tracer(pc, lr); + nop // This will be replaced with "bl xxx" + // where xxx can be any kind of tracer. + +#ifdef CONFIG_FUNCTION_GRAPH_TRACER + .global ftrace_graph_call +ftrace_graph_call: // ftrace_graph_caller(); + nop // If enabled, this will be replaced + // "b ftrace_graph_caller" +#endif + + mcount_exit +ENDPROC(ftrace_caller) +#endif /* CONFIG_DYNAMIC_FTRACE */ + ENTRY(ftrace_stub) ret ENDPROC(ftrace_stub) diff --git a/arch/arm64/kernel/ftrace.c b/arch/arm64/kernel/ftrace.c index a559ab8..7924d73 100644 --- a/arch/arm64/kernel/ftrace.c +++ b/arch/arm64/kernel/ftrace.c @@ -17,6 +17,87 @@ #include <asm/ftrace.h> #include <asm/insn.h> +#ifdef CONFIG_DYNAMIC_FTRACE +/* + * Replace a single instruction, which may be a branch or NOP. + * If @validate == true, a replaced instruction is checked against 'old'. + */ +static int ftrace_modify_code(unsigned long pc, u32 old, u32 new, + bool validate) +{ + u32 replaced; + + /* + * Note: + * Due to modules and __init, code can disappear and change, + * we need to protect against faulting as well as code changing. + * We do this by aarch64_insn_*() which use the probe_kernel_*(). + * + * No lock is held here because all the modifications are run + * through stop_machine(). + */ + if (validate) { + if (aarch64_insn_read((void *)pc, &replaced)) + return -EFAULT; + + if (replaced != old) + return -EINVAL; + } + if (aarch64_insn_patch_text_nosync((void *)pc, new)) + return -EPERM; + + return 0; +} + +/* + * Replace tracer function in ftrace_caller() + */ +int ftrace_update_ftrace_func(ftrace_func_t func) +{ + unsigned long pc; + u32 new; + + pc = (unsigned long)&ftrace_call; + new = aarch64_insn_gen_branch_imm(pc, (unsigned long)func, true); + + return ftrace_modify_code(pc, 0, new, false); +} + +/* + * Turn on the call to ftrace_caller() in instrumented function + */ +int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) +{ + unsigned long pc = rec->ip; + u32 old, new; + + old = aarch64_insn_gen_nop(); + new = aarch64_insn_gen_branch_imm(pc, addr, true); + + return ftrace_modify_code(pc, old, new, true); +} + +/* + * Turn off the call to ftrace_caller() in instrumented function + */ +int ftrace_make_nop(struct module *mod, struct dyn_ftrace *rec, + unsigned long addr) +{ + unsigned long pc = rec->ip; + u32 old, new; + + old = aarch64_insn_gen_branch_imm(pc, addr, true); + new = aarch64_insn_gen_nop(); + + return ftrace_modify_code(pc, old, new, true); +} + +int __init ftrace_dyn_arch_init(void) +{ + return 0; +} +#endif /* CONFIG_DYNAMIC_FTRACE */ + #ifdef CONFIG_FUNCTION_GRAPH_TRACER /* * function_graph tracer expects ftrace_return_to_handler() to be called @@ -61,4 +142,35 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr, return; } } + +#ifdef CONFIG_DYNAMIC_FTRACE +/* + * Turn on/off the call to ftrace_graph_caller() in ftrace_caller() + * depending on @enable. + */ +static int ftrace_modify_graph_caller(bool enable) +{ + unsigned long pc = (unsigned long)&ftrace_graph_call; + u32 branch, nop; + + branch = aarch64_insn_gen_branch_imm(pc, + (unsigned long)ftrace_graph_caller, false); + nop = aarch64_insn_gen_nop(); + + if (enable) + return ftrace_modify_code(pc, nop, branch, true); + else + return ftrace_modify_code(pc, branch, nop, true); +} + +int ftrace_enable_ftrace_graph_caller(void) +{ + return ftrace_modify_graph_caller(true); +} + +int ftrace_disable_ftrace_graph_caller(void) +{ + return ftrace_modify_graph_caller(false); +} +#endif /* CONFIG_DYNAMIC_FTRACE */ #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ -- 1.7.9.5
next prev parent reply other threads:[~2014-04-30 9:56 UTC|newest] Thread overview: 235+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-10-24 7:08 [PATCH v2 0/6] arm64: Add ftrace support AKASHI Takahiro 2013-10-24 7:08 ` [PATCH v2 1/6] " AKASHI Takahiro 2013-10-24 7:08 ` [PATCH v2 2/6] arm64: ftrace: Add dynamic " AKASHI Takahiro 2013-10-24 7:08 ` [PATCH v2 3/6] arm64: ftrace: Add CALLER_ADDRx macros AKASHI Takahiro 2013-10-24 7:08 ` [PATCH v2 4/6] ftrace: Add arm64 support to recordmcount AKASHI Takahiro 2013-10-24 7:08 ` [PATCH v2 5/6] arm64: ftrace: Add system call tracepoint AKASHI Takahiro 2013-10-24 7:08 ` [PATCH v2 6/6] arm64: Add 'notrace' attribute to unwind_frame() for ftrace AKASHI Takahiro 2014-02-07 10:18 ` [PATCH v3 0/6] arm64: Add ftrace support AKASHI Takahiro 2014-02-07 10:18 ` AKASHI Takahiro 2014-02-07 10:18 ` [PATCH v3 1/6] " AKASHI Takahiro 2014-02-07 10:18 ` AKASHI Takahiro 2014-02-10 15:03 ` Arnd Bergmann 2014-02-10 15:03 ` Arnd Bergmann 2014-02-10 15:19 ` Steven Rostedt 2014-02-10 15:19 ` Steven Rostedt [not found] ` <CAB5YjtCr2KL_q1FF8kO_VKe+feg7f9qFRKtwf3xj2h0ENwuB5g@mail.gmail.com> 2014-02-12 11:03 ` Arnd Bergmann 2014-02-12 11:03 ` Arnd Bergmann 2014-02-17 18:12 ` Will Deacon 2014-02-17 18:12 ` Will Deacon 2014-02-19 10:46 ` AKASHI Takahiro 2014-02-19 10:46 ` AKASHI Takahiro 2014-02-07 10:18 ` [PATCH v3 2/6] arm64: ftrace: Add dynamic " AKASHI Takahiro 2014-02-07 10:18 ` AKASHI Takahiro 2014-02-07 10:18 ` [PATCH v3 3/6] arm64: ftrace: Add CALLER_ADDRx macros AKASHI Takahiro 2014-02-07 10:18 ` AKASHI Takahiro 2014-02-07 10:18 ` [PATCH v3 4/6] ftrace: Add arm64 support to recordmcount AKASHI Takahiro 2014-02-07 10:18 ` AKASHI Takahiro 2014-02-07 10:18 ` [PATCH v3 5/6] arm64: ftrace: Add system call tracepoint AKASHI Takahiro 2014-02-07 10:18 ` AKASHI Takahiro 2014-02-17 19:29 ` Will Deacon 2014-02-17 19:29 ` Will Deacon 2014-02-19 10:48 ` AKASHI Takahiro 2014-02-19 10:48 ` AKASHI Takahiro 2014-02-07 10:18 ` [PATCH v3 6/6] arm64: Add 'notrace' attribute to unwind_frame() for ftrace AKASHI Takahiro 2014-02-07 10:18 ` AKASHI Takahiro 2014-02-10 14:21 ` [PATCH v3 0/6] arm64: Add ftrace support Kulkarni, Ganapatrao 2014-02-10 14:21 ` Kulkarni, Ganapatrao 2014-02-25 9:23 ` [PATCH v4 0/7] " AKASHI Takahiro 2014-02-25 9:23 ` AKASHI Takahiro 2014-02-25 9:23 ` [PATCH v4 1/7] " AKASHI Takahiro 2014-02-25 9:23 ` AKASHI Takahiro 2014-02-25 15:38 ` Kulkarni, Ganapatrao 2014-02-25 15:38 ` Kulkarni, Ganapatrao 2014-02-28 5:06 ` AKASHI Takahiro 2014-02-28 5:06 ` AKASHI Takahiro 2014-02-25 9:23 ` [PATCH v4 2/7] arm64: ftrace: Add dynamic " AKASHI Takahiro 2014-02-25 9:23 ` AKASHI Takahiro 2014-02-25 9:23 ` [PATCH v4 3/7] arm64: ftrace: Add CALLER_ADDRx macros AKASHI Takahiro 2014-02-25 9:23 ` AKASHI Takahiro 2014-02-25 9:23 ` [PATCH v4 4/7] ftrace: Add arm64 support to recordmcount AKASHI Takahiro 2014-02-25 9:23 ` AKASHI Takahiro 2014-02-25 9:23 ` [PATCH v4 5/7] arm64: ftrace: Add system call tracepoint AKASHI Takahiro 2014-02-25 9:23 ` AKASHI Takahiro 2014-02-25 9:23 ` [PATCH v4 6/7] arm64: Add 'notrace' attribute to unwind_frame() for ftrace AKASHI Takahiro 2014-02-25 9:23 ` AKASHI Takahiro 2014-02-25 9:23 ` [PATCH v4 7/7] arm64: add __ASSEMBLY__ in asm/insn.h AKASHI Takahiro 2014-02-25 9:23 ` AKASHI Takahiro 2014-02-28 5:18 ` [PATCH v5 0/7] arm64: Add ftrace support AKASHI Takahiro 2014-02-28 5:18 ` AKASHI Takahiro 2014-02-28 5:18 ` [PATCH v5 1/7] " AKASHI Takahiro 2014-02-28 5:18 ` AKASHI Takahiro 2014-02-28 5:18 ` [PATCH v5 2/7] arm64: ftrace: Add dynamic " AKASHI Takahiro 2014-02-28 5:18 ` AKASHI Takahiro 2014-02-28 5:18 ` [PATCH v5 3/7] arm64: ftrace: Add CALLER_ADDRx macros AKASHI Takahiro 2014-02-28 5:18 ` AKASHI Takahiro 2014-02-28 5:18 ` [PATCH v5 4/7] ftrace: Add arm64 support to recordmcount AKASHI Takahiro 2014-02-28 5:18 ` AKASHI Takahiro 2014-02-28 5:18 ` [PATCH v5 5/7] arm64: ftrace: Add system call tracepoint AKASHI Takahiro 2014-02-28 5:18 ` AKASHI Takahiro 2014-02-28 5:18 ` [PATCH v5 6/7] arm64: Add 'notrace' attribute to unwind_frame() for ftrace AKASHI Takahiro 2014-02-28 5:18 ` AKASHI Takahiro 2014-02-28 5:18 ` [PATCH v5 7/7] arm64: add __ASSEMBLY__ in asm/insn.h AKASHI Takahiro 2014-02-28 5:18 ` AKASHI Takahiro 2014-03-11 14:35 ` [PATCH v5 0/7] arm64: Add ftrace support Will Deacon 2014-03-11 14:35 ` Will Deacon 2014-03-12 1:47 ` AKASHI Takahiro 2014-03-12 1:47 ` AKASHI Takahiro 2014-03-12 1:58 ` Steven Rostedt 2014-03-12 1:58 ` Steven Rostedt 2014-03-12 2:02 ` Steven Rostedt 2014-03-12 2:02 ` Steven Rostedt 2014-03-13 10:13 ` [PATCH v6 " AKASHI Takahiro 2014-03-13 10:13 ` AKASHI Takahiro 2014-03-13 10:13 ` [PATCH v6 1/7] arm64: add __ASSEMBLY__ in asm/insn.h AKASHI Takahiro 2014-03-13 10:13 ` AKASHI Takahiro 2014-03-13 12:19 ` Will Deacon 2014-03-13 12:19 ` Will Deacon 2014-03-13 10:13 ` [PATCH v6 2/7] arm64: Add 'notrace' attribute to unwind_frame() for ftrace AKASHI Takahiro 2014-03-13 10:13 ` AKASHI Takahiro 2014-03-13 12:19 ` Will Deacon 2014-03-13 12:19 ` Will Deacon 2014-03-13 10:13 ` [PATCH v6 3/7] ftrace: Add arm64 support to recordmcount AKASHI Takahiro 2014-03-13 10:13 ` AKASHI Takahiro 2014-03-13 12:38 ` Will Deacon 2014-03-13 12:38 ` Will Deacon 2014-03-13 14:57 ` AKASHI Takahiro 2014-03-13 14:57 ` AKASHI Takahiro 2014-03-13 16:05 ` Will Deacon 2014-03-13 16:05 ` Will Deacon 2014-03-13 10:13 ` [PATCH v6 4/7] arm64: Add ftrace support AKASHI Takahiro 2014-03-13 10:13 ` AKASHI Takahiro 2014-03-13 17:08 ` Will Deacon 2014-03-13 17:08 ` Will Deacon 2014-03-13 18:27 ` Steven Rostedt 2014-03-13 18:27 ` Steven Rostedt 2014-03-13 18:37 ` Will Deacon 2014-03-13 18:37 ` Will Deacon 2014-03-13 18:49 ` Steven Rostedt 2014-03-13 18:49 ` Steven Rostedt 2014-03-14 4:45 ` AKASHI Takahiro 2014-03-14 4:45 ` AKASHI Takahiro 2014-03-14 10:07 ` Will Deacon 2014-03-14 10:07 ` Will Deacon 2014-03-14 16:13 ` AKASHI Takahiro 2014-03-14 16:13 ` AKASHI Takahiro 2014-03-13 10:13 ` [PATCH v6 5/7] arm64: ftrace: Add dynamic " AKASHI Takahiro 2014-03-13 10:13 ` AKASHI Takahiro 2014-03-13 18:10 ` Will Deacon 2014-03-13 18:10 ` Will Deacon 2014-03-13 18:33 ` Steven Rostedt 2014-03-13 18:33 ` Steven Rostedt 2014-03-14 5:28 ` AKASHI Takahiro 2014-03-14 5:28 ` AKASHI Takahiro 2014-03-14 5:26 ` AKASHI Takahiro 2014-03-14 5:26 ` AKASHI Takahiro 2014-03-13 10:13 ` [PATCH v6 6/7] arm64: ftrace: Add CALLER_ADDRx macros AKASHI Takahiro 2014-03-13 10:13 ` AKASHI Takahiro 2014-03-13 15:54 ` Will Deacon 2014-03-13 15:54 ` Will Deacon 2014-03-13 18:07 ` Steven Rostedt 2014-03-13 18:07 ` Steven Rostedt 2014-03-14 4:55 ` AKASHI Takahiro 2014-03-14 4:55 ` AKASHI Takahiro 2014-03-14 3:00 ` AKASHI Takahiro 2014-03-14 3:00 ` AKASHI Takahiro 2014-03-14 10:09 ` Will Deacon 2014-03-14 10:09 ` Will Deacon 2014-03-14 16:15 ` AKASHI Takahiro 2014-03-14 16:15 ` AKASHI Takahiro 2014-03-13 10:13 ` [PATCH v6 7/7] arm64: ftrace: Add system call tracepoint AKASHI Takahiro 2014-03-13 10:13 ` AKASHI Takahiro 2014-03-13 16:25 ` Will Deacon 2014-03-13 16:25 ` Will Deacon 2014-03-14 3:50 ` AKASHI Takahiro 2014-03-14 3:50 ` AKASHI Takahiro 2014-03-15 5:40 ` [PATCH v7 0/7] arm64: Add ftrace support AKASHI Takahiro 2014-03-15 5:40 ` AKASHI Takahiro 2014-03-15 5:40 ` [PATCH v7 1/7] arm64: add __ASSEMBLY__ in asm/insn.h AKASHI Takahiro 2014-03-15 5:40 ` AKASHI Takahiro 2014-03-15 5:40 ` [PATCH v7 2/7] arm64: Add 'notrace' attribute to unwind_frame() for ftrace AKASHI Takahiro 2014-03-15 5:40 ` AKASHI Takahiro 2014-03-15 5:40 ` [PATCH v7 3/7] ftrace: Add arm64 support to recordmcount AKASHI Takahiro 2014-03-15 5:40 ` AKASHI Takahiro 2014-04-16 13:31 ` Will Deacon 2014-04-16 13:31 ` Will Deacon 2014-04-30 9:54 ` [PATCH v8 0/8] arm64: Add ftrace support AKASHI Takahiro 2014-04-30 9:54 ` AKASHI Takahiro 2014-04-30 9:54 ` [PATCH v8 1/8] ftrace: make CALLER_ADDRx macros more generic AKASHI Takahiro 2014-04-30 9:54 ` AKASHI Takahiro 2014-05-02 18:13 ` Will Deacon 2014-05-02 18:13 ` Will Deacon 2014-05-02 19:02 ` Steven Rostedt 2014-05-02 19:02 ` Steven Rostedt 2014-05-02 19:03 ` Steven Rostedt 2014-05-02 19:03 ` Steven Rostedt 2014-05-02 19:19 ` Steven Rostedt 2014-05-02 19:19 ` Steven Rostedt 2014-05-12 15:58 ` Will Deacon 2014-05-12 15:58 ` Will Deacon 2014-05-12 16:05 ` Steven Rostedt 2014-05-12 16:05 ` Steven Rostedt 2014-05-12 16:12 ` Will Deacon 2014-05-12 16:12 ` Will Deacon 2014-05-12 17:23 ` Steven Rostedt 2014-05-12 17:23 ` Steven Rostedt 2014-05-20 11:29 ` AKASHI Takahiro 2014-05-20 11:29 ` AKASHI Takahiro 2014-05-20 11:31 ` [PATCH v8_1] " AKASHI Takahiro 2014-05-20 11:31 ` AKASHI Takahiro 2014-06-11 12:34 ` [PATCH v8 1/8] " Geert Uytterhoeven 2014-06-11 12:34 ` Geert Uytterhoeven 2014-06-11 12:34 ` Geert Uytterhoeven 2014-06-11 13:23 ` [PATCH] arm/ftrace: Fix function_return_addr() to function_return_address() Steven Rostedt 2014-06-11 13:23 ` Steven Rostedt 2014-06-11 13:23 ` Steven Rostedt 2014-06-11 13:38 ` Geert Uytterhoeven 2014-06-11 13:38 ` Geert Uytterhoeven 2014-06-11 13:38 ` Geert Uytterhoeven 2014-06-11 13:44 ` Steven Rostedt 2014-06-11 13:44 ` Steven Rostedt 2014-06-11 13:44 ` Steven Rostedt 2014-04-30 9:54 ` [PATCH v8 2/8] arm64: add __ASSEMBLY__ in asm/insn.h AKASHI Takahiro 2014-04-30 9:54 ` AKASHI Takahiro 2014-04-30 9:54 ` [PATCH v8 3/8] arm64: Add 'notrace' attribute to unwind_frame() for ftrace AKASHI Takahiro 2014-04-30 9:54 ` AKASHI Takahiro 2014-04-30 9:54 ` [PATCH v8 4/8] ftrace: Add arm64 support to recordmcount AKASHI Takahiro 2014-04-30 9:54 ` AKASHI Takahiro 2014-04-30 9:54 ` [PATCH v8 5/8] arm64: Add ftrace support AKASHI Takahiro 2014-04-30 9:54 ` AKASHI Takahiro 2014-05-28 20:19 ` Mark Brown 2014-05-28 20:19 ` Mark Brown 2014-05-29 8:07 ` Will Deacon 2014-05-29 8:07 ` Will Deacon 2014-05-29 9:47 ` Mark Brown 2014-05-29 9:47 ` Mark Brown 2014-04-30 9:54 ` AKASHI Takahiro [this message] 2014-04-30 9:54 ` [PATCH v8 6/8] arm64: ftrace: Add dynamic " AKASHI Takahiro 2014-04-30 9:54 ` [PATCH v8 7/8] arm64: ftrace: Add CALLER_ADDRx macros AKASHI Takahiro 2014-04-30 9:54 ` AKASHI Takahiro 2014-04-30 9:54 ` [PATCH v8 8/8] arm64: ftrace: Add system call tracepoint AKASHI Takahiro 2014-04-30 9:54 ` AKASHI Takahiro 2014-03-15 5:45 ` [PATCH v7 4/7] arm64: Add ftrace support AKASHI Takahiro 2014-03-15 5:45 ` AKASHI Takahiro 2014-04-16 13:45 ` Will Deacon 2014-04-16 13:45 ` Will Deacon 2014-03-15 5:45 ` [PATCH v7 5/7] arm64: ftrace: Add dynamic " AKASHI Takahiro 2014-03-15 5:45 ` AKASHI Takahiro 2014-04-16 13:48 ` Will Deacon 2014-04-16 13:48 ` Will Deacon 2014-03-15 5:45 ` [PATCH v7 6/7] arm64: ftrace: Add CALLER_ADDRx macros AKASHI Takahiro 2014-03-15 5:45 ` AKASHI Takahiro 2014-04-16 13:52 ` Will Deacon 2014-04-16 13:52 ` Will Deacon 2014-04-28 10:41 ` AKASHI Takahiro 2014-04-28 10:41 ` AKASHI Takahiro 2014-05-27 13:10 ` [for-next][PATCH] ftrace: Make CALLER_ADDRx macros more generic Steven Rostedt 2014-05-27 13:10 ` Steven Rostedt 2014-05-27 18:49 ` Will Deacon 2014-05-27 18:49 ` Will Deacon 2014-05-29 5:27 ` AKASHI Takahiro 2014-05-29 5:27 ` AKASHI Takahiro 2014-05-29 8:10 ` Will Deacon 2014-05-29 8:10 ` Will Deacon 2014-03-15 5:45 ` [PATCH v7 7/7] arm64: ftrace: Add system call tracepoint AKASHI Takahiro 2014-03-15 5:45 ` AKASHI Takahiro
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1398851676-16389-7-git-send-email-takahiro.akashi@linaro.org \ --to=takahiro.akashi@linaro.org \ --cc=arndb@arndb.de \ --cc=catalin.marinas@arm.com \ --cc=dsaxena@linaro.org \ --cc=fweisbec@gmail.com \ --cc=gkulkarni@caviumnetworks.com \ --cc=linaro-kernel@lists.linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@redhat.com \ --cc=rostedt@goodmis.org \ --cc=tim.bird@sonymobile.com \ --cc=will.deacon@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.