From: Daniel Lezcano <daniel.lezcano@linaro.org> To: rjw@sisk.pl Cc: linus.walleij@linaro.org, jason@lakedaemon.net, andrew@lunn.ch, kernel@pengutronix.de, swarren@wwwdotorg.org, santosh.shilimkar@ti.com, nicolas.ferre@atmel.com, plagnioj@jcrosoft.com, linux@maxim.org.za, rob.herring@calxeda.com, nsekhar@ti.com, horms@verge.net.au, magnus.damm@gmail.com, deepthi@linux.vnet.ibm.com, lethal@linux-sh.org, jkosina@suse.cz, kgene.kim@samsung.com, khilman@deeprootsystems.com, tony@atomide.com, linux-pm@vger.kernel.org, patches@linaro.org, linux-arm-kernel@lists.infradead.org, linaro-kernel@lists.linaro.org, josephl@nvidia.com Subject: [V3 patch 00/19] cpuidle: code consolidation Date: Fri, 12 Apr 2013 14:35:46 +0200 [thread overview] Message-ID: <1365770165-27096-1-git-send-email-daniel.lezcano@linaro.org> (raw) 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: - 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 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 (19): ARM: shmobile: cpuidle: remove shmobile_enter_wfi function ARM: shmobile: cpuidle: remove shmobile_enter_wfi prototype ARM: OMAP3: remove cpuidle_wrap_enter 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: s3c64xx: 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 Documentation/cpuidle/driver.txt | 6 + arch/arm/mach-at91/cpuidle.c | 18 +-- arch/arm/mach-davinci/cpuidle.c | 21 +--- arch/arm/mach-exynos/cpuidle.c | 1 - arch/arm/mach-imx/Makefile | 2 +- arch/arm/mach-imx/cpuidle-imx5.c | 40 +++++++ arch/arm/mach-imx/cpuidle-imx6q.c | 3 +- arch/arm/mach-imx/cpuidle.c | 80 ------------- arch/arm/mach-imx/cpuidle.h | 10 +- arch/arm/mach-imx/pm-imx5.c | 30 +---- arch/arm/mach-omap2/cpuidle34xx.c | 49 ++------ arch/arm/mach-omap2/cpuidle44xx.c | 23 +--- arch/arm/mach-s3c64xx/cpuidle.c | 15 +-- arch/arm/mach-shmobile/cpuidle.c | 11 +- arch/arm/mach-shmobile/include/mach/common.h | 3 - arch/arm/mach-shmobile/pm-sh7372.c | 2 - arch/arm/mach-tegra/cpuidle-tegra114.c | 27 +---- arch/arm/mach-tegra/cpuidle-tegra20.c | 31 +---- arch/arm/mach-tegra/cpuidle-tegra30.c | 28 +---- arch/arm/mach-ux500/cpuidle.c | 33 +----- arch/powerpc/platforms/pseries/processor_idle.c | 1 - arch/sh/kernel/cpu/shmobile/cpuidle.c | 1 - arch/x86/kernel/apm_32.c | 1 - drivers/acpi/processor_idle.c | 1 - drivers/cpuidle/cpuidle-calxeda.c | 53 +-------- drivers/cpuidle/cpuidle-kirkwood.c | 18 +-- drivers/cpuidle/cpuidle.c | 144 ++++++++++++++--------- drivers/idle/intel_idle.c | 1 - include/linux/cpuidle.h | 20 ++-- 29 files changed, 175 insertions(+), 498 deletions(-) create mode 100644 arch/arm/mach-imx/cpuidle-imx5.c delete mode 100644 arch/arm/mach-imx/cpuidle.c -- 1.7.9.5
WARNING: multiple messages have this Message-ID (diff)
From: daniel.lezcano@linaro.org (Daniel Lezcano) To: linux-arm-kernel@lists.infradead.org Subject: [V3 patch 00/19] cpuidle: code consolidation Date: Fri, 12 Apr 2013 14:35:46 +0200 [thread overview] Message-ID: <1365770165-27096-1-git-send-email-daniel.lezcano@linaro.org> (raw) 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: - 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 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 (19): ARM: shmobile: cpuidle: remove shmobile_enter_wfi function ARM: shmobile: cpuidle: remove shmobile_enter_wfi prototype ARM: OMAP3: remove cpuidle_wrap_enter 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: s3c64xx: 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 Documentation/cpuidle/driver.txt | 6 + arch/arm/mach-at91/cpuidle.c | 18 +-- arch/arm/mach-davinci/cpuidle.c | 21 +--- arch/arm/mach-exynos/cpuidle.c | 1 - arch/arm/mach-imx/Makefile | 2 +- arch/arm/mach-imx/cpuidle-imx5.c | 40 +++++++ arch/arm/mach-imx/cpuidle-imx6q.c | 3 +- arch/arm/mach-imx/cpuidle.c | 80 ------------- arch/arm/mach-imx/cpuidle.h | 10 +- arch/arm/mach-imx/pm-imx5.c | 30 +---- arch/arm/mach-omap2/cpuidle34xx.c | 49 ++------ arch/arm/mach-omap2/cpuidle44xx.c | 23 +--- arch/arm/mach-s3c64xx/cpuidle.c | 15 +-- arch/arm/mach-shmobile/cpuidle.c | 11 +- arch/arm/mach-shmobile/include/mach/common.h | 3 - arch/arm/mach-shmobile/pm-sh7372.c | 2 - arch/arm/mach-tegra/cpuidle-tegra114.c | 27 +---- arch/arm/mach-tegra/cpuidle-tegra20.c | 31 +---- arch/arm/mach-tegra/cpuidle-tegra30.c | 28 +---- arch/arm/mach-ux500/cpuidle.c | 33 +----- arch/powerpc/platforms/pseries/processor_idle.c | 1 - arch/sh/kernel/cpu/shmobile/cpuidle.c | 1 - arch/x86/kernel/apm_32.c | 1 - drivers/acpi/processor_idle.c | 1 - drivers/cpuidle/cpuidle-calxeda.c | 53 +-------- drivers/cpuidle/cpuidle-kirkwood.c | 18 +-- drivers/cpuidle/cpuidle.c | 144 ++++++++++++++--------- drivers/idle/intel_idle.c | 1 - include/linux/cpuidle.h | 20 ++-- 29 files changed, 175 insertions(+), 498 deletions(-) create mode 100644 arch/arm/mach-imx/cpuidle-imx5.c delete mode 100644 arch/arm/mach-imx/cpuidle.c -- 1.7.9.5
next reply other threads:[~2013-04-12 12:36 UTC|newest] Thread overview: 114+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-04-12 12:35 Daniel Lezcano [this message] 2013-04-12 12:35 ` [V3 patch 00/19] cpuidle: code consolidation Daniel Lezcano 2013-04-12 12:35 ` [V3 patch 01/19] ARM: shmobile: cpuidle: remove shmobile_enter_wfi function Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-15 3:56 ` Simon Horman 2013-04-15 3:56 ` Simon Horman 2013-04-18 8:28 ` Santosh Shilimkar 2013-04-18 8:28 ` Santosh Shilimkar 2013-04-12 12:35 ` [V3 patch 02/19] ARM: shmobile: cpuidle: remove shmobile_enter_wfi prototype Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-15 3:56 ` Simon Horman 2013-04-15 3:56 ` Simon Horman 2013-04-18 8:30 ` Santosh Shilimkar 2013-04-18 8:30 ` Santosh Shilimkar 2013-04-18 8:56 ` Daniel Lezcano 2013-04-18 8:56 ` Daniel Lezcano 2013-04-12 12:35 ` [V3 patch 03/19] ARM: OMAP3: remove cpuidle_wrap_enter Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-15 22:55 ` Kevin Hilman 2013-04-15 22:55 ` Kevin Hilman 2013-04-18 8:27 ` Santosh Shilimkar 2013-04-18 8:27 ` Santosh Shilimkar 2013-04-19 22:17 ` Kevin Hilman 2013-04-19 22:17 ` Kevin Hilman 2013-04-12 12:35 ` [V3 patch 04/19] cpuidle: remove en_core_tk_irqen flag Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-19 22:21 ` Kevin Hilman 2013-04-19 22:21 ` Kevin Hilman 2013-04-12 12:35 ` [V3 patch 05/19] ARM: ux500: cpuidle: replace for_each_online_cpu by for_each_possible_cpu Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-16 12:34 ` Linus Walleij 2013-04-16 12:34 ` Linus Walleij 2013-04-18 8:38 ` Santosh Shilimkar 2013-04-18 8:38 ` Santosh Shilimkar 2013-04-12 12:35 ` [V3 patch 06/19] cpuidle: make a single register function for all Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-17 6:28 ` Daniel Lezcano 2013-04-17 6:28 ` Daniel Lezcano 2013-04-18 8:48 ` Santosh Shilimkar 2013-04-18 8:48 ` Santosh Shilimkar 2013-04-23 13:43 ` Daniel Lezcano 2013-04-23 13:43 ` Daniel Lezcano 2013-04-23 13:56 ` Santosh Shilimkar 2013-04-23 13:56 ` Santosh Shilimkar 2013-04-23 14:22 ` Daniel Lezcano 2013-04-23 14:22 ` Daniel Lezcano 2013-04-23 15:07 ` Santosh Shilimkar 2013-04-23 15:07 ` Santosh Shilimkar 2013-04-23 15:21 ` Daniel Lezcano 2013-04-23 15:21 ` Daniel Lezcano 2013-04-12 12:35 ` [V3 patch 07/19] ARM: ux500: cpuidle: use init/exit common routine Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-12 12:35 ` [V3 patch 08/19] ARM: at91: " Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-12 12:35 ` [V3 patch 09/19] ARM: OMAP3: " Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-18 8:49 ` Santosh Shilimkar 2013-04-18 8:49 ` Santosh Shilimkar 2013-04-19 22:19 ` Kevin Hilman 2013-04-19 22:19 ` Kevin Hilman 2013-04-12 12:35 ` [V3 patch 10/19] ARM: s3c64xx: " Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-22 6:32 ` Daniel Lezcano 2013-04-22 6:32 ` Daniel Lezcano 2013-04-12 12:35 ` [V3 patch 11/19] ARM: tegra: " Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-12 12:35 ` [V3 patch 12/19] ARM: shmobile: " Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-15 3:56 ` Simon Horman 2013-04-15 3:56 ` Simon Horman 2013-04-12 12:35 ` [V3 patch 13/19] ARM: OMAP4: " Daniel Lezcano 2013-04-12 12:35 ` Daniel Lezcano 2013-04-18 8:50 ` Santosh Shilimkar 2013-04-18 8:50 ` Santosh Shilimkar 2013-04-19 22:19 ` Kevin Hilman 2013-04-19 22:19 ` Kevin Hilman 2013-04-12 12:36 ` [V3 patch 14/19] ARM: tegra: cpuidle: use init/exit common routine for tegra2 Daniel Lezcano 2013-04-12 12:36 ` Daniel Lezcano 2013-04-12 12:36 ` [V3 patch 15/19] ARM: tegra: cpuidle: use init/exit common routine for tegra3 Daniel Lezcano 2013-04-12 12:36 ` Daniel Lezcano 2013-04-12 12:36 ` [V3 patch 16/19] ARM: calxeda: cpuidle: use init/exit common routine Daniel Lezcano 2013-04-12 12:36 ` Daniel Lezcano 2013-04-12 12:36 ` [V3 patch 17/19] ARM: kirkwood: " Daniel Lezcano 2013-04-12 12:36 ` Daniel Lezcano 2013-04-14 15:14 ` Andrew Lunn 2013-04-14 15:14 ` Andrew Lunn 2013-04-14 20:22 ` Daniel Lezcano 2013-04-14 20:22 ` Daniel Lezcano 2013-04-22 7:01 ` Daniel Lezcano 2013-04-22 7:01 ` Daniel Lezcano 2013-04-22 16:47 ` Andrew Lunn 2013-04-22 16:47 ` Andrew Lunn 2013-04-22 16:54 ` Daniel Lezcano 2013-04-22 16:54 ` Daniel Lezcano 2013-04-12 12:36 ` [V3 patch 18/19] ARM: davinci: " Daniel Lezcano 2013-04-12 12:36 ` Daniel Lezcano 2013-04-16 8:30 ` Sekhar Nori 2013-04-16 8:30 ` Sekhar Nori 2013-04-12 12:36 ` [V3 patch 19/19] ARM: imx: " Daniel Lezcano 2013-04-12 12:36 ` Daniel Lezcano 2013-04-17 6:24 ` Daniel Lezcano 2013-04-17 6:24 ` Daniel Lezcano 2013-04-17 7:15 ` Shawn Guo 2013-04-17 7:15 ` Shawn Guo 2013-04-17 7:23 ` Daniel Lezcano 2013-04-17 7:23 ` Daniel Lezcano 2013-04-17 7:39 ` Shawn Guo 2013-04-17 7:39 ` Shawn Guo 2013-04-15 23:03 ` [V3 patch 00/19] cpuidle: code consolidation Kevin Hilman 2013-04-15 23:03 ` Kevin Hilman 2013-04-16 8:42 ` Daniel Lezcano 2013-04-16 8:42 ` Daniel Lezcano 2013-04-19 22:44 ` Kevin Hilman 2013-04-19 22:44 ` Kevin Hilman
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1365770165-27096-1-git-send-email-daniel.lezcano@linaro.org \ --to=daniel.lezcano@linaro.org \ --cc=andrew@lunn.ch \ --cc=deepthi@linux.vnet.ibm.com \ --cc=horms@verge.net.au \ --cc=jason@lakedaemon.net \ --cc=jkosina@suse.cz \ --cc=josephl@nvidia.com \ --cc=kernel@pengutronix.de \ --cc=kgene.kim@samsung.com \ --cc=khilman@deeprootsystems.com \ --cc=lethal@linux-sh.org \ --cc=linaro-kernel@lists.linaro.org \ --cc=linus.walleij@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-pm@vger.kernel.org \ --cc=linux@maxim.org.za \ --cc=magnus.damm@gmail.com \ --cc=nicolas.ferre@atmel.com \ --cc=nsekhar@ti.com \ --cc=patches@linaro.org \ --cc=plagnioj@jcrosoft.com \ --cc=rjw@sisk.pl \ --cc=rob.herring@calxeda.com \ --cc=santosh.shilimkar@ti.com \ --cc=swarren@wwwdotorg.org \ --cc=tony@atomide.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.