From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Santosh Shilimkar <santosh.shilimkar@ti.com>
Cc: rjw@sisk.pl, linus.walleij@linaro.org, jason@lakedaemon.net,
andrew@lunn.ch, kernel@pengutronix.de, swarren@wwwdotorg.org,
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: [V3 patch 06/19] cpuidle: make a single register function for all
Date: Tue, 23 Apr 2013 16:22:07 +0200 [thread overview]
Message-ID: <5176990F.5070605@linaro.org> (raw)
In-Reply-To: <51769316.9090309@ti.com>
On 04/23/2013 03:56 PM, Santosh Shilimkar wrote:
> On Tuesday 23 April 2013 07:13 PM, Daniel Lezcano wrote:
>> On 04/18/2013 10:48 AM, Santosh Shilimkar wrote:
>>> On Friday 12 April 2013 06:05 PM, Daniel Lezcano wrote:
>>>> The usual scheme to initialize a cpuidle driver on a SMP is:
>>>>
>>>> cpuidle_register_driver(drv);
>>>> for_each_possible_cpu(cpu) {
>>>> device = &per_cpu(cpuidle_dev, cpu);
>>>> cpuidle_register_device(device);
>>>> }
>>>>
>>> Not exactly related to $subject patch but the driver should
>>> be registered after all devices has been registered to avoid
>>> devices start using the idle state data as soon as it is
>>> registered. In multi CPU system, this race can easily happen.
>>
>> Could you elaborate what problems the system will be facing if a cpu
>> starts using the idle state data as soon as it is registered ?
>>
>> Is there a bug related to this ?
>>
> Ofcouse. In multi-CPU scenario, where CPU C-states needs co-ordination
> can just lead into unknown issues if all the CPUs are not already part
> registered.
Hmm, ok. I don't see a scenario, with the current code, where that could
occurs. The coupled idle state will wait for the other cpus to enter
idle before initiating a shutdown sequence and, so far, the other sync
algorithm (last man standing) are doing the same.
There are some systems with 1024 cpus, and I did not heard problems like
this.
Do you know a system where this problem occurred ? Or is it something
you suspect that can happen ?
That would be interesting to have a system where this race occurs in
order to check the modifications will solve the issue.
>>> Current CPUIDLE core layer is also written with the assumption
>>> that driver will be registered first and then the devices which
>>> is not mandatory as per typical drive/device model.
>>
>> Yes, that's true. The framework assumes cpuidle_register_driver is
>> called before cpuidle_register_device.
>>
>>> May be you can fix that part while you are creating this common
>>> wrapper.
>>
>> Personally, as that will modify the cpuidle core layer and the changes
>> are not obvious (because of the design of the code) I prefer to do that
>> in a separate patchset if it is worth to do it - if there is a bug
>> related to it, then there is no discussion, we have to do it :)
>>
> Sure. It would have been nice if you would have clarified that before
> posting the next version.
>
> You still need to fix the kernel doc in your v4 though.
Which one ? "s/accross/across" ?
Thanks
-- 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: [V3 patch 06/19] cpuidle: make a single register function for all
Date: Tue, 23 Apr 2013 16:22:07 +0200 [thread overview]
Message-ID: <5176990F.5070605@linaro.org> (raw)
In-Reply-To: <51769316.9090309@ti.com>
On 04/23/2013 03:56 PM, Santosh Shilimkar wrote:
> On Tuesday 23 April 2013 07:13 PM, Daniel Lezcano wrote:
>> On 04/18/2013 10:48 AM, Santosh Shilimkar wrote:
>>> On Friday 12 April 2013 06:05 PM, Daniel Lezcano wrote:
>>>> The usual scheme to initialize a cpuidle driver on a SMP is:
>>>>
>>>> cpuidle_register_driver(drv);
>>>> for_each_possible_cpu(cpu) {
>>>> device = &per_cpu(cpuidle_dev, cpu);
>>>> cpuidle_register_device(device);
>>>> }
>>>>
>>> Not exactly related to $subject patch but the driver should
>>> be registered after all devices has been registered to avoid
>>> devices start using the idle state data as soon as it is
>>> registered. In multi CPU system, this race can easily happen.
>>
>> Could you elaborate what problems the system will be facing if a cpu
>> starts using the idle state data as soon as it is registered ?
>>
>> Is there a bug related to this ?
>>
> Ofcouse. In multi-CPU scenario, where CPU C-states needs co-ordination
> can just lead into unknown issues if all the CPUs are not already part
> registered.
Hmm, ok. I don't see a scenario, with the current code, where that could
occurs. The coupled idle state will wait for the other cpus to enter
idle before initiating a shutdown sequence and, so far, the other sync
algorithm (last man standing) are doing the same.
There are some systems with 1024 cpus, and I did not heard problems like
this.
Do you know a system where this problem occurred ? Or is it something
you suspect that can happen ?
That would be interesting to have a system where this race occurs in
order to check the modifications will solve the issue.
>>> Current CPUIDLE core layer is also written with the assumption
>>> that driver will be registered first and then the devices which
>>> is not mandatory as per typical drive/device model.
>>
>> Yes, that's true. The framework assumes cpuidle_register_driver is
>> called before cpuidle_register_device.
>>
>>> May be you can fix that part while you are creating this common
>>> wrapper.
>>
>> Personally, as that will modify the cpuidle core layer and the changes
>> are not obvious (because of the design of the code) I prefer to do that
>> in a separate patchset if it is worth to do it - if there is a bug
>> related to it, then there is no discussion, we have to do it :)
>>
> Sure. It would have been nice if you would have clarified that before
> posting the next version.
>
> You still need to fix the kernel doc in your v4 though.
Which one ? "s/accross/across" ?
Thanks
-- 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
next prev parent reply other threads:[~2013-04-23 14:22 UTC|newest]
Thread overview: 114+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-12 12:35 [V3 patch 00/19] cpuidle: code consolidation Daniel Lezcano
2013-04-12 12:35 ` 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 [this message]
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=5176990F.5070605@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.