[V4 patch 00/15] cpuidle: code consolidation
Rafael J. Wysocki
rjw at sisk.pl
Tue Apr 23 08:00:26 EDT 2013
On Tuesday, April 23, 2013 10:54:30 AM Daniel Lezcano wrote:
> This patchset series provide some code consolidation across the different
> cpuidle drivers. It contains two parts, the first one is the removal of
> the time keeping flag and the second one, is a common initialization routine.
>
> All the drivers use the en_core_tk_irqen flag, which means it is not necessary
> to make the time computation optional. We can remove this flag and assume the
> cpuidle framework always manage this operation.
>
> The cpuidle code initialization is duplicated across the different drivers in
> the same manner.
>
> The repeating pattern is:
>
> SMP:
>
> cpuidle_register_driver(drv);
> for_each_possible_cpu(cpu) {
> dev = per_cpu(cpuidle_device, cpu);
> cpuidle_register_device(dev);
> }
>
> UP:
>
> cpuidle_register_driver(drv);
> cpuidle_register_device(dev);
>
> As on a UP machine the macro 'for_each_cpu' is a one iteration loop, using the
> initialization loop from SMP to UP works.
>
> The patchset does some cleanup for different drivers in order to make the init
> code the same. Then it introduces a generic function:
>
> cpuidle_register(struct cpuidle_driver *drv, struct cpumask *cpumask)
>
> The cpumask is for the coupled idle states.
>
> The drivers are then modified to take into account this new function and
> to remove the duplicated code.
>
> The benefit is observable in the diffstat: 332 lines of code removed.
>
> Changelog:
> - V4:
> * Added the different Acked-by and Reviewed-by
> * Removed the patches already merged:
> * ARM: shmobile: cpuidle: remove shmobile_enter_wfi function
> * ARM: shmobile: cpuidle: remove shmobile_enter_wfi prototype
> * ARM: OMAP3: remove cpuidle_wrap_enter
> * Removed patch without acked-by (no answer from the maintainer)
> * ARM: s3c64xx: cpuidle: use init/exit common routine
>
> - V3:
> * folded patch 5/19 into 19/19, they were:
> * ARM: imx: cpuidle: use init/exit common routine
> * ARM: imx: cpuidle: create separate drivers for imx5/imx6
> * removed rule to make cpuidle.o in the imx's Makefile
> * splitted patch 1/19 into two, they are:
> * [V3 patch 01/19] ARM: shmobile: cpuidle: remove shmobile_enter_wfi
> * [V3 patch 02/19] ARM: shmobile: cpuidle: remove shmobile_enter_wfi prototype
>
> - V2:
> * fixed cpumask NULL test for coupled state in cpuidle_register
> * added comment about structure copy
> * changed printk by pr_err
> * folded splitted message
> * fixed return code in cpuidle_register
> * updated Documentation/cpuidle/drivers.txt
> * added in the changelog dev->state_count is filled by cpuidle_enable_device
> * fixed tag for tegra in the first line patch description
> * fixed tegra2 removed tegra_tear_down_cpu = tegra20_tear_down_cpu;
>
> - V1: Initial post
>
> Tested-on: u8500
> Tested-on: at91
> Tested-on: intel i5
> Tested-on: OMAP4
> Tested-by: Kevin Hilman <khilman at linaro.org> # OMAP3, OMAP4
> Tested-by: Andrew Lunn <andrew at lunn.ch> # Kirkwood
>
> Compiled with and without CPU_IDLE for:
> u8500, at91, davinci, exynos, imx5, imx6, kirkwood, multi_v7 (for calxeda),
> omap2plus, s3c64, tegra1, tegra2, tegra3
>
> Daniel Lezcano (15):
> cpuidle: remove en_core_tk_irqen flag
> ARM: ux500: cpuidle: replace for_each_online_cpu by
> for_each_possible_cpu
> cpuidle: make a single register function for all
> ARM: ux500: cpuidle: use init/exit common routine
> ARM: at91: cpuidle: use init/exit common routine
> ARM: OMAP3: cpuidle: use init/exit common routine
> ARM: tegra: cpuidle: use init/exit common routine
> ARM: shmobile: cpuidle: use init/exit common routine
> ARM: OMAP4: cpuidle: use init/exit common routine
> ARM: tegra: cpuidle: use init/exit common routine for tegra2
> ARM: tegra: cpuidle: use init/exit common routine for tegra3
> ARM: calxeda: cpuidle: use init/exit common routine
> ARM: kirkwood: cpuidle: use init/exit common routine
> ARM: davinci: cpuidle: use init/exit common routine
> ARM: imx: cpuidle: use init/exit common routine
Whole series applied.
Thanks,
Rafael
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
More information about the linux-arm-kernel
mailing list