]> git.baikalelectronics.ru Git - kernel.git/commit
ftrace: use a real variable for ftrace_nop in x86
authorSteven Rostedt <rostedt@goodmis.org>
Fri, 24 Oct 2008 13:12:17 +0000 (09:12 -0400)
committerIngo Molnar <mingo@elte.hu>
Mon, 27 Oct 2008 15:52:01 +0000 (16:52 +0100)
commit0c273767473a8a05b523de3d1297fee867d7d843
tree576fef732087f789999c1fbab97a09c12ea167e7
parente3f3572ad98116a8367fb14fac04d6cb7e4bfac9
ftrace: use a real variable for ftrace_nop in x86

Impact: avoid section mismatch warning, clean up

The dynamic ftrace determines which nop is safe to use at start up.
When it finds a safe nop for patching, it sets a pointer called ftrace_nop
to point to the code. All call sites are then patched to this nop.

Later, when tracing is turned on, this ftrace_nop variable is again used
to compare the location to make sure it is a nop before we update it to
an mcount call. If this fails just once, a warning is printed and ftrace
is disabled.

Rakib Mullick noted that the code that sets up the nop is a .init section
where as the nop itself is in the .text section. This is needed because
the nop is used later on after boot up. The problem is that the test of the
nop jumps back to the setup code and causes a "section mismatch" warning.

Rakib first recommended to convert the nop to .init.text, but as stated
above, this would fail since that text is used later.

The real solution is to extend Rabik's patch, and to make the ftrace_nop
into an array, and just save the code from the assembly to this array.

Now the section can stay as an init section, and we have a nop to use
later on.

Reported-by: Rakib Mullick <rakib.mullick@gmail.com>
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/ftrace.c