linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>,
	linaro-dev@lists.linaro.org, patches@linaro.org,
	pdeschrijver@nvidia.com, linux-pm@vger.kernel.org,
	linux-acpi@vger.kernel.org, lenb@kernel.org
Subject: Re: [PATCH 4/4] cpuidle - support multiple drivers
Date: Thu, 11 Oct 2012 19:39:12 +0200	[thread overview]
Message-ID: <50770440.2010905@linaro.org> (raw)
In-Reply-To: <9187353.riJYJYPsk3@vostro.rjw.lan>

On 10/11/2012 07:21 PM, Rafael J. Wysocki wrote:
> On Thursday 11 of October 2012 12:04:37 Daniel Lezcano wrote:
>> On 10/07/2012 11:26 PM, Rafael J. Wysocki wrote:
>>> On Tuesday 25 of September 2012 00:43:54 Daniel Lezcano wrote:
>>>> With the tegra3 and the big.LITTLE [1] new architectures, several cpus
>>>> with different characteristics (latencies and states) can co-exists on the
>>>> system.
>>>>
>>>> The cpuidle framework has the limitation of handling only identical cpus.
>>>>
>>>> This patch removes this limitation by introducing the multiple driver support
>>>> for cpuidle.
>>>>
>>>> This option is configurable at compile time and should be enabled for the
>>>> architectures mentioned above. So there is no impact for the other platforms
>>>> if the option is disabled. The option defaults to 'n'. Note the multiple drivers
>>>> support is also compatible with the existing drivers, even if just one driver is
>>>> needed, all the cpu will be tied to this driver using an extra small chunk of
>>>> processor memory.
>>>>
>>>> The multiple driver support use a per-cpu driver pointer instead of a global
>>>> variable and the accessor to this variable are done from a cpu context.
>> Thanks Rafael for the review.
>>
>> I took into account all your remarks for the V2.
>>
>> [ cut ]
>>
>>>> +static int __cpuidle_register_all_cpu_driver(struct cpuidle_driver *drv)
>>>> +{
>>>> +	int ret = 0;
>>>> +	int i, cpu;
>>>> +
>>>> +	for_each_present_cpu(cpu) {
>>>> +		ret = __cpuidle_register_driver(drv, cpu);
>>>> +		if (!ret)
>>>> +			continue;
>>>> +		for (i = cpu - 1; i >= 0; i--)
>>> I wonder if this is going to work in all cases.  For example, is there any
>>> guarantee that the CPU numbers start from 0 and that there are no gaps?
>> AFAICS, the cpumask.h is not assuming the cpu numbers start from zero
>> and they are contiguous.
>>
>> I will fix this reverse loop, thanks for spotting this.
>>
>> [ cut ]
>>
>>>>  void cpuidle_unregister_driver(struct cpuidle_driver *drv)
>>>>  {
>>>>  	spin_lock(&cpuidle_driver_lock);
>>>> -	__cpuidle_unregister_driver(drv);
>>>> +#ifdef CONFIG_CPU_IDLE_MULTIPLE_DRIVERS
>>>> +	__cpuidle_unregister_all_cpu_driver(drv);
>>>> +#else
>>>> +	__cpuidle_unregister_driver(drv, smp_processor_id());
>>>> +#endif
>>> I'm slightly cautious about using smp_processor_id() above.
>>> get_cpu()/put_cpu() is the preferred way of doing this nowadays (although
>>> this particular code is under the spinlock, so it should be OK).
>> yes, get_cpu does preempt_disable() and smp_processor_id()
>> As spin_lock does also preempt_disable() that should be ok.
>> But I changed the code to use the preferred way.
> Cool, thanks!
>
> I've seen your new version 

Actually, the patchset is just sysfs cleanup for the multiple drivers
support.
The patches are trivial IMO. If you think they are ok and they are
merged, I will send the multiple drivers patchset V2 on top of them.

> and I'm going to look deeper into it in the next
> few days, but I will be travelling from tomorrow through the end of the next
> week, so I may be even slower to respond than usually. Sorry about that.

No problem, I understand.

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


--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2012-10-11 17:39 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-24 22:43 [PATCH 0/4] cpuidle - support multiple drivers at a time Daniel Lezcano
2012-09-24 22:43 ` [PATCH 1/4] cpuidle : move driver's refcount to cpuidle Daniel Lezcano
2012-09-24 22:43 ` [PATCH 2/4] cpuidle : move driver checking within the lock section Daniel Lezcano
     [not found]   ` <1348526634-19029-3-git-send-email-daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2012-10-07 20:17     ` Rafael J. Wysocki
2012-09-24 22:43 ` [PATCH 3/4] cpuidle - prepare the driver core to be multi drivers aware Daniel Lezcano
2012-09-24 22:43 ` [PATCH 4/4] cpuidle - support multiple drivers Daniel Lezcano
     [not found]   ` <1348526634-19029-5-git-send-email-daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2012-09-29  9:41     ` Francesco Lavra
2012-09-29 17:44       ` Daniel Lezcano
2012-09-29 22:07         ` Rafael J. Wysocki
2012-09-30 16:34           ` Daniel Lezcano
2012-10-02  2:08             ` Rafael J. Wysocki
     [not found]               ` <3723306.GAm1cPlZaP-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org>
2012-10-02 12:27                 ` Daniel Lezcano
2012-10-02 14:02                   ` Rafael J. Wysocki
2012-10-04 14:14   ` Peter De Schrijver
2012-10-04 14:26     ` Daniel Lezcano
2012-10-04 14:34       ` Peter De Schrijver
2012-10-07 21:09         ` Rafael J. Wysocki
2012-10-07 21:26   ` Rafael J. Wysocki
2012-10-11 10:04     ` Daniel Lezcano
2012-10-11 17:21       ` Rafael J. Wysocki
2012-10-11 17:39         ` Daniel Lezcano [this message]
2012-10-04 14:16 ` [PATCH 0/4] cpuidle - support multiple drivers at a time Peter De Schrijver
2012-10-04 14:27   ` 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=50770440.2010905@linaro.org \
    --to=daniel.lezcano@linaro.org \
    --cc=lenb@kernel.org \
    --cc=linaro-dev@lists.linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=patches@linaro.org \
    --cc=pdeschrijver@nvidia.com \
    --cc=rjw@sisk.pl \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).