From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754504AbdCWDHQ (ORCPT ); Wed, 22 Mar 2017 23:07:16 -0400 Received: from mail.kernel.org ([198.145.29.136]:39110 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751453AbdCWDHI (ORCPT ); Wed, 22 Mar 2017 23:07:08 -0400 Date: Thu, 23 Mar 2017 12:07:01 +0900 From: Masami Hiramatsu To: Steven Rostedt Cc: linux-kernel@vger.kernel.org, Ingo Molnar , Andrew Morton , Thomas Gleixner , Peter Zijlstra , Masami Hiramatsu , "H. Peter Anvin" , Andy Lutomirski , Josh Poimboeuf , Linus Torvalds Subject: Re: [PATCH 3/6] ftrace/x86_32: Add stack frame pointer to ftrace_caller Message-Id: <20170323120701.e9cc77190ad489e6472c872a@kernel.org> In-Reply-To: <20170322013621.600413647@goodmis.org> References: <20170322013502.448616656@goodmis.org> <20170322013621.600413647@goodmis.org> X-Mailer: Sylpheed 3.5.0 (GTK+ 2.24.30; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 21 Mar 2017 21:35:05 -0400 Steven Rostedt wrote: > From: "Steven Rostedt (VMware)" > > 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: > -0 [002] .N.. 29.865807: > => cpu_startup_entry > => start_secondary > => startup_32_smp > <...>-7 [001] .... 29.866509: > => kthread > => ret_from_fork > <...>-1 [000] .... 29.865377: > => poll_schedule_timeout > => do_select > => core_sys_select > => SyS_select > => do_fast_syscall_32 > => entry_SYSENTER_32 > > After: > -0 [002] .N.. 31.234853: > => do_idle > => cpu_startup_entry > => start_secondary > => startup_32_smp > <...>-7 [003] .... 31.235140: > => rcu_gp_kthread > => kthread > => ret_from_fork > <...>-1819 [000] .... 31.264172: > => schedule_hrtimeout_range > => poll_schedule_timeout > => do_sys_poll > => SyS_ppoll > => do_fast_syscall_32 > => entry_SYSENTER_32 > Looks good to me. Reviewed-by: Masami Hiramatsu Thank you, > Reviewed-by: Josh Poimboeuf > Signed-off-by: Steven Rostedt (VMware) > --- > 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 1889a74823ce..f991e723c3e4 100644 > --- a/arch/x86/kernel/ftrace_32.S > +++ b/arch/x86/kernel/ftrace_32.S > @@ -18,12 +18,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 > > @@ -35,6 +42,7 @@ ftrace_call: > popl %edx > popl %ecx > popl %eax > + popl %ebp > .Lftrace_ret: > #ifdef CONFIG_FUNCTION_GRAPH_TRACER > .globl ftrace_graph_call > -- > 2.10.2 > > -- Masami Hiramatsu