Re: [PATCH 6/6] ARM: ftrace: enable function graph tracer

From: Catalin Marinas
Date: Mon Nov 08 2010 - 05:43:06 EST


2010/11/8 Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx>:
> On Sat, Nov 06, 2010 at 07:06:28PM +0000, Catalin Marinas wrote:
>> On Saturday, November 6, 2010, Rabin Vincent <rabin@xxxxxx> wrote:
>> > Add the options to enable the function graph tracer on ARM.  Function
>> > graph tracer support requires frame pointers, so exclude Thumb-2 and
>> > also explicitly select FRAME_POINTER in FUNCTION_GRAPH_TRACER since
>> > FUNCTION_TRACER doesn't select FRAME_POINTER when ARM_UNWIND is used
>> > Therefore, with GCC 4.4.0+, you get plain function tracing without frame
>> > pointers, but you'll need them if you want function graph tracing.
>> .....
>> > --- a/kernel/trace/Kconfig
>> > +++ b/kernel/trace/Kconfig
>> > @@ -141,6 +141,7 @@ config FUNCTION_TRACER
>> >
>> >  config FUNCTION_GRAPH_TRACER
>> >         bool "Kernel Function Graph Tracer"
>> > +       select FRAME_POINTER if ARM_UNWIND
>>
>> Would it be better to modify FRAME_POINTER definition in the ARM
>> Kconfig so that it is enabled automatically when FUNCTION_GRAPH_TRACER
>> is enabled?
> I don't like that suggestion much because it hides the dependency.
> Moreover a "default y if FUNCTION_GRAPH_TRACER" doesn't work if a
> precondition for FRAME_POINTER isn't true.  Rabin's approach at least
> generates a warning.

If a precondition for FRAME_POINTER isn't true, we should not force it
via 'select'. We try to get rid of such warnings in the kernel.

However, on ARM the FRAME_POINTER depends on !THUMB2_KERNEL but for
Thumb-2 kernels HAVE_FUNCTION_GRAPH_TRACER is also disabled, so there
isn't a dependency issue here. It's more like a personal preference to
keep the changes within the arch/arm tree.

--
Catalin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/