From: Lina Iyer <lina.iyer@linaro.org>
To: Stephen Boyd <sboyd@codeaurora.org>
Cc: ulf.hansson@linaro.org, khilman@kernel.org, rjw@rjwysocki.net,
linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
geert@linux-m68k.org, k.kozlowski@samsung.com,
msivasub@codeaurora.org, agross@codeaurora.org,
linux-arm-msm@vger.kernel.org, lorenzo.pieralisi@arm.com,
ahaslam@baylibre.com, mtitinger@baylibre.com
Subject: Re: [RFC v2 08/12] Documentation / cpu_domains: Describe CPU PM domains setup and governor
Date: Tue, 1 Mar 2016 12:36:42 -0700 [thread overview]
Message-ID: <20160301193642.GO1440@linaro.org> (raw)
In-Reply-To: <20160226194329.GZ28849@codeaurora.org>
On Fri, Feb 26 2016 at 12:43 -0700, Stephen Boyd wrote:
>On 02/12, Lina Iyer wrote:
>> diff --git a/Documentation/power/cpu_domains.txt b/Documentation/power/cpu_domains.txt
>> new file mode 100644
>> index 0000000..5fdc66d
>> --- /dev/null
>> +++ b/Documentation/power/cpu_domains.txt
>> @@ -0,0 +1,79 @@
>> +CPU PM domains
>> +==============
>> +
>> +Newer CPUs are grouped in SoCs as clusters. A cluster in addition to the CPUs
>> +may have caches, VFP and architecture specific power controller that share the
>
>caches, floating point units, and other architecture specific
>hardware that share resources when any of the CPUs are active.
>
All comments addressed.
Thanks,
Lina
>> +resources when any of the CPUs are active. When the CPUs are in idle, some of
>> +these cluster components may also idle. A cluster may also be nested inside
>> +another cluster that provides common coherency interfaces to share data
>> +between the clusters. The organization of such clusters and CPU may be
>> +descibed in DT, since they are SoC specific.
>> +
>> +CPUIdle framework enables the CPUs to determine the sleep time and enter low
>> +power state to save power during periods of idle. CPUs in a cluster may enter
>> +and exit idle state independently of each other. During the time when all the
>> +CPUs are in idle state, the cluster may safely put some of the shared
>> +resources in their idle state. The time between the last CPU to enter idle and
>> +the first CPU to wake up is the time available for the cluster to enter its
>> +idle state.
>> +
>> +When SoCs power down the CPU during cpuidle, they generally have supplemental
>> +hardware that can handshake with the CPU with a signal that indicates that the
>> +CPU has stopped execution. The hardware is also responsible for warm booting
>> +the CPU on receiving an interrupt. With cluster architecture, common resources
>
>In a cluster architecture,
>
>> +that are shared by the cluster may also be powered down by an external
>
>shared by a cluster
>
>> +microcontroller or a processor. The microcontroller may be programmed in
>> +advance to put the hardware blocks in a low power state, when the last active
>> +CPU sends the idle signal. When the signal is received, the microcontroller
>> +may trigger the hardware blocks to enter their low power state. When an
>> +interrupt to wakeup the processor is received, the microcontroller is
>> +responsible for bringing up the hardware blocks to its active state, before
>> +waking up the CPU. The timelines for such operations should be in the
>> +acceptable range for the for CPU idle to get power benefits.
>
>acceptable range for CPU idle to get power benefits.
>
>> +
>> +CPU PM Domain Setup
>> +-------------------
>> +
>> +PM domains are represented in the DT as domain consumers and providers. A
>
> ^ extra space here
>
>> +device may have a domain provider and a domain provider may support multiple
>> +domain consumers. Domains like clusters, may also be nested inside one
>> +another. A domain that has no active consumer, may be powered off and any
>> +resuming consumer would trigger the domain back to active. Parent domains may
>> +be powered off when the child domains are powered off. The CPU cluster can be
>> +fashioned as a PM domain. When the CPU devices are powered off, the PM domain
>> +may be powered off.
>> +
>> +Device idle is reference counted by runtime PM. When there is no active need
>> +for the device, runtime PM invokes callbacks to suspend the parent domain.
>> +Generic PM domain (genpd) handles the hierarchy of devices, domains and the
>> +reference counting of objects leading to last man down and first man up in the
>> +domain. The CPU domains helper functions defines PM domains for each CPU
>> +cluster and attaches the CPU devices to the respective PM domains.
>> +
>> +Platform drivers may use the following API to register their CPU PM domains.
>> +
>> +of_setup_cpu_pd() -
>> +Provides a single step registration of the CPU PM domain and attach CPUs to
>> +the genpd. Platform drivers may additionally register callbacks for power_on
>> +and power_off operations for the PM domain.
>> +
>> +of_setup_cpu_pd_single() -
>> +Define PM domain for a single CPU and attach the CPU to its domain.
>> +
>> +
>> +CPU PM Domain governor
>> +----------------------
>> +
>> +CPUs have an unique ability to determine their next wakeup. CPUs may wake up
>
>a unique
>
>> +for known timer interrupts and unknown interrupts from idle. Prediction
>> +algorithms and heuristic based algorithms like the Menu governor for cpuidle
>> +can determine the next wakeup of the CPU. However, determining the wakeup
>> +across a group of CPUs is a tough problem to solve.
>> +
>
>--
>Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
>a Linux Foundation Collaborative Project
next prev parent reply other threads:[~2016-03-01 19:36 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-12 20:50 [RFC v2 00/12] PM: SoC idle support using PM domains Lina Iyer
2016-02-12 20:50 ` [RFC v2 01/12] PM / Domains: Abstract genpd locking Lina Iyer
2016-02-26 18:08 ` Stephen Boyd
2016-03-01 16:55 ` Lina Iyer
2016-02-12 20:50 ` [RFC v2 02/12] PM / Domains: Support IRQ safe PM domains Lina Iyer
2016-02-26 18:17 ` Stephen Boyd
2016-03-01 17:44 ` Lina Iyer
2016-02-12 20:50 ` [RFC v2 03/12] PM / cpu_domains: Setup PM domains for CPUs/clusters Lina Iyer
2016-02-17 23:38 ` Lina Iyer
2016-02-18 17:29 ` [BUG FIX] PM / cpu_domains: Check for NULL callbacks Lina Iyer
2016-02-18 17:46 ` Rafael J. Wysocki
2016-02-18 22:51 ` Lina Iyer
2016-02-26 19:10 ` [RFC v2 03/12] PM / cpu_domains: Setup PM domains for CPUs/clusters Stephen Boyd
2016-03-01 18:00 ` Lina Iyer
2016-02-12 20:50 ` [RFC v2 04/12] ARM: cpuidle: Add runtime PM support for CPUs Lina Iyer
2016-02-26 18:24 ` Stephen Boyd
2016-03-01 18:36 ` Lina Iyer
2016-02-12 20:50 ` [RFC v2 05/12] timer: Export next wake up of a CPU Lina Iyer
2016-02-12 20:50 ` [RFC v2 06/12] PM / cpu_domains: Record CPUs that are part of the domain Lina Iyer
2016-02-26 19:20 ` Stephen Boyd
2016-03-01 19:24 ` Lina Iyer
2016-02-12 20:50 ` [RFC v2 07/12] PM / cpu_domains: Add PM Domain governor for CPUs Lina Iyer
2016-02-26 19:33 ` Stephen Boyd
2016-03-01 19:32 ` Lina Iyer
2016-03-01 19:35 ` Stephen Boyd
2016-02-12 20:50 ` [RFC v2 08/12] Documentation / cpu_domains: Describe CPU PM domains setup and governor Lina Iyer
2016-02-26 19:43 ` Stephen Boyd
2016-03-01 19:36 ` Lina Iyer [this message]
2016-02-12 20:50 ` [RFC v2 09/12] drivers: firmware: psci: Allow OS Initiated suspend mode Lina Iyer
2016-02-12 20:50 ` [RFC v2 10/12] ARM64: psci: Support cluster idle states for OS-Initiated Lina Iyer
2016-02-12 20:50 ` [RFC v2 11/12] ARM64: dts: Add PSCI cpuidle support for MSM8916 Lina Iyer
2016-02-12 20:50 ` [RFC v2 12/12] ARM64: dts: Define CPU power domain " Lina Iyer
2016-02-26 19:50 ` Stephen Boyd
2016-03-01 19:41 ` Lina Iyer
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=20160301193642.GO1440@linaro.org \
--to=lina.iyer@linaro.org \
--cc=agross@codeaurora.org \
--cc=ahaslam@baylibre.com \
--cc=geert@linux-m68k.org \
--cc=k.kozlowski@samsung.com \
--cc=khilman@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=msivasub@codeaurora.org \
--cc=mtitinger@baylibre.com \
--cc=rjw@rjwysocki.net \
--cc=sboyd@codeaurora.org \
--cc=ulf.hansson@linaro.org \
/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).