All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: "Rafael J. Wysocki" <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: Re: [PATCH 00/18] cpuidle: code consolidation
Date: Wed, 10 Apr 2013 22:01:30 +0200	[thread overview]
Message-ID: <5165C51A.2010601@linaro.org> (raw)
In-Reply-To: <17970296.uCm16aDdBG@vostro.rjw.lan>

On 04/10/2013 09:12 PM, Rafael J. Wysocki wrote:
> On Wednesday, April 10, 2013 04:22:05 PM 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.
>>
>> 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 (18):
>>   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
>>   ARM: imx: cpuidle: create separate drivers for imx5/imx6
>>   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: tegra1: cpuidle: use init/exit common routine
>>   ARM: shmobile: cpuidle: use init/exit common routine
>>   ARM: OMAP4: cpuidle: use init/exit common routine
>>   ARM: tegra2: cpuidle: use init/exit common routine
>>   ARM: tegra3: cpuidle: use init/exit common routine
>>   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
>>
>>  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                      |    1 +
>>  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/pm-sh7372.c              |    1 -
>>  arch/arm/mach-tegra/cpuidle-tegra114.c          |   27 +----
>>  arch/arm/mach-tegra/cpuidle-tegra20.c           |   34 +-----
>>  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                       |  137 ++++++++++++++---------
>>  drivers/idle/intel_idle.c                       |    1 -
>>  include/linux/cpuidle.h                         |   20 ++--
>>  27 files changed, 162 insertions(+), 496 deletions(-)
>>  create mode 100644 arch/arm/mach-imx/cpuidle-imx5.c
>>  delete mode 100644 arch/arm/mach-imx/cpuidle.c
> 
> I will be traveling from Saturday onwards pretty much until the beginning of
> the 3.10 merge window, so I'm afraid this will have to wait for the next
> release cycle.  At least I'm not going to take patches that haven't been
> ACKed before tomorrow evening (CEST).

Ok, thanks for the heads-up.

  -- Daniel


-- 
 <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog


WARNING: multiple messages have this Message-ID (diff)
From: daniel.lezcano@linaro.org (Daniel Lezcano)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 00/18] cpuidle: code consolidation
Date: Wed, 10 Apr 2013 22:01:30 +0200	[thread overview]
Message-ID: <5165C51A.2010601@linaro.org> (raw)
In-Reply-To: <17970296.uCm16aDdBG@vostro.rjw.lan>

On 04/10/2013 09:12 PM, Rafael J. Wysocki wrote:
> On Wednesday, April 10, 2013 04:22:05 PM 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.
>>
>> 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 (18):
>>   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
>>   ARM: imx: cpuidle: create separate drivers for imx5/imx6
>>   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: tegra1: cpuidle: use init/exit common routine
>>   ARM: shmobile: cpuidle: use init/exit common routine
>>   ARM: OMAP4: cpuidle: use init/exit common routine
>>   ARM: tegra2: cpuidle: use init/exit common routine
>>   ARM: tegra3: cpuidle: use init/exit common routine
>>   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
>>
>>  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                      |    1 +
>>  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/pm-sh7372.c              |    1 -
>>  arch/arm/mach-tegra/cpuidle-tegra114.c          |   27 +----
>>  arch/arm/mach-tegra/cpuidle-tegra20.c           |   34 +-----
>>  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                       |  137 ++++++++++++++---------
>>  drivers/idle/intel_idle.c                       |    1 -
>>  include/linux/cpuidle.h                         |   20 ++--
>>  27 files changed, 162 insertions(+), 496 deletions(-)
>>  create mode 100644 arch/arm/mach-imx/cpuidle-imx5.c
>>  delete mode 100644 arch/arm/mach-imx/cpuidle.c
> 
> I will be traveling from Saturday onwards pretty much until the beginning of
> the 3.10 merge window, so I'm afraid this will have to wait for the next
> release cycle.  At least I'm not going to take patches that haven't been
> ACKed before tomorrow evening (CEST).

Ok, thanks for the heads-up.

  -- Daniel


-- 
 <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

  reply	other threads:[~2013-04-10 20:01 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-10 14:22 [PATCH 00/18] cpuidle: code consolidation Daniel Lezcano
2013-04-10 14:22 ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 01/18] ARM: OMAP3: remove cpuidle_wrap_enter Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 02/18] cpuidle: remove en_core_tk_irqen flag Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 03/18] ARM: ux500: cpuidle: replace for_each_online_cpu by for_each_possible_cpu Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 04/18] ARM: imx: cpuidle: create separate drivers for imx5/imx6 Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-12  6:05   ` Shawn Guo
2013-04-12  6:05     ` Shawn Guo
2013-04-12  6:58     ` Daniel Lezcano
2013-04-12  6:58       ` Daniel Lezcano
2013-04-12  7:11       ` Shawn Guo
2013-04-12  7:11         ` Shawn Guo
2013-04-12  7:12         ` Daniel Lezcano
2013-04-12  7:12           ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 05/18] cpuidle: make a single register function for all Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:59   ` Rob Herring
2013-04-10 14:59     ` Rob Herring
2013-04-10 15:05     ` Daniel Lezcano
2013-04-10 15:05       ` Daniel Lezcano
2013-04-22  6:57     ` Daniel Lezcano
2013-04-22  6:57       ` Daniel Lezcano
2013-04-10 16:55   ` Andrew Lunn
2013-04-10 16:55     ` Andrew Lunn
2013-04-10 18:04     ` Daniel Lezcano
2013-04-10 18:04       ` Daniel Lezcano
2013-04-10 18:18       ` Andrew Lunn
2013-04-10 18:18         ` Andrew Lunn
2013-04-10 22:07         ` Daniel Lezcano
2013-04-10 22:07           ` Daniel Lezcano
2013-04-10 17:04   ` Andrew Lunn
2013-04-10 17:04     ` Andrew Lunn
2013-04-10 18:02     ` Daniel Lezcano
2013-04-10 18:02       ` Daniel Lezcano
2013-04-10 18:23       ` Andrew Lunn
2013-04-10 18:23         ` Andrew Lunn
2013-04-10 19:59         ` Daniel Lezcano
2013-04-10 19:59           ` Daniel Lezcano
2013-04-10 18:22   ` Colin Cross
2013-04-10 18:22     ` Colin Cross
2013-04-10 19:59     ` Daniel Lezcano
2013-04-10 19:59       ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 06/18] ARM: ux500: cpuidle: use init/exit common routine Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 07/18] ARM: at91: " Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:39   ` Nicolas Ferre
2013-04-10 14:39     ` Nicolas Ferre
2013-04-10 14:22 ` [PATCH 08/18] ARM: OMAP3: " Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 09/18] ARM: s3c64xx: " Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 10/18] ARM: tegra1: " Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 17:29   ` Stephen Warren
2013-04-10 17:29     ` Stephen Warren
2013-04-10 18:05     ` Daniel Lezcano
2013-04-10 18:05       ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 11/18] ARM: shmobile: " Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-11  2:46   ` Simon Horman
2013-04-11  2:46     ` Simon Horman
2013-04-10 14:22 ` [PATCH 12/18] ARM: OMAP4: " Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 13/18] ARM: tegra2: " Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-11  1:01   ` Joseph Lo
2013-04-11  1:01     ` Joseph Lo
2013-04-11  5:58     ` Daniel Lezcano
2013-04-11  5:58       ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 14/18] ARM: tegra3: " Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 15/18] ARM: calxeda: " Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:31   ` Rob Herring
2013-04-10 14:31     ` Rob Herring
2013-04-10 14:22 ` [PATCH 16/18] ARM: kirkwood: " Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 17/18] ARM: davinci: " Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 14:22 ` [PATCH 18/18] ARM: imx: " Daniel Lezcano
2013-04-10 14:22   ` Daniel Lezcano
2013-04-10 19:12 ` [PATCH 00/18] cpuidle: code consolidation Rafael J. Wysocki
2013-04-10 19:12   ` Rafael J. Wysocki
2013-04-10 20:01   ` Daniel Lezcano [this message]
2013-04-10 20:01     ` Daniel Lezcano

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=5165C51A.2010601@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: link
Be 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.