All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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: link
Be 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.