[PATCH] cpuidle: add freescale e500 family porcessors idle support
Scott Wood
scottwood at freescale.com
Sat Apr 5 10:00:30 EST 2014
On Tue, 2014-04-01 at 16:33 +0800, Dongsheng Wang wrote:
> From: Wang Dongsheng <dongsheng.wang at freescale.com>
>
> Add cpuidle support for e500 family, using cpuidle framework to
> manage various low power modes. The new implementation will remain
> compatible with original idle method.
>
> I have done test about power consumption and latency. Cpuidle framework
> will make CPU response time faster than original method, but power
> consumption is higher than original method.
>
> Power consumption:
> The original method, power consumption is 10.51202 (W).
> The cpuidle framework, power consumption is 10.5311 (W).
>
> Latency:
> The original method, avg latency is 6782 (us).
> The cpuidle framework, avg latency is 6482 (us).
>
> Initially, this supports PW10, PW20 and subsequent patches will support
> DOZE/NAP and PH10, PH20.
Have you tried tuning the timebase bit for the original method, to match
what you're doing in cpuidle and/or for general optimization?
Do you get similar results for a variety of workloads?
> +static struct cpuidle_state pw_idle_states[] = {
> + {
> + .name = "pw10",
> + .desc = "pw10",
> + .flags = CPUIDLE_FLAG_TIME_VALID,
> + .exit_latency = 0,
> + .target_residency = 0,
> + .enter = &pw10_enter
> + },
> +
> + {
> + .name = "pw20",
> + .desc = "pw20-core-idle",
> + .flags = CPUIDLE_FLAG_TIME_VALID,
> + .exit_latency = 1,
> + .target_residency = 50,
> + .enter = &pw20_enter
> + },
> +};
Where did exit_latency and target_residency come from? It looks rather
different from the ~1ms delay before entering PW20 with the original
method.
Though, I'd have expected a shorter PW20 delay to have longer wake
latency, due to entering the lower power state more often...
> +static void replace_orig_idle(void *dummy)
> +{
> + return;
> +}
Why? If you're using this as some sort of barrier to ensure that all
CPUs have done something before continuing, explain that, along with why
it matters.
-Scott
More information about the Linuxppc-dev
mailing list