[PATCH 3/3] tracing: Tracers that use CALLER_ADDR macros should select FRAME_POINTER

2009-05-01 Thread Anton Vorontsov
Irqsoff, switch and preempt tracers use CALLER_ADDR macros, so they
should select FRAME_POINTER. Otherwise traces are meaningless.

Signed-off-by: Anton Vorontsov 
---
 kernel/trace/Kconfig |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index 450d3c2..ad44791 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -122,6 +122,7 @@ config IRQSOFF_TRACER
select TRACE_IRQFLAGS
select TRACING
select TRACER_MAX_TRACE
+   select FRAME_POINTER
help
  This option measures the time spent in irqs-off critical
  sections, with microsecond accuracy.
@@ -143,6 +144,7 @@ config PREEMPT_TRACER
depends on PREEMPT
select TRACING
select TRACER_MAX_TRACE
+   select FRAME_POINTER
help
  This option measures the time spent in preemption off critical
  sections, with microsecond accuracy.
@@ -171,6 +173,7 @@ config SCHED_TRACER
select TRACING
select CONTEXT_SWITCH_TRACER
select TRACER_MAX_TRACE
+   select FRAME_POINTER
help
  This tracer tracks the latency of the highest priority task
  to be scheduled in, starting from the point it has woken up.
-- 
1.6.2.2
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[PATCH 3/3] tracing: Tracers that use CALLER_ADDR macros should select FRAME_POINTER

2009-03-20 Thread Anton Vorontsov
Irqsoff, switch and preempt tracers use CALLER_ADDR macros, so they
should select FRAME_POINTER. Otherwise traces are meaningless.

Signed-off-by: Anton Vorontsov 
---
 kernel/trace/Kconfig |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index 774aba7..9fc98a7 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -107,6 +107,7 @@ config IRQSOFF_TRACER
select TRACE_IRQFLAGS
select TRACING
select TRACER_MAX_TRACE
+   select FRAME_POINTER
help
  This option measures the time spent in irqs-off critical
  sections, with microsecond accuracy.
@@ -128,6 +129,7 @@ config PREEMPT_TRACER
depends on PREEMPT
select TRACING
select TRACER_MAX_TRACE
+   select FRAME_POINTER
help
  This option measures the time spent in preemption off critical
  sections, with microsecond accuracy.
@@ -156,6 +158,7 @@ config SCHED_TRACER
select TRACING
select CONTEXT_SWITCH_TRACER
select TRACER_MAX_TRACE
+   select FRAME_POINTER
help
  This tracer tracks the latency of the highest priority task
  to be scheduled in, starting from the point it has woken up.
-- 
1.5.6.5
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH 3/3] tracing: Tracers that use CALLER_ADDR macros should select FRAME_POINTER

2009-02-04 Thread Frédéric Weisbecker
2009/2/4 Steven Rostedt :
>
> >From ftrace.h:
>
> #ifdef CONFIG_FRAME_POINTER
> /* TODO: need to fix this for ARM */
> # define CALLER_ADDR0 ((unsigned long)__builtin_return_address(0))
> # define CALLER_ADDR1 ((unsigned long)__builtin_return_address(1))
> # define CALLER_ADDR2 ((unsigned long)__builtin_return_address(2))
> # define CALLER_ADDR3 ((unsigned long)__builtin_return_address(3))
> # define CALLER_ADDR4 ((unsigned long)__builtin_return_address(4))
> # define CALLER_ADDR5 ((unsigned long)__builtin_return_address(5))
> # define CALLER_ADDR6 ((unsigned long)__builtin_return_address(6))
> #else
> # define CALLER_ADDR0 ((unsigned long)__builtin_return_address(0))
> # define CALLER_ADDR1 0UL
> # define CALLER_ADDR2 0UL
> # define CALLER_ADDR3 0UL
> # define CALLER_ADDR4 0UL
> # define CALLER_ADDR5 0UL
> # define CALLER_ADDR6 0UL
> #endif
>
> Yep!
>

Ok.

2009/2/4 Anton Vorontsov :
> It depends on the architecture. On PowerPC we always have frame pointers,
> thus __builtin_return_address(1..) will always work. On x86 it won't work
> that way.
>
> Thanks,
>
> --
> Anton Vorontsov

Thanks for your answers!
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH 3/3] tracing: Tracers that use CALLER_ADDR macros should select FRAME_POINTER

2009-02-04 Thread Anton Vorontsov
On Wed, Feb 04, 2009 at 04:26:15PM +0100, Frédéric Weisbecker wrote:
[...]
> > @@ -136,6 +138,7 @@ config SCHED_TRACER
> >select TRACING
> >select CONTEXT_SWITCH_TRACER
> >select TRACER_MAX_TRACE
> > +   select FRAME_POINTER
> >help
> >  This tracer tracks the latency of the highest priority task
> >  to be scheduled in, starting from the point it has woken up.
> > --
> 
> 
> Looks right.
> 
> BTW, how behaves builtin_return_address in case of !FRAME_POINTERS ?
> I guess it would only work with the first caller builtin_return_address(0)

It depends on the architecture. On PowerPC we always have frame pointers,
thus __builtin_return_address(1..) will always work. On x86 it won't work
that way.

Thanks,

-- 
Anton Vorontsov
email: cbouatmai...@gmail.com
irc://irc.freenode.net/bd2
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Re: [PATCH 3/3] tracing: Tracers that use CALLER_ADDR macros should select FRAME_POINTER

2009-02-04 Thread Frédéric Weisbecker
2009/2/4 Anton Vorontsov :
> Irqsoff, switch and preempt tracers use CALLER_ADDR macros, so they
> should select FRAME_POINTER. Otherwise traces are meaningless.
>
> Signed-off-by: Anton Vorontsov 
> ---
>  kernel/trace/Kconfig |3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
> index e2a4ff6..48f7a37 100644
> --- a/kernel/trace/Kconfig
> +++ b/kernel/trace/Kconfig
> @@ -86,6 +86,7 @@ config IRQSOFF_TRACER
>select TRACE_IRQFLAGS
>select TRACING
>select TRACER_MAX_TRACE
> +   select FRAME_POINTER
>help
>  This option measures the time spent in irqs-off critical
>  sections, with microsecond accuracy.
> @@ -108,6 +109,7 @@ config PREEMPT_TRACER
>depends on DEBUG_KERNEL
>select TRACING
>select TRACER_MAX_TRACE
> +   select FRAME_POINTER
>help
>  This option measures the time spent in preemption off critical
>  sections, with microsecond accuracy.
> @@ -136,6 +138,7 @@ config SCHED_TRACER
>select TRACING
>select CONTEXT_SWITCH_TRACER
>select TRACER_MAX_TRACE
> +   select FRAME_POINTER
>help
>  This tracer tracks the latency of the highest priority task
>  to be scheduled in, starting from the point it has woken up.
> --


Looks right.

BTW, how behaves builtin_return_address in case of !FRAME_POINTERS ?
I guess it would only work with the first caller builtin_return_address(0)
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH 3/3] tracing: Tracers that use CALLER_ADDR macros should select FRAME_POINTER

2009-02-04 Thread Steven Rostedt

On Wed, 2009-02-04 at 16:26 +0100, Frédéric Weisbecker wrote:
> 2009/2/4 Anton Vorontsov :
> > Irqsoff, switch and preempt tracers use CALLER_ADDR macros, so they
> > should select FRAME_POINTER. Otherwise traces are meaningless.
> >
> > Signed-off-by: Anton Vorontsov 
> > ---
> >  kernel/trace/Kconfig |3 +++
> >  1 files changed, 3 insertions(+), 0 deletions(-)
> >
> > diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
> > index e2a4ff6..48f7a37 100644
> > --- a/kernel/trace/Kconfig
> > +++ b/kernel/trace/Kconfig
> > @@ -86,6 +86,7 @@ config IRQSOFF_TRACER
> >select TRACE_IRQFLAGS
> >select TRACING
> >select TRACER_MAX_TRACE
> > +   select FRAME_POINTER
> >help
> >  This option measures the time spent in irqs-off critical
> >  sections, with microsecond accuracy.
> > @@ -108,6 +109,7 @@ config PREEMPT_TRACER
> >depends on DEBUG_KERNEL
> >select TRACING
> >select TRACER_MAX_TRACE
> > +   select FRAME_POINTER
> >help
> >  This option measures the time spent in preemption off critical
> >  sections, with microsecond accuracy.
> > @@ -136,6 +138,7 @@ config SCHED_TRACER
> >select TRACING
> >select CONTEXT_SWITCH_TRACER
> >select TRACER_MAX_TRACE
> > +   select FRAME_POINTER
> >help
> >  This tracer tracks the latency of the highest priority task
> >  to be scheduled in, starting from the point it has woken up.
> > --
> 
> 
> Looks right.
> 
> BTW, how behaves builtin_return_address in case of !FRAME_POINTERS ?
> I guess it would only work with the first caller builtin_return_address(0)


>From ftrace.h:

#ifdef CONFIG_FRAME_POINTER
/* TODO: need to fix this for ARM */
# define CALLER_ADDR0 ((unsigned long)__builtin_return_address(0))
# define CALLER_ADDR1 ((unsigned long)__builtin_return_address(1))
# define CALLER_ADDR2 ((unsigned long)__builtin_return_address(2))
# define CALLER_ADDR3 ((unsigned long)__builtin_return_address(3))
# define CALLER_ADDR4 ((unsigned long)__builtin_return_address(4))
# define CALLER_ADDR5 ((unsigned long)__builtin_return_address(5))
# define CALLER_ADDR6 ((unsigned long)__builtin_return_address(6))
#else
# define CALLER_ADDR0 ((unsigned long)__builtin_return_address(0))
# define CALLER_ADDR1 0UL
# define CALLER_ADDR2 0UL
# define CALLER_ADDR3 0UL
# define CALLER_ADDR4 0UL
# define CALLER_ADDR5 0UL
# define CALLER_ADDR6 0UL
#endif

Yep!

-- Steve


___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

[PATCH 3/3] tracing: Tracers that use CALLER_ADDR macros should select FRAME_POINTER

2009-02-04 Thread Anton Vorontsov
Irqsoff, switch and preempt tracers use CALLER_ADDR macros, so they
should select FRAME_POINTER. Otherwise traces are meaningless.

Signed-off-by: Anton Vorontsov 
---
 kernel/trace/Kconfig |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index e2a4ff6..48f7a37 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -86,6 +86,7 @@ config IRQSOFF_TRACER
select TRACE_IRQFLAGS
select TRACING
select TRACER_MAX_TRACE
+   select FRAME_POINTER
help
  This option measures the time spent in irqs-off critical
  sections, with microsecond accuracy.
@@ -108,6 +109,7 @@ config PREEMPT_TRACER
depends on DEBUG_KERNEL
select TRACING
select TRACER_MAX_TRACE
+   select FRAME_POINTER
help
  This option measures the time spent in preemption off critical
  sections, with microsecond accuracy.
@@ -136,6 +138,7 @@ config SCHED_TRACER
select TRACING
select CONTEXT_SWITCH_TRACER
select TRACER_MAX_TRACE
+   select FRAME_POINTER
help
  This tracer tracks the latency of the highest priority task
  to be scheduled in, starting from the point it has woken up.
-- 
1.5.6.5
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev