All of lore.kernel.org
 help / color / mirror / Atom feed
From: "tip-bot for Steven Rostedt (VMware)" <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: jpoimboe@redhat.com, peterz@infradead.org,
	linux-kernel@vger.kernel.org, hpa@zytor.com, mhiramat@kernel.org,
	akpm@linux-foundation.org, tglx@linutronix.de,
	rostedt@goodmis.org, mingo@kernel.org, luto@amacapital.net,
	torvalds@linux-foundation.org
Subject: [tip:x86/asm] x86/ftrace: Add stack frame pointer to ftrace_caller
Date: Fri, 24 Mar 2017 02:20:36 -0700	[thread overview]
Message-ID: <tip-e6928e58d4d4a02f88838945f792c107623314ac@git.kernel.org> (raw)
In-Reply-To: <20170323143445.771707773@goodmis.org>

Commit-ID:  e6928e58d4d4a02f88838945f792c107623314ac
Gitweb:     http://git.kernel.org/tip/e6928e58d4d4a02f88838945f792c107623314ac
Author:     Steven Rostedt (VMware) <rostedt@goodmis.org>
AuthorDate: Thu, 23 Mar 2017 10:33:50 -0400
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Fri, 24 Mar 2017 10:14:07 +0100

x86/ftrace: Add stack frame pointer to ftrace_caller

The function hook ftrace_caller does not create its own stack frame, and
this causes the ftrace stack trace to miss the first function when doing
stack traces.

 # echo schedule:stacktrace > /sys/kernel/tracing/set_ftrace_filter

Before:
         <idle>-0     [002] .N..    29.865807: <stack trace>
 => cpu_startup_entry
 => start_secondary
 => startup_32_smp
           <...>-7     [001] ....    29.866509: <stack trace>
 => kthread
 => ret_from_fork
           <...>-1     [000] ....    29.865377: <stack trace>
 => poll_schedule_timeout
 => do_select
 => core_sys_select
 => SyS_select
 => do_fast_syscall_32
 => entry_SYSENTER_32

After:
          <idle>-0     [002] .N..    31.234853: <stack trace>
 => do_idle
 => cpu_startup_entry
 => start_secondary
 => startup_32_smp
           <...>-7     [003] ....    31.235140: <stack trace>
 => rcu_gp_kthread
 => kthread
 => ret_from_fork
           <...>-1819  [000] ....    31.264172: <stack trace>
 => schedule_hrtimeout_range
 => poll_schedule_timeout
 => do_sys_poll
 => SyS_ppoll
 => do_fast_syscall_32
 => entry_SYSENTER_32

Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>
Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
Reviewed-by: Ingo Molnar <mingo@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/20170323143445.771707773@goodmis.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

---
 arch/x86/kernel/ftrace_32.S | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/ftrace_32.S b/arch/x86/kernel/ftrace_32.S
index 2b160f2..a4e2872 100644
--- a/arch/x86/kernel/ftrace_32.S
+++ b/arch/x86/kernel/ftrace_32.S
@@ -16,12 +16,19 @@ ENTRY(mcount)
 END(mcount)
 
 ENTRY(ftrace_caller)
+
+	pushl	%ebp
+	movl	%esp, %ebp
+
 	pushl	%eax
 	pushl	%ecx
 	pushl	%edx
 	pushl	$0				/* Pass NULL as regs pointer */
-	movl	4*4(%esp), %eax
-	movl	0x4(%ebp), %edx
+	movl	5*4(%esp), %eax
+	/* Copy original ebp into %edx */
+	movl	4*4(%esp), %edx
+	/* Get the parent ip */
+	movl	0x4(%edx), %edx
 	movl	function_trace_op, %ecx
 	subl	$MCOUNT_INSN_SIZE, %eax
 
@@ -33,6 +40,7 @@ ftrace_call:
 	popl	%edx
 	popl	%ecx
 	popl	%eax
+	popl	%ebp
 .Lftrace_ret:
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
 .globl ftrace_graph_call

  reply	other threads:[~2017-03-24  9:27 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-23 14:33 [PATCH 0/6 v5] [GIT PULL] ftrace/x86: Ftrace cleanup and add support for -mfentry on x86_32 Steven Rostedt
2017-03-23 14:33 ` [PATCH 1/6 v5] ftrace/x86_64: Rename mcount_64.S to ftrace_64.S Steven Rostedt
2017-03-24  9:19   ` [tip:x86/asm] x86/ftrace: " tip-bot for Steven Rostedt (VMware)
2017-03-23 14:33 ` [PATCH 2/6 v5] ftrace/x86_32: Move the ftrace specific code out of entry_32.S Steven Rostedt
2017-03-23 18:19   ` Thomas Gleixner
2017-03-23 19:03     ` Steven Rostedt
2017-03-24  9:20   ` [tip:x86/asm] x86/ftrace: " tip-bot for Steven Rostedt (VMware)
2017-03-23 14:33 ` [PATCH 3/6 v5] ftrace/x86_32: Add stack frame pointer to ftrace_caller Steven Rostedt
2017-03-24  9:20   ` tip-bot for Steven Rostedt (VMware) [this message]
2017-03-23 14:33 ` [PATCH 4/6 v5] ftrace/x86_32: Clean up ftrace_regs_caller Steven Rostedt
2017-03-24  9:21   ` [tip:x86/asm] x86/ftrace: " tip-bot for Steven Rostedt (VMware)
2017-03-23 14:33 ` [PATCH 5/6 v5] ftrace/x86_32: Add -mfentry support to x86_32 with DYNAMIC_FTRACE set Steven Rostedt
2017-03-24  9:21   ` [tip:x86/asm] x86/ftrace: " tip-bot for Steven Rostedt (VMware)
2017-03-23 14:33 ` [PATCH 6/6 v5] ftrace/x86: Use Makefile logic instead of #ifdef for compiling ftrace_*.o Steven Rostedt
2017-03-24  9:22   ` [tip:x86/asm] x86/ftrace: " tip-bot for Steven Rostedt (VMware)
  -- strict thread matches above, loose matches on Subject: below --
2017-03-16 17:20 [PATCH 0/5 v2] ftrace/x86_32: Ftrace cleanup and add support for -mfentry Steven Rostedt
2017-03-16 17:20 ` [PATCH 1/5 v2] x86/ftrace: Rename mcount_64.S to ftrace_64.S Steven Rostedt
2017-03-16 17:20 ` [PATCH 2/5 v2] ftrace/x86-32: Move the ftrace specific code out of entry_32.S Steven Rostedt
2017-03-17 13:21   ` Steven Rostedt
2017-03-16 17:20 ` [PATCH 3/5 v2] ftrace/x86_32: Add stack frame pointer to ftrace_caller Steven Rostedt
2017-03-16 17:20 ` [PATCH 4/5 v2] ftrace/x86_32: Clean up ftrace_regs_caller Steven Rostedt
2017-03-16 17:40   ` Linus Torvalds
2017-03-16 17:55     ` Steven Rostedt
2017-03-16 18:09     ` [PATCH 4/5 v3] " Steven Rostedt
2017-03-16 18:19       ` Linus Torvalds
2017-03-16 19:19         ` Steven Rostedt
2017-03-16 19:24           ` Steven Rostedt
2017-03-16 19:30             ` Linus Torvalds
2017-03-16 19:50               ` Steven Rostedt
2017-03-16 19:28           ` Linus Torvalds
2017-03-16 19:49             ` Steven Rostedt
2017-03-16 20:14         ` [PATCH 4/5 v3.1] " Steven Rostedt
2017-03-16 17:20 ` [PATCH 5/5 v2] ftrace/x86-32: Add -mfentry support to x86_32 with DYNAMIC_FTRACE set Steven Rostedt
2017-03-16 20:40   ` [PATCH 5/5 v3] " Steven Rostedt
2017-03-16 21:00     ` Josh Poimboeuf
2017-03-16 21:25       ` Steven Rostedt
2017-03-17 10:38     ` 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=tip-e6928e58d4d4a02f88838945f792c107623314ac@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=akpm@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=mhiramat@kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.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.