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);
>  


Attachment: pgpDF5Pcfz8oh.pgp
Description: PGP signature

Reply via email to