This is an RFC patch set for what I plan on pushing out to handle
the tracepoints that are called from within rcu_idle_exit() sections.
The first patch is the tracepoint infrastructure,
the second is the changes in x86
the third is the changes in the cpuidle driver.
I see there's use cases in the arm arch, but as that is in flux, I'll
let the arm folks deal with those.
-- Steve
Steven Rostedt (3):
tracing/rcu: Add trace_##name##__rcuidle() static tracepoint for inside rcu_idle_exit() sections
x86/tracing: Denote the power and cpuidle tracepoints as _rcuidle()
cpuidle/tracing: Denote the tracepoints as being in rcu_idle_exit() section
----
arch/x86/kernel/process.c | 24 ++++++++++++------------
drivers/cpuidle/cpuidle.c | 8 ++++----
include/linux/tracepoint.h | 20 ++++++++++++++++----
3 files changed, 32 insertions(+), 20 deletions(-)
On Tue, Feb 07, 2012 at 09:56:53AM -0500, Steven Rostedt wrote:
> This is an RFC patch set for what I plan on pushing out to handle
> the tracepoints that are called from within rcu_idle_exit() sections.
>
> The first patch is the tracepoint infrastructure,
> the second is the changes in x86
> the third is the changes in the cpuidle driver.
>
> I see there's use cases in the arm arch, but as that is in flux, I'll
> let the arm folks deal with those.
Please note that the __rcudle() tracepoints depend on patch #45 from
my series (https://lkml.org/lkml/2012/2/3/471), though only for code
containing tracepoints that are called both from idle and non-idle.
I believe that the tracepoints in this patch series are only invoked
from idle, so should be no problem.
Thanx, Paul
> -- Steve
>
>
> Steven Rostedt (3):
> tracing/rcu: Add trace_##name##__rcuidle() static tracepoint for inside rcu_idle_exit() sections
> x86/tracing: Denote the power and cpuidle tracepoints as _rcuidle()
> cpuidle/tracing: Denote the tracepoints as being in rcu_idle_exit() section
>
> ----
> arch/x86/kernel/process.c | 24 ++++++++++++------------
> drivers/cpuidle/cpuidle.c | 8 ++++----
> include/linux/tracepoint.h | 20 ++++++++++++++++----
> 3 files changed, 32 insertions(+), 20 deletions(-)
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
On Tue, 2012-02-07 at 07:37 -0800, Paul E. McKenney wrote:
> Please note that the __rcudle() tracepoints depend on patch #45 from
> my series (https://lkml.org/lkml/2012/2/3/471), though only for code
> containing tracepoints that are called both from idle and non-idle.
> I believe that the tracepoints in this patch series are only invoked
> from idle, so should be no problem.
Right, as I tested these without your patch series.
-- Steve
On Tue, Feb 07, 2012 at 09:56:53AM -0500, Steven Rostedt wrote:
> This is an RFC patch set for what I plan on pushing out to handle
> the tracepoints that are called from within rcu_idle_exit() sections.
>
> The first patch is the tracepoint infrastructure,
> the second is the changes in x86
> the third is the changes in the cpuidle driver.
Patches 2 and 3 look sensible to me as well.
Reviewed-by: Josh Triplett <[email protected]>
Hi,
I have some problem with cpuidle tracing:
https://bugzilla.kernel.org/show_bug.cgi?id=42742
so I applied 3 patches from https://lkml.org/lkml/headers/2012/2/7/231
> Steven Rostedt (3):
> tracing/rcu: Add trace_##name##__rcuidle() static tracepoint for inside rcu_idle_exit() sections
> x86/tracing: Denote the power and cpuidle tracepoints as _rcuidle()
> cpuidle/tracing: Denote the tracepoints as being in rcu_idle_exit() section
All 3 patches applied cleanly but for unknown reasons to me compilation fails:
CC arch/x86/kernel/process.o
arch/x86/kernel/process.c: In function ‘default_idle’:
arch/x86/kernel/process.c:380:3: error: implicit declaration of function ‘trace_power_start_rcuidle’ [-Werror=implicit-function-declaration]
arch/x86/kernel/process.c:394:3: error: implicit declaration of function ‘trace_power_end_rcuidle’ [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
I think this is because
static inline void trace_##name##_rcuidle(proto) \
should have only 1 argument passed.
but more are passed
trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
trace_power_start_rcuidle(POWER_CSTATE, next_state, dev->cpu);
However this explanation fails because
trace_power_end_rcuidle(smp_processor_id());
have single argument, and because without patches
arch/x86/kernel/process.c compiles without a problem. and there is
nothing in my 'git diff' which should justify such change.
It is mainline Linus kernel with just this 3 patches added.
Any idea?
gcc version 4.6.2 (Debian 4.6.2-14)
Debian GNU/Linux, wheezy i386. (IA-32)
Intel Pentium M processor.
--
Witold Baryluk
On Tue, 2012-02-14 at 19:09 +0100, Witold Baryluk wrote:
> Hi,
>
> I have some problem with cpuidle tracing:
>
> https://bugzilla.kernel.org/show_bug.cgi?id=42742
>
> so I applied 3 patches from https://lkml.org/lkml/headers/2012/2/7/231
>
> > Steven Rostedt (3):
> > tracing/rcu: Add trace_##name##__rcuidle() static tracepoint for inside rcu_idle_exit() sections
> > x86/tracing: Denote the power and cpuidle tracepoints as _rcuidle()
> > cpuidle/tracing: Denote the tracepoints as being in rcu_idle_exit() section
>
> All 3 patches applied cleanly but for unknown reasons to me compilation fails:
Yeah, my testing hit this issue and I fixed it up. I pushed out my
patches to Ingo that have passed all my tests. You can get them here:
https://lkml.org/lkml/2012/2/13/528
You only need to apply patches 3,4 and 5.
-- Steve
>
> CC arch/x86/kernel/process.o
> arch/x86/kernel/process.c: In function ‘default_idle’:
> arch/x86/kernel/process.c:380:3: error: implicit declaration of function ‘trace_power_start_rcuidle’ [-Werror=implicit-function-declaration]
> arch/x86/kernel/process.c:394:3: error: implicit declaration of function ‘trace_power_end_rcuidle’ [-Werror=implicit-function-declaration]
> cc1: some warnings being treated as errors
>