]> git.baikalelectronics.ru Git - kernel.git/commit
ftrace/x86: Have arch x86_64 use breakpoints instead of stop machine
authorSteven Rostedt <srostedt@redhat.com>
Tue, 16 Aug 2011 13:57:10 +0000 (09:57 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Sat, 28 Apr 2012 01:10:44 +0000 (21:10 -0400)
commit21501fc12c6a02b5a759cd36108b7fd1a3e94173
treeeb85c37e3a67e1c21df9b82e2d302d5d1899343a
parent7d47cc6743e219afddd87e75b38147f5a7f68ac5
ftrace/x86: Have arch x86_64 use breakpoints instead of stop machine

This method changes x86 to add a breakpoint to the mcount locations
instead of calling stop machine.

Now that iret can be handled by NMIs, we perform the following to
update code:

1) Add a breakpoint to all locations that will be modified

2) Sync all cores

3) Update all locations to be either a nop or call (except breakpoint
   op)

4) Sync all cores

5) Remove the breakpoint with the new code.

6) Sync all cores

[
  Added updates that Masami suggested:
   Use unlikely(modifying_ftrace_code) in int3 trap to keep kprobes efficient.
   Don't use NOTIFY_* in ftrace handler in int3 as it is not a notifier.
]

Cc: H. Peter Anvin <hpa@zytor.com>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
arch/x86/include/asm/ftrace.h
arch/x86/kernel/ftrace.c
arch/x86/kernel/traps.c
include/linux/ftrace.h