All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>
To: Michael Ellerman <mpe@ellerman.id.au>
Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Anton Blanchard <anton@samba.org>,
	linuxppc-dev@lists.ozlabs.org
Subject: [PATCH 6/8] powerpc/ftrace: Add support for HAVE_FUNCTION_GRAPH_FP_TEST for -mprofile-kernel
Date: Thu,  4 May 2017 10:06:19 +0530	[thread overview]
Message-ID: <95e111668b446bb766fb79160b6ebd250c499e37.1493831558.git.naveen.n.rao@linux.vnet.ibm.com> (raw)
In-Reply-To: <cover.1493831558.git.naveen.n.rao@linux.vnet.ibm.com>
In-Reply-To: <cover.1493831558.git.naveen.n.rao@linux.vnet.ibm.com>

This is very handy to catch potential crashes due to unexpected
interactions of function_graph tracer with weird things like
jprobes.

Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
---
 arch/powerpc/include/asm/asm-prototypes.h      | 3 ++-
 arch/powerpc/include/asm/ftrace.h              | 3 +++
 arch/powerpc/kernel/trace/ftrace.c             | 4 ++--
 arch/powerpc/kernel/trace/ftrace_64.S          | 1 +
 arch/powerpc/kernel/trace/ftrace_64_mprofile.S | 1 +
 5 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/include/asm/asm-prototypes.h b/arch/powerpc/include/asm/asm-prototypes.h
index 7330150bfe34..14964ab80a53 100644
--- a/arch/powerpc/include/asm/asm-prototypes.h
+++ b/arch/powerpc/include/asm/asm-prototypes.h
@@ -124,6 +124,7 @@ extern int __ucmpdi2(u64, u64);
 
 /* tracing */
 void _mcount(void);
-unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip);
+unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip,
+					unsigned long fp);
 
 #endif /* _ASM_POWERPC_ASM_PROTOTYPES_H */
diff --git a/arch/powerpc/include/asm/ftrace.h b/arch/powerpc/include/asm/ftrace.h
index 686c5f70eb84..2b89043b0c61 100644
--- a/arch/powerpc/include/asm/ftrace.h
+++ b/arch/powerpc/include/asm/ftrace.h
@@ -6,6 +6,9 @@
 #ifdef CONFIG_FUNCTION_TRACER
 #define MCOUNT_ADDR		((unsigned long)(_mcount))
 #define MCOUNT_INSN_SIZE	4 /* sizeof mcount call */
+#ifdef CONFIG_MPROFILE_KERNEL
+#define HAVE_FUNCTION_GRAPH_FP_TEST
+#endif
 
 #ifdef __ASSEMBLY__
 
diff --git a/arch/powerpc/kernel/trace/ftrace.c b/arch/powerpc/kernel/trace/ftrace.c
index 32509de6ce4c..7e3e099cdfe4 100644
--- a/arch/powerpc/kernel/trace/ftrace.c
+++ b/arch/powerpc/kernel/trace/ftrace.c
@@ -572,7 +572,7 @@ int ftrace_disable_ftrace_graph_caller(void)
  * Hook the return address and push it in the stack of return addrs
  * in current thread info. Return the address we want to divert to.
  */
-unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip)
+unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip, unsigned long fp)
 {
 	struct ftrace_graph_ent trace;
 	unsigned long return_hooker;
@@ -592,7 +592,7 @@ unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip)
 	if (!ftrace_graph_entry(&trace))
 		goto out;
 
-	if (ftrace_push_return_trace(parent, ip, &trace.depth, 0,
+	if (ftrace_push_return_trace(parent, ip, &trace.depth, fp,
 				     NULL) == -EBUSY)
 		goto out;
 
diff --git a/arch/powerpc/kernel/trace/ftrace_64.S b/arch/powerpc/kernel/trace/ftrace_64.S
index e5ccea19821e..57ab4f73a5c4 100644
--- a/arch/powerpc/kernel/trace/ftrace_64.S
+++ b/arch/powerpc/kernel/trace/ftrace_64.S
@@ -68,6 +68,7 @@ _GLOBAL(return_to_handler)
 	 */
 	ld	r2, PACATOC(r13)
 
+	addi	r3, r1, 112
 	bl	ftrace_return_to_handler
 	nop
 
diff --git a/arch/powerpc/kernel/trace/ftrace_64_mprofile.S b/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
index 981b99dc3029..fb6910e48f22 100644
--- a/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
+++ b/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
@@ -241,6 +241,7 @@ _GLOBAL(ftrace_graph_caller)
 
 	ld	r3, _LINK(r1)
 	subi	r4, r14, MCOUNT_INSN_SIZE	/* load saved original NIP */
+	addi	r5, r1, SWITCH_FRAME_SIZE
 
 	bl	prepare_ftrace_return
 	nop
-- 
2.12.2

  parent reply	other threads:[~2017-05-04  4:37 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-04  4:36 [PATCH 0/8] powerpc: Various fixes and enhancements for kprobes and ftrace Naveen N. Rao
2017-05-04  4:36 ` [PATCH 1/8] powerpc/kprobes: Pause function_graph tracing during jprobes handling Naveen N. Rao
     [not found]   ` <20170503155819.0cbd04e5@gandalf.local.home>
2017-05-04  4:35     ` Naveen N. Rao
2017-05-04  4:36 ` [PATCH 2/8] powerpc/ftrace: Pass the correct stack pointer for DYNAMIC_FTRACE_WITH_REGS Naveen N. Rao
2017-05-04  4:36 ` [PATCH 3/8] powerpc/ftrace: Remove redundant saving of LR in ftrace[_graph]_caller Naveen N. Rao
2017-05-04  4:36 ` [PATCH 4/8] powerpc/kprobes_on_ftrace: Skip livepatch_handler() for jprobes Naveen N. Rao
2017-05-04  4:36 ` [PATCH 5/8] powerpc/ftrace: Eliminate duplicate stack setup for ftrace_graph_caller() Naveen N. Rao
2017-05-04  4:36 ` Naveen N. Rao [this message]
2017-05-04  4:36 ` [PATCH 7/8] powerpc/livepatch: Clarify location of mcount call site Naveen N. Rao
2017-05-04  4:36 ` [PATCH 8/8] powerpc/xmon: Disable function_graph tracing while in xmon Naveen N. Rao

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=95e111668b446bb766fb79160b6ebd250c499e37.1493831558.git.naveen.n.rao@linux.vnet.ibm.com \
    --to=naveen.n.rao@linux.vnet.ibm.com \
    --cc=ananth@linux.vnet.ibm.com \
    --cc=anton@samba.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mhiramat@kernel.org \
    --cc=mpe@ellerman.id.au \
    --cc=rostedt@goodmis.org \
    /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.