John Reiser 4b3b4c5e64 ftrace: __start_mcount_loc should be .init.rodata
__start_mcount_loc[] is unused after init, yet occupies RAM forever
as part of .rodata.  152kiB is typical on a 64-bit architecture.  Instead,
__start_mcount_loc should be in the interval [__init_begin, __init_end)
so that the space is reclaimed after init.

__start_mcount_loc[] is generated during the load portion
of kernel build, and is used only by ftrace_init().  ftrace_init is declared
'__init' and is in .init.text, which is freed after init.
__start_mcount_loc is placed into .rodata by a call to MCOUNT_REC inside
the RO_DATA macro of include/asm-generic/vmlinux.lds.h.  The array *is*
read-only, but more importantly it is not used after init.  So the call to
MCOUNT_REC should be moved from RO_DATA to INIT_DATA.

This patch has been tested on x86_64 with CONFIG_DEBUG_PAGEALLOC=y
which verifies that the address range never is accessed after init.

Signed-off-by: John Reiser <jreiser@BitWagon.com>
LKML-Reference: <4A6DF0B6.7080402@bitwagon.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2009-09-12 21:57:29 -04:00
..
2009-06-11 21:02:15 +02:00
2009-06-11 21:02:31 +02:00
2009-06-11 21:02:51 +02:00
2008-02-06 10:41:00 -08:00
2008-05-01 08:03:58 -07:00
2009-06-11 21:02:42 +02:00
2005-04-16 15:20:36 -07:00
2009-06-03 14:06:14 -04:00
2009-04-02 19:04:51 -07:00
2005-04-16 15:20:36 -07:00
2008-08-12 16:07:31 -07:00
2009-06-11 21:02:15 +02:00
2009-06-11 21:02:16 +02:00
2009-06-11 21:02:15 +02:00
2009-06-11 21:02:15 +02:00
2009-06-17 14:04:42 -07:00
2009-06-30 18:55:59 -07:00
2007-05-11 08:29:34 -07:00
2009-06-18 13:03:57 -07:00
2009-06-11 21:02:15 +02:00
2009-06-11 21:02:15 +02:00
2009-06-11 21:02:15 +02:00
2009-06-11 21:02:15 +02:00
2009-06-11 21:02:15 +02:00
2009-03-26 18:14:21 +01:00
2009-06-11 21:02:15 +02:00
2008-09-05 14:39:38 -07:00
2009-06-11 21:02:15 +02:00
2009-06-11 21:02:15 +02:00
2009-06-19 14:58:11 +02:00
2009-06-11 21:02:42 +02:00
2005-04-16 15:20:36 -07:00