On Tue, May 27, 2014 at 07:30:50PM -0400, Steven Rostedt wrote: > Paul, Peter, see anything wrong with this?
You mean, aside from that it won't actually apply due to that code having been massively overhauled? I suppose the same thing Arnd mentioned, the cpuidle_enter() thing can be huge, but is we're going to have to push this down into all cpuidle drivers we're not going to be happy. So I think we're going to have to draw a line and impose restrictions on what cpuidle_enter() implementations can and can not do. > diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c > index 8f4390a..f5e6a64 100644 > --- a/kernel/sched/idle.c > +++ b/kernel/sched/idle.c > @@ -88,12 +88,6 @@ static int cpuidle_idle_call(void) > } > > /* > - * During the idle period, stop measuring the disabled irqs > - * critical sections latencies > - */ > - stop_critical_timings(); > - > - /* > * Tell the RCU framework we are entering an idle section, > * so no more rcu read side critical sections and one more > * step to the grace period > @@ -144,6 +138,12 @@ static int cpuidle_idle_call(void) > trace_cpu_idle_rcuidle(next_state, dev->cpu); > > /* > + * During the idle period, stop measuring the > + * disabled irqs critical sections latencies > + */ > + stop_critical_timings(); > + > + /* > * Enter the idle state previously > * returned by the governor > * decision. This function will block > @@ -154,6 +154,8 @@ static int cpuidle_idle_call(void) > entered_state = cpuidle_enter(drv, dev, > next_state); > > + start_critical_timings(); > + > trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, > dev->cpu); >
pgpDF5Pcfz8oh.pgp
Description: PGP signature