From: Steven Rostedt <rostedt@goodmis.org>
To: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: linux-kernel@vger.kernel.org,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
"Frank Ch. Eigler" <fche@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
yrl.pp-manager.tt@hitachi.com
Subject: Re: [RFC PATCH -tip 2/9] ftrace/x86-64: support SAVE_REGS feature on x86-64
Date: Tue, 29 May 2012 19:05:27 -0400 [thread overview]
Message-ID: <1338332727.13348.301.camel@gandalf.stny.rr.com> (raw)
In-Reply-To: <20120529124905.9191.91563.stgit@localhost.localdomain>
On Tue, 2012-05-29 at 21:49 +0900, Masami Hiramatsu wrote:
> Add register saving/restoring sequence in ftrace_caller
> on x86-64 for enabling SAVE_REGS feature.
>
> Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> ---
>
> arch/x86/include/asm/ftrace.h | 4 ++++
> arch/x86/kernel/entry_64.S | 38 +++++++++++++++++++++++++++++++++-----
> 2 files changed, 37 insertions(+), 5 deletions(-)
>
> diff --git a/arch/x86/include/asm/ftrace.h b/arch/x86/include/asm/ftrace.h
> index 18d9005..ffb9564 100644
> --- a/arch/x86/include/asm/ftrace.h
> +++ b/arch/x86/include/asm/ftrace.h
> @@ -32,6 +32,10 @@
> #define MCOUNT_ADDR ((long)(mcount))
> #define MCOUNT_INSN_SIZE 5 /* sizeof mcount call */
>
> +#if defined(CONFIG_DYNAMIC_FTRACE) && defined(CONFIG_X86_64)
> +#define ARCH_SUPPORTS_FTRACE_SAVE_REGS 1
> +#endif
> +
> #ifndef __ASSEMBLY__
> extern void mcount(void);
> extern int modifying_ftrace_code;
> diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
> index 320852d..6d0545b 100644
> --- a/arch/x86/kernel/entry_64.S
> +++ b/arch/x86/kernel/entry_64.S
> @@ -73,21 +73,44 @@ ENTRY(mcount)
> retq
> END(mcount)
>
> + .macro MCOUNT_SAVE_ALL
> + SAVE_ARGS (RSP-ORIG_RAX)
> + SAVE_REST
> + /* Adjust eflags, rsp and rip */
> + movq RSP(%rsp), %rdx
> + movq %rdx, EFLAGS(%rsp)
> + leaq SS+8(%rsp), %rdx
> + movq %rdx, RSP(%rsp)
> + movq SS(%rsp), %rdi
> + subq $MCOUNT_INSN_SIZE, %rdi
> + movq %rdi, RIP(%rsp)
> + .endm
> +
> + .macro MCOUNT_RESTORE_ALL
> + /* store eflags into regs->rsp */
> + movq EFLAGS(%rsp), %rax
> + movq %rax, RSP(%rsp)
> + RESTORE_REST
> + RESTORE_ARGS 1, (RSP-ORIG_RAX)
> + .endm
> +
> ENTRY(ftrace_caller)
> + CFI_STARTPROC simple
> + pushfq_cfi
> cmpl $0, function_trace_stop
> - jne ftrace_stub
> + jne ftrace_exit
>
> - MCOUNT_SAVE_FRAME
> + MCOUNT_SAVE_ALL
No! Please do not make ftrace save all regs for everyone. This is
critical. This will slow down function tracing even more. We do not need
to save all regs for every function call, unless it is asked for.
It should only save all regs if the ftrace_ops that is registered asked
for it. I had code that actually does that. I can merge your patches
with them if you would like.
Thanks,
-- Steve
>
> - movq 0x38(%rsp), %rdi
> movq 8(%rbp), %rsi
> - subq $MCOUNT_INSN_SIZE, %rdi
> + movq %rsp, %rdx
>
> GLOBAL(ftrace_call)
> call ftrace_stub
>
> - MCOUNT_RESTORE_FRAME
> + MCOUNT_RESTORE_ALL
>
> + popfq_cfi
> #ifdef CONFIG_FUNCTION_GRAPH_TRACER
> GLOBAL(ftrace_graph_call)
> jmp ftrace_stub
> @@ -95,6 +118,11 @@ GLOBAL(ftrace_graph_call)
>
> GLOBAL(ftrace_stub)
> retq
> +
> +ftrace_exit:
> + popfq_cfi
> + retq
> + CFI_ENDPROC
> END(ftrace_caller)
>
> #else /* ! CONFIG_DYNAMIC_FTRACE */
next prev parent reply other threads:[~2012-05-29 23:05 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-29 12:48 [RFC PATCH -tip 0/9]ftrace, kprobes: Ftrace-based kprobe optimization Masami Hiramatsu
2012-05-29 12:48 ` [RFC PATCH -tip 1/9] ftrace: Add pt_regs acceptable trace callback Masami Hiramatsu
2012-06-02 2:07 ` Steven Rostedt
2012-06-04 13:58 ` Masami Hiramatsu
2012-06-04 14:25 ` Steven Rostedt
2012-06-04 14:57 ` Masami Hiramatsu
2012-06-04 15:11 ` Steven Rostedt
2012-05-29 12:49 ` [RFC PATCH -tip 2/9] ftrace/x86-64: support SAVE_REGS feature on x86-64 Masami Hiramatsu
2012-05-29 23:05 ` Steven Rostedt [this message]
2012-05-30 6:39 ` Masami Hiramatsu
2012-05-30 11:34 ` Steven Rostedt
2012-05-29 12:49 ` [RFC PATCH -tip 3/9] ftrace/x86: Support SAVE_REGS feature on i386 Masami Hiramatsu
2012-05-29 12:49 ` [RFC PATCH -tip 4/9] ftrace: add ftrace_set_filter_ip() for address based filter Masami Hiramatsu
2012-05-29 12:49 ` [RFC PATCH -tip 5/9] kprobes: Inverse taking of module_mutex with kprobe_mutex Masami Hiramatsu
2012-05-29 12:49 ` [RFC PATCH -tip 6/9] kprobes: cleanup to separate probe-able check Masami Hiramatsu
2012-05-29 12:49 ` [RFC PATCH -tip 7/9] kprobes: Move locks into appropriate functions Masami Hiramatsu
2012-05-29 12:49 ` [RFC PATCH -tip 8/9] kprobes: introduce ftrace based optiomization Masami Hiramatsu
2012-05-30 7:22 ` Ananth N Mavinakayanahalli
2012-05-30 7:56 ` Masami Hiramatsu
2012-05-29 12:49 ` [RFC PATCH -tip 9/9] kprobes/x86: ftrace based optiomization for x86 Masami Hiramatsu
2012-05-29 22:45 ` [RFC PATCH -tip 0/9]ftrace, kprobes: Ftrace-based kprobe optimization Steven Rostedt
2012-05-30 6:59 ` Masami Hiramatsu
2012-05-30 11:39 ` Steven Rostedt
2012-05-31 15:01 ` Masami Hiramatsu
2012-05-31 15:15 ` Steven Rostedt
2012-05-31 15:28 ` Masami Hiramatsu
2012-06-01 13:36 ` Masami Hiramatsu
2012-06-01 14:20 ` Steven Rostedt
2012-06-04 11:45 ` Masami Hiramatsu
2012-06-04 12:07 ` Steven Rostedt
2012-06-04 12:24 ` Masami Hiramatsu
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=1338332727.13348.301.camel@gandalf.stny.rr.com \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=ananth@in.ibm.com \
--cc=fche@redhat.com \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=yrl.pp-manager.tt@hitachi.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®