From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
linux-pm@vger.kernel.org
Subject: Re: [PATCH 09/10] cpuidle: declare cpuidle_dev in cpuidle.h
Date: Tue, 25 Feb 2014 15:39:30 +0100 [thread overview]
Message-ID: <530CAB22.5030506@linaro.org> (raw)
In-Reply-To: <20140220140033.GU25765@pburton-linux.le.imgtec.org>
On 02/20/2014 03:00 PM, Paul Burton wrote:
> On Thu, Feb 20, 2014 at 02:53:06PM +0100, Daniel Lezcano wrote:
>> On 02/20/2014 02:41 PM, Paul Burton wrote:
>>> On Thu, Feb 20, 2014 at 02:35:18PM +0100, Daniel Lezcano wrote:
>>>> On 01/15/2014 02:55 PM, Paul Burton wrote:
>>>>> Declaring this allows drivers which need to initialise each struct
>>>>> cpuidle_device at initialisation time to make use of the structures
>>>>> already defined in cpuidle.c, rather than having to wastefully define
>>>>> their own.
>>>>>
>>>>> Signed-off-by: Paul Burton <paul.burton@imgtec.com>
>>>>> Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
>>>>> Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
>>>>> Cc: linux-pm@vger.kernel.org
>>>>> ---
>>>>> include/linux/cpuidle.h | 1 +
>>>>> 1 file changed, 1 insertion(+)
>>>>>
>>>>> diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h
>>>>> index 50fcbb0..bab4f33 100644
>>>>> --- a/include/linux/cpuidle.h
>>>>> +++ b/include/linux/cpuidle.h
>>>>> @@ -84,6 +84,7 @@ struct cpuidle_device {
>>>>> };
>>>>>
>>>>> DECLARE_PER_CPU(struct cpuidle_device *, cpuidle_devices);
>>>>> +DECLARE_PER_CPU(struct cpuidle_device, cpuidle_dev);
>>>>
>>>>
>>>> Nak. When a device is registered, it is assigned to the cpuidle_devices
>>>> pointer and the backend driver should use it.
>>>>
>>>
>>> Yes, but then if the driver needs to initialise the coupled_cpus mask
>>> then it cannot do so until after the device has been registered. During
>>> registration the cpuidle_coupled_register_device will then see the empty
>>> coupled_cpus mask & do nothing. The only other ways around this would be
>>> for the driver to define its own per-cpu struct cpuidle_device (which as
>>> I state in the commit message seems wasteful when cpuidle already
>>> defined them), or for cpuidle_coupled_register_device to be called later
>>> after the driver had a chance to modify devices via the cpuidle_devices
>>> pointers.
>>
>> Yeah. I understand why you wanted to declare these cpu variables.
>>
>> The mips cpuidle driver sounds like a bit particular. I believe I need some
>> clarification on the behavior of the hardware to understand correctly the
>> driver. Could you explain how the couples act vs the cpu ? And why
>> cpu_sibling is used instead of cpu_possible_mask ?
>>
>>
>
> Sure. The CPUs that are coupled are actually VPEs (Virtual Processor
> Elements) within a single core. They share the compute resource (ALUs
> etc) of the core but have their own register state, ie. they're a form
> of simultaneous multithreading.
>
> Coherence within a MIPS Coherent Processing System is a property of the
> core rather than of an individual VPE (since the VPEs within a core
> share the same L1 caches). So for idle states which are non-coherent the
> VPEs within the core are coupled. That covers all idle states beyond a
> simple "wait" instruction - clock gating or powering down a core
> requires it to become non-coherent first.
>
> cpu_sibling_mask is already setup to indicate which CPUs (VPEs) are
> within the same core as each other, which is why it is simply copied for
> coupled_cpus.
Hi Paul,
thanks for the explanation.
-- 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:[~2014-02-25 14:39 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-15 13:55 [PATCH 00/10] MIPS CPS cpuidle Paul Burton
2014-01-15 13:55 ` Paul Burton
2014-01-15 13:55 ` [PATCH 01/10] MIPS: inst.h: define COP0 wait op Paul Burton
2014-01-15 13:55 ` Paul Burton
2014-01-15 13:55 ` [PATCH 02/10] MIPS: inst.h: define missing microMIPS POOL32AXf ops Paul Burton
2014-01-15 13:55 ` Paul Burton
2014-01-15 13:55 ` [PATCH 03/10] MIPS: uasm: add sync instruction Paul Burton
2014-01-15 13:55 ` Paul Burton
2014-01-15 13:55 ` [PATCH 04/10] MIPS: uasm: add wait instruction Paul Burton
2014-01-15 13:55 ` Paul Burton
2014-01-15 13:55 ` [PATCH 05/10] MIPS: uasm: add jr.hb instruction Paul Burton
2014-01-15 13:55 ` Paul Burton
2014-01-15 13:55 ` [PATCH 06/10] MIPS: uasm: add mftc0 & mttc0 instructions Paul Burton
2014-01-15 13:55 ` Paul Burton
2014-01-15 13:55 ` [PATCH 07/10] MIPS: uasm: add a label variant of beq Paul Burton
2014-01-15 13:55 ` Paul Burton
2014-01-15 13:55 ` [PATCH 08/10] MIPS: support use of cpuidle Paul Burton
2014-01-15 13:55 ` Paul Burton
2014-02-20 8:52 ` Daniel Lezcano
2014-02-20 9:57 ` Paul Burton
2014-02-20 9:57 ` Paul Burton
2014-01-15 13:55 ` [PATCH 09/10] cpuidle: declare cpuidle_dev in cpuidle.h Paul Burton
2014-01-15 13:55 ` Paul Burton
2014-02-20 13:35 ` Daniel Lezcano
2014-02-20 13:41 ` Paul Burton
2014-02-20 13:41 ` Paul Burton
2014-02-20 13:53 ` Daniel Lezcano
2014-02-20 14:00 ` Paul Burton
2014-02-20 14:00 ` Paul Burton
2014-02-25 14:39 ` Daniel Lezcano [this message]
2014-01-15 13:55 ` [PATCH 10/10] cpuidle: cpuidle driver for MIPS CPS Paul Burton
2014-01-15 13:55 ` Paul Burton
2014-02-25 15:33 ` Daniel Lezcano
2014-02-25 22:12 ` Paul Burton
2014-02-25 22:12 ` Paul Burton
2014-02-26 14:37 ` Daniel Lezcano
2014-02-27 9:50 ` Paul Burton
2014-02-27 9:50 ` Paul Burton
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=530CAB22.5030506@linaro.org \
--to=daniel.lezcano@linaro.org \
--cc=linux-mips@linux-mips.org \
--cc=linux-pm@vger.kernel.org \
--cc=paul.burton@imgtec.com \
--cc=rjw@rjwysocki.net \
/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.