From: Kevin Hilman <khilman@kernel.org>
To: Lina Iyer <lina.iyer@linaro.org>
Cc: rjw@rjwysocki.net, ulf.hansson@linaro.org,
mathieu.poirier@linaro.org, galak@codeaurora.org,
linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
msivasub@codeaurora.org, agross@codeaurora.org
Subject: Re: [PATCH RFC 0/3] PM / Domains: Generic PM domains for cpus
Date: Wed, 10 Jun 2015 10:24:51 -0700 [thread overview]
Message-ID: <7hwpzbo4rg.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1433456946-53296-1-git-send-email-lina.iyer@linaro.org> (Lina Iyer's message of "Thu, 4 Jun 2015 16:29:03 -0600")
Lina Iyer <lina.iyer@linaro.org> writes:
> This is an attempt to provide a generic PM domain for cpus, so as to allow the
> cpu domain to be powered off, when all the cpus are in power down state during
> cpuidle.
You don't use the word "cluster" here, but it might be helpful to
summarize this as using a genpd to model a cluster. A cluster contains
CPUs, but also additional devices/logic like L2$, GIC, PMUs, floating
point units, CoreSight, etc. etc.
> The rationale behind the change is that newer SoCs can power down the
> cpus for very short sleep times to save on leakage power. The domain which
> usually has the cpus, a second level cache and some peripheral hardware is
> powered by a rail that can also be turned off when the cpus are not in
> use.
This last sentence doesn't read well. I think you meant something like:
In the domain which has the CPUs, a second level cache and some
peripheral hardware might share the power rail with the CPUs so could
also be turned off when the cpus are not in use.
> Devices for each cpu, L2 and other related blocks could be attached to the
> domain and when there are no uses of these devices (device idle) the domain
> could also be powered off. Generic PM domains provides all the backend needed
> for such an organization.
>
> In the first 2 patches, I make genpd usable in atomic context as well. CPUIdle
s/as well//
> runs with irqs disabled and therefore use of mutexes in the current genpd
> implementation is a limitation. But, not all PM domains need to operate in irq
> safe context, those that need to can specify explicitly the irq safe
> requirement of the genpd at init. Devices and sub-domains that attach to an irq
> safe genpd also have to be irq safe.
>
> The third patch, adds a generic PM domain for the cpus. GenPD provider can be
drop the ','
A GenPD provider...
> specified in the DT and individual cpus that are part of the domain would be
> the domain consumers. A new API pm_cpu_domain_init() has been introduced that
> would initialize the genpd and attach cpus specified as consumers in the DT to
> the domain.
Hmm, doesn't the of_genpd_* stuff already handle this?
What about non-CPU consumers in the same domain?
> When the cpus enter their idle state cpu_pm notifications are sent
> out for that cpu. The last cpu to send cpu_pm notification would trigger the
> domain power_off callback and the first cpu to come up would trigger the genpd
> power_on callback. Generally, the power_off callback is where the caches are
> flushed in preparation for a power down and the domain hardware configured to
> power down when the cpu finishes execution. In the power_on callback, the
> domain hardware is reset to a state to allow cpus to be active or entire idle
> states individually.
>
> A future addition to this feature, could be a new genpd governor for the
> specific case of the cpu domain. The governor may look up the time available
> to sleep between the last cpu down and the first cpu up, in determining if it
> would be more efficient to just keep the domain powered on.
>
> This patch is based on Ulf's patch for simplifying domain power down states
> [1], which removes a bunch of complexity in genpd, simplifying atomic genpd.
Kevin
WARNING: multiple messages have this Message-ID (diff)
From: khilman@kernel.org (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RFC 0/3] PM / Domains: Generic PM domains for cpus
Date: Wed, 10 Jun 2015 10:24:51 -0700 [thread overview]
Message-ID: <7hwpzbo4rg.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1433456946-53296-1-git-send-email-lina.iyer@linaro.org> (Lina Iyer's message of "Thu, 4 Jun 2015 16:29:03 -0600")
Lina Iyer <lina.iyer@linaro.org> writes:
> This is an attempt to provide a generic PM domain for cpus, so as to allow the
> cpu domain to be powered off, when all the cpus are in power down state during
> cpuidle.
You don't use the word "cluster" here, but it might be helpful to
summarize this as using a genpd to model a cluster. A cluster contains
CPUs, but also additional devices/logic like L2$, GIC, PMUs, floating
point units, CoreSight, etc. etc.
> The rationale behind the change is that newer SoCs can power down the
> cpus for very short sleep times to save on leakage power. The domain which
> usually has the cpus, a second level cache and some peripheral hardware is
> powered by a rail that can also be turned off when the cpus are not in
> use.
This last sentence doesn't read well. I think you meant something like:
In the domain which has the CPUs, a second level cache and some
peripheral hardware might share the power rail with the CPUs so could
also be turned off when the cpus are not in use.
> Devices for each cpu, L2 and other related blocks could be attached to the
> domain and when there are no uses of these devices (device idle) the domain
> could also be powered off. Generic PM domains provides all the backend needed
> for such an organization.
>
> In the first 2 patches, I make genpd usable in atomic context as well. CPUIdle
s/as well//
> runs with irqs disabled and therefore use of mutexes in the current genpd
> implementation is a limitation. But, not all PM domains need to operate in irq
> safe context, those that need to can specify explicitly the irq safe
> requirement of the genpd at init. Devices and sub-domains that attach to an irq
> safe genpd also have to be irq safe.
>
> The third patch, adds a generic PM domain for the cpus. GenPD provider can be
drop the ','
A GenPD provider...
> specified in the DT and individual cpus that are part of the domain would be
> the domain consumers. A new API pm_cpu_domain_init() has been introduced that
> would initialize the genpd and attach cpus specified as consumers in the DT to
> the domain.
Hmm, doesn't the of_genpd_* stuff already handle this?
What about non-CPU consumers in the same domain?
> When the cpus enter their idle state cpu_pm notifications are sent
> out for that cpu. The last cpu to send cpu_pm notification would trigger the
> domain power_off callback and the first cpu to come up would trigger the genpd
> power_on callback. Generally, the power_off callback is where the caches are
> flushed in preparation for a power down and the domain hardware configured to
> power down when the cpu finishes execution. In the power_on callback, the
> domain hardware is reset to a state to allow cpus to be active or entire idle
> states individually.
>
> A future addition to this feature, could be a new genpd governor for the
> specific case of the cpu domain. The governor may look up the time available
> to sleep between the last cpu down and the first cpu up, in determining if it
> would be more efficient to just keep the domain powered on.
>
> This patch is based on Ulf's patch for simplifying domain power down states
> [1], which removes a bunch of complexity in genpd, simplifying atomic genpd.
Kevin
next prev parent reply other threads:[~2015-06-10 17:24 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-03 15:53 [PATCH RFC 0/3] PM / Domains: Generic PM domains for cpus Lina Iyer
2015-06-04 22:29 ` Lina Iyer
2015-06-03 15:53 ` [PATCH RFC 2/3] PM / Domains: Support atomic PM domains Lina Iyer
2015-06-04 22:29 ` Lina Iyer
2015-06-07 9:21 ` Krzysztof Kozlowski
2015-06-07 9:21 ` Krzysztof Kozlowski
2015-06-10 16:13 ` Lina Iyer
2015-06-10 16:13 ` Lina Iyer
2015-06-11 0:13 ` Krzysztof Kozlowski
2015-06-11 0:13 ` Krzysztof Kozlowski
2015-06-11 14:33 ` Lina Iyer
2015-06-11 14:33 ` Lina Iyer
2015-06-10 18:04 ` Kevin Hilman
2015-06-10 18:04 ` Kevin Hilman
2015-06-10 20:35 ` Lina Iyer
2015-06-10 20:35 ` Lina Iyer
2015-06-11 9:41 ` Ulf Hansson
2015-06-11 9:41 ` Ulf Hansson
2015-06-11 19:47 ` Lina Iyer
2015-06-11 19:47 ` Lina Iyer
2015-06-11 21:13 ` Ulf Hansson
2015-06-11 21:13 ` Ulf Hansson
2015-06-03 15:53 ` [PATCH RFC 3/3] PM / Domains: Introduce generic PM domain for cpu domain Lina Iyer
2015-06-04 22:29 ` Lina Iyer
2015-06-07 9:42 ` Krzysztof Kozlowski
2015-06-07 9:42 ` Krzysztof Kozlowski
2015-06-10 16:57 ` Lina Iyer
2015-06-10 16:57 ` Lina Iyer
2015-06-11 0:27 ` Krzysztof Kozlowski
2015-06-11 0:27 ` Krzysztof Kozlowski
2015-06-11 14:42 ` Lina Iyer
2015-06-11 14:42 ` Lina Iyer
2015-06-10 17:01 ` Kevin Hilman
2015-06-10 17:01 ` Kevin Hilman
2015-06-11 0:35 ` Krzysztof Kozlowski
2015-06-11 0:35 ` Krzysztof Kozlowski
2015-06-10 21:37 ` Kevin Hilman
2015-06-10 21:37 ` Kevin Hilman
2015-06-11 14:56 ` Lina Iyer
2015-06-11 14:56 ` Lina Iyer
2015-06-15 18:43 ` Kevin Hilman
2015-06-15 18:43 ` Kevin Hilman
2015-06-15 19:14 ` Lina Iyer
2015-06-15 19:14 ` Lina Iyer
2015-06-16 15:50 ` Kevin Hilman
2015-06-16 15:50 ` Kevin Hilman
2015-06-03 15:54 ` [PATCH RFC 1/3] PM / Domains: Allocate memory outside domain locks Lina Iyer
2015-06-04 22:29 ` Lina Iyer
2015-06-07 8:35 ` Krzysztof Kozlowski
2015-06-07 8:35 ` Krzysztof Kozlowski
2015-06-09 22:45 ` Lina Iyer
2015-06-09 22:45 ` Lina Iyer
2015-06-10 17:33 ` Kevin Hilman
2015-06-10 17:33 ` Kevin Hilman
2015-06-03 15:55 ` [PATCH RFC 2/3] PM / Domains: Support atomic PM domains Lina Iyer
2015-06-03 15:55 ` [PATCH RFC 1/3] PM / Domains: Allocate memory outside domain locks Lina Iyer
2015-06-03 15:55 ` [PATCH RFC 3/3] PM / Domains: Introduce generic PM domain for cpu domain Lina Iyer
2015-06-10 17:24 ` Kevin Hilman [this message]
2015-06-10 17:24 ` [PATCH RFC 0/3] PM / Domains: Generic PM domains for cpus Kevin Hilman
-- strict thread matches above, loose matches on Subject: below --
2015-06-03 15:55 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=7hwpzbo4rg.fsf@deeprootsystems.com \
--to=khilman@kernel.org \
--cc=agross@codeaurora.org \
--cc=galak@codeaurora.org \
--cc=lina.iyer@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-pm@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=msivasub@codeaurora.org \
--cc=rjw@rjwysocki.net \
--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 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.