[RFC PATCH V6 0/4] cpuidle: Global registration of idle states with per-cpu statistics
Jean Pihet
jean.pihet at newoldbits.com
Thu Sep 22 15:37:27 EDT 2011
Hi,
On Thu, Sep 22, 2011 at 10:28 AM, Deepthi Dharwar
<deepthi at linux.vnet.ibm.com> wrote:
> The following patch series implements global registration of cpuidle
> states, and also has the necessary data structure changes to
> accommodate the per-cpu writable members of the cpuidle_states
> structure.
>
> This patch series had been in discussion earlier and
> following are the links to the previous discussions.
>
> v1 --> https://lkml.org/lkml/2011/3/22/161
> v2 --> https://lkml.org/lkml/2011/1/13/98
> v3 --> https://lkml.org/lkml/2011/2/8/73
> v4 --> https://lkml.org/lkml/2011/4/28/312
> v5 --> https://lkml.org/lkml/2011/6/6/259
>
> Changes from previous version (V5):
>
> Rebased the series to 3.1-rc7
>
> Tests done:
>
> 1. Compile tested for ARM using the following configs: da8xx_omapl_defconfig,
> exynos4_defconfig, kirkwood_defconfig, omap2plus_defconfig,
> at91rm9200_defconfig
Tested OK on OMAP3:
Signed-off-by: Jean Pihet <j-pihet at ti.com>
>
> 2. Boot tested on x86 nehalem with multiple C-states for both intel_idle
> and acpi_idle drivers.
>
> 3. Boot tested on T60p thinkpad that has T2600 cpu with multiple C-states.
> Also tested the case when there is dynamic changes in C-states
> AC <-> Battery Power switch.
>
> Brief description of the patches:
>
> Core change in this series is to split the cpuidle_device structure
> into two parts, i.e global and per-cpu basis.
>
> The per-cpu pieces are mostly generic statistics that can be independent
> of current running driver. As a result of these changes, there is single
> copy of cpuidle_states structure and single registration done by one
> cpu. The low level driver is free to set per-cpu driver data on
> each cpu if needed using the cpuidle_set_statedata() as the case
> today. Only in very rare cases asymmetric C-states exist which can be
> handled within the cpuidle driver. Most architectures do not have
> asymmetric C-states.
>
> First two patches in the series facilitate splitting of cpuidle_states
> and cpuidle_device structure and next two patches do the actual split,
> change the API's and make existing code follow the changed API.
>
> [1/4] - Move the idle residency accounting part from cpuidle.c to
> the respective low level drivers, so that the accounting can
> be accurately maintained if the driver decides to demote the
> chosen (suggested) by the governor.
This is a nice improvement since OMAP heavily uses the state demotion
in the cpuidle driver, and will use it even more with the per-device
PM QoS support added.
Thanks & regards,
Jean
>
> [2/4] - removes the cpuidle_device()->prepare API since is is not
> widely used and the only use case was to allow software
> demotion using CPUIDLE_FLAG_IGNORE flag. Both these
> functions can be absorbed within the cpuidle back-end
> driver ad hence deprecating the prepare routine and the
> CPUIDLE_FLAG_IGNORE flag.
>
> - Ref: https://lkml.org/lkml/2011/3/25/52
>
> [3/4] - Splits the usage statistics (read/write) part out of
> cpuidle_state structure, so that the states can become read
> only and hence made global.
>
> [4/4] - Most APIs will now need to pass pointer to both global
> cpuidle_driver and per-cpu cpuidle_device structure.
>
> arch/arm/mach-at91/cpuidle.c | 41 +++--
> arch/arm/mach-davinci/cpuidle.c | 51 ++++---
> arch/arm/mach-exynos4/cpuidle.c | 30 ++--
> arch/arm/mach-kirkwood/cpuidle.c | 42 +++---
> arch/arm/mach-omap2/cpuidle34xx.c | 133 +++++++++++------
> arch/sh/kernel/cpu/shmobile/cpuidle.c | 28 ++--
> drivers/acpi/processor_driver.c | 20 ---
> drivers/acpi/processor_idle.c | 251 +++++++++++++++++++++++++++------
> drivers/cpuidle/cpuidle.c | 86 ++++-------
> drivers/cpuidle/driver.c | 25 +++
> drivers/cpuidle/governors/ladder.c | 41 ++++-
> drivers/cpuidle/governors/menu.c | 29 ++--
> drivers/cpuidle/sysfs.c | 22 ++-
> drivers/idle/intel_idle.c | 130 +++++++++++++----
> include/acpi/processor.h | 1
> include/linux/cpuidle.h | 52 ++++---
> 16 files changed, 650 insertions(+), 332 deletions(-)
>
>
> --
>
> Thanks
> -Deepthi
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
More information about the linux-arm-kernel
mailing list