From: Jisheng Zhang <Jisheng.Zhang@synaptics.com> To: Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, Steven Rostedt <rostedt@goodmis.org>, Ingo Molnar <mingo@redhat.com>, "Naveen N. Rao" <naveen.n.rao@linux.ibm.com>, Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>, "David S. Miller" <davem@davemloft.net>, Masami Hiramatsu <mhiramat@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Jonathan Corbet <corbet@lwn.net> Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org>, "linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org> Subject: [PATCH v7 2/3] ftrace: introduce FTRACE_IP_EXTENSION Date: Wed, 25 Dec 2019 09:42:52 +0000 [thread overview] Message-ID: <20191225172836.7f381759@xhacker.debian> (raw) In-Reply-To: <20191225172625.69811b3e@xhacker.debian> On some architectures, the DYNAMIC_FTRACE_WITH_REGS is implemented by gcc's -fpatchable-function-entry option. Take arm64 for example, arm64 makes use of GCC -fpatchable-function-entry=2 option to insert two nops. When the function is traced, the first nop will be modified to the LR saver, then the second nop to "bl <ftrace-entry>". we need to update ftrace_location() to recognise these two instructions as being part of ftrace. To do this, we introduce FTRACE_IP_EXTENSION to let ftrace_location search IP, IP + FTRACE_IP_EXTENSION range. Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com> Suggested-by: Steven Rostedt (VMware) <rostedt@goodmis.org> --- include/linux/ftrace.h | 4 ++++ kernel/trace/ftrace.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index 7247d35c3d16..05a03b2a2f39 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h @@ -20,6 +20,10 @@ #include <asm/ftrace.h> +#ifndef FTRACE_IP_EXTENSION +#define FTRACE_IP_EXTENSION 0 +#endif + /* * If the arch supports passing the variable contents of * function_trace_op as the third parameter back from the diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 74439ab5c2b6..a8cfea502369 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -1590,7 +1590,7 @@ unsigned long ftrace_location_range(unsigned long start, unsigned long end) */ unsigned long ftrace_location(unsigned long ip) { - return ftrace_location_range(ip, ip); + return ftrace_location_range(ip, ip + FTRACE_IP_EXTENSION); } /** -- 2.24.1
WARNING: multiple messages have this Message-ID (diff)
From: Jisheng Zhang <Jisheng.Zhang@synaptics.com> To: Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, Steven Rostedt <rostedt@goodmis.org>, Ingo Molnar <mingo@redhat.com>, "Naveen N. Rao" <naveen.n.rao@linux.ibm.com>, Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>, "David S. Miller" <davem@davemloft.net>, Masami Hiramatsu <mhiramat@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Jonathan Corbet <corbet@lwn.net> Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org>, "linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org> Subject: [PATCH v7 2/3] ftrace: introduce FTRACE_IP_EXTENSION Date: Wed, 25 Dec 2019 09:42:52 +0000 [thread overview] Message-ID: <20191225172836.7f381759@xhacker.debian> (raw) In-Reply-To: <20191225172625.69811b3e@xhacker.debian> On some architectures, the DYNAMIC_FTRACE_WITH_REGS is implemented by gcc's -fpatchable-function-entry option. Take arm64 for example, arm64 makes use of GCC -fpatchable-function-entry=2 option to insert two nops. When the function is traced, the first nop will be modified to the LR saver, then the second nop to "bl <ftrace-entry>". we need to update ftrace_location() to recognise these two instructions as being part of ftrace. To do this, we introduce FTRACE_IP_EXTENSION to let ftrace_location search IP, IP + FTRACE_IP_EXTENSION range. Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com> Suggested-by: Steven Rostedt (VMware) <rostedt@goodmis.org> --- include/linux/ftrace.h | 4 ++++ kernel/trace/ftrace.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index 7247d35c3d16..05a03b2a2f39 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h @@ -20,6 +20,10 @@ #include <asm/ftrace.h> +#ifndef FTRACE_IP_EXTENSION +#define FTRACE_IP_EXTENSION 0 +#endif + /* * If the arch supports passing the variable contents of * function_trace_op as the third parameter back from the diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 74439ab5c2b6..a8cfea502369 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -1590,7 +1590,7 @@ unsigned long ftrace_location_range(unsigned long start, unsigned long end) */ unsigned long ftrace_location(unsigned long ip) { - return ftrace_location_range(ip, ip); + return ftrace_location_range(ip, ip + FTRACE_IP_EXTENSION); } /** -- 2.24.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-12-25 9:42 UTC|newest] Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-12-25 9:40 [PATCH v7 0/3] arm64: implement KPROBES_ON_FTRACE Jisheng Zhang 2019-12-25 9:40 ` Jisheng Zhang 2019-12-25 9:42 ` [PATCH v7 1/3] kprobes/ftrace: Use ftrace_location() when [dis]arming probes Jisheng Zhang 2019-12-25 9:42 ` Jisheng Zhang 2019-12-25 9:46 ` Jisheng Zhang 2019-12-25 9:46 ` Jisheng Zhang 2019-12-25 9:42 ` Jisheng Zhang [this message] 2019-12-25 9:42 ` [PATCH v7 2/3] ftrace: introduce FTRACE_IP_EXTENSION Jisheng Zhang 2019-12-26 2:45 ` Masami Hiramatsu 2019-12-26 2:45 ` Masami Hiramatsu 2020-01-08 0:05 ` Steven Rostedt 2020-01-08 0:05 ` Steven Rostedt 2019-12-25 9:44 ` [PATCH v7 3/3] arm64: implement KPROBES_ON_FTRACE Jisheng Zhang 2019-12-25 9:44 ` Jisheng Zhang 2019-12-26 2:57 ` Masami Hiramatsu 2019-12-26 2:57 ` Masami Hiramatsu 2019-12-26 3:18 ` Jisheng Zhang 2019-12-26 3:18 ` Jisheng Zhang 2019-12-26 4:25 ` Jisheng Zhang 2019-12-26 4:25 ` Jisheng Zhang 2019-12-26 9:26 ` Masami Hiramatsu 2019-12-26 9:26 ` Masami Hiramatsu 2020-07-21 13:24 ` Masami Hiramatsu 2020-07-21 13:24 ` Masami Hiramatsu 2020-07-24 7:06 ` Jisheng Zhang 2020-07-24 7:06 ` Jisheng Zhang 2020-07-24 16:54 ` Masami Hiramatsu 2020-07-24 16:54 ` Masami Hiramatsu 2020-02-28 15:31 ` Mark Rutland 2020-02-28 15:31 ` Mark Rutland
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=20191225172836.7f381759@xhacker.debian \ --to=jisheng.zhang@synaptics.com \ --cc=anil.s.keshavamurthy@intel.com \ --cc=catalin.marinas@arm.com \ --cc=corbet@lwn.net \ --cc=davem@davemloft.net \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-doc@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=mhiramat@kernel.org \ --cc=mingo@redhat.com \ --cc=naveen.n.rao@linux.ibm.com \ --cc=rostedt@goodmis.org \ --cc=will@kernel.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: 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.