Bah, I forgot to add the "v4" in the subject (like I did for this email).
-- Steve On Tue, 21 Mar 2017 21:35:02 -0400 Steven Rostedt <rost...@goodmis.org> wrote: > [ > Ingo, Thomas or H.Peter, > > I believe this is all set to go now. I updated those patches that > Linus commented on and I don't believe there are any more issues. I > ran this through several tests (although some of my tests are failing > due to bugs introduced by others in 4.11-rc2). You can take this as a > patch series, or you can pull from my tree defined below. It's based > on 4.11-rc2 as I noticed that tip/x86/core is rather outdated, and > Linus is fine with basing off of his tagged releases. > ] > > > With the issues of gcc screwing around with the mcount stack frame > causing function graph tracer to panic on x86_32, and with Linus > saying that we should start deprecating mcount (at least on x86), I > figured that x86_32 needs to support fentry. > > First, I renamed mcount_64.S to ftrace_64.S. As we want to get away > from mcount, having the ftrace code in a file called mcount seems > rather backwards. > > Next I moved the ftrace code out of entry_32.S. It's not in entry_64.S > and it does not belong in entry_32.S. > > I noticed that the x86_32 code has the same issue as the x86_64 did > in the past with respect to a stack frame. I fixed that just for the > main ftrace_caller. The ftrace_regs_caller is rather special, and so > is function graph tracing. > > I realized the ftrace_regs_caller code was complex due to me > aggressively saving flags, even though I could still do push, lea and > mov without changing them. That made the logic a little nicer. > > Finally I added the fentry code. > > I tested this with an older compiler (for mcount) with and without > FRAME_POINTER set. I also did it with a new compiler (with fentry), > with and without FRAME_POINTER. I tested function tracing, stack > tracing, function_graph tracing, and kprobes (as that uses the > ftrace_regs_caller). > > Please pull (or take the patch series) from: > > > git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git > tip/x86/ftrace > > Head SHA1: e086b1da846b8e53f4de11e38d02d05b1ec5db58 > > > Steven Rostedt (VMware) (6): > ftrace/x86_64: Rename mcount_64.S to ftrace_64.S > ftrace/x86_32: Move the ftrace specific code out of entry_32.S > ftrace/x86_32: Add stack frame pointer to ftrace_caller > ftrace/x86_32: Clean up ftrace_regs_caller > ftrace/x86_32: Add -mfentry support to x86_32 with > DYNAMIC_FTRACE set ftrace/x86: Use Makefile logic instead of #ifdef > for compiling ftrace_*.o > > ---- > Changes since v3: > > * Changed comment about regs being skipped (Josh Poimboeuf) > > * Change subject line to fix typo (Josh Poimboeuf) > > > arch/x86/Kconfig | 2 +- > arch/x86/entry/entry_32.S | 169 ------------------ > arch/x86/kernel/Makefile | 5 +- > arch/x86/kernel/ftrace_32.S | 246 > +++++++++++++++++++++++++++ arch/x86/kernel/{mcount_64.S => > ftrace_64.S} | 4 - 5 files changed, 250 insertions(+), 176 > deletions(-) create mode 100644 arch/x86/kernel/ftrace_32.S > rename arch/x86/kernel/{mcount_64.S => ftrace_64.S} (99%) > > Diff against v3: > > > diff --git a/arch/x86/kernel/ftrace_32.S b/arch/x86/kernel/ftrace_32.S > index 4d52e0d49e26..de50c9084d16 100644 > --- a/arch/x86/kernel/ftrace_32.S > +++ b/arch/x86/kernel/ftrace_32.S > @@ -167,7 +167,7 @@ GLOBAL(ftrace_regs_call) > popl %gs > > /* use lea to not affect flags */ > - lea 3*4(%esp), %esp /* Skip > orig_ax, ip and flags */ > + lea 3*4(%esp), %esp /* Skip > orig_ax, ip and cs */ > jmp .Lftrace_ret > #else /* ! CONFIG_DYNAMIC_FTRACE */