[PATCH] arm: add cpu_idle tracepoints to arch_cpu_idle

Steven Rostedt rostedt at goodmis.org
Wed Sep 16 09:41:28 PDT 2015


[ Added Arjan, as he knows powertop better, as well as
 Thomas Renninger, that added the cpu_idle trace event ]

On Wed, 16 Sep 2015 17:28:18 +0100
Russell King - ARM Linux <linux at arm.linux.org.uk> wrote:

> On Wed, Sep 16, 2015 at 10:37:00PM +0800, Jisheng Zhang wrote:
> > Currently, if cpuidle is disabled or not supported, powertop reports
> > zero wakeups and zero events. This is due to the cpu_idle tracepoints
> > are missing.
> > 
> > This patch is to make cpu_idle tracepoints always available even if
> > cpuidle is disabled or not supported.
> 
> This seems like a hack to me.  These are cpu_idle tracepoints which
> tell people when something happens in cpuidle.  If cpuidle is disabled,
> then surely the tracepoints shouldn't fire.
> 
> However, I'll leave it to the tracing people to have the final word on
> whether this is the right thing to do as I've very little experience
> with the tracing design.

Adding back the change log for the original patch:

"Currently, if cpuidle is disabled or not supported, powertop reports
zero wakeups and zero events. This is due to the cpu_idle tracepoints
are missing.

This patch is to make cpu_idle tracepoints always available even if
cpuidle is disabled or not supported."

This is the same code that sits in x86. I'm assuming it is fine. But
I'm not an expert on the cpu_idle trace event.

-- Steve


> 
> > 
> > Signed-off-by: Jisheng Zhang <jszhang at marvell.com>
> > ---
> >  arch/arm/kernel/process.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
> > index f192a2a..aa78e09 100644
> > --- a/arch/arm/kernel/process.c
> > +++ b/arch/arm/kernel/process.c
> > @@ -28,6 +28,7 @@
> >  #include <linux/random.h>
> >  #include <linux/hw_breakpoint.h>
> >  #include <linux/leds.h>
> > +#include <trace/events/power.h>
> >  
> >  #include <asm/processor.h>
> >  #include <asm/thread_notify.h>
> > @@ -66,11 +67,13 @@ void (*arm_pm_idle)(void);
> >  
> >  void arch_cpu_idle(void)
> >  {
> > +	trace_cpu_idle_rcuidle(1, smp_processor_id());
> >  	if (arm_pm_idle)
> >  		arm_pm_idle();
> >  	else
> >  		cpu_do_idle();
> >  	local_irq_enable();
> > +	trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
> >  }
> >  
> >  void arch_cpu_idle_prepare(void)
> > -- 
> > 2.5.1
> > 
> 




More information about the linux-arm-kernel mailing list