All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@kernel.org>
To: Rob Herring <robherring2@gmail.com>, Lina Iyer <lina.iyer@linaro.org>
Cc: "Mark Rutland" <mark.rutland@arm.com>,
	"Ulf Hansson" <ulf.hansson@linaro.org>,
	"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"Catalin Marinas" <catalin.marinas@arm.com>,
	"Daniel Lezcano" <daniel.lezcano@linaro.org>,
	"Rafael Wysocki" <rjw@rjwysocki.net>,
	"Krzysztof Kozłowski" <k.kozlowski@samsung.com>,
	msivasub@codeaurora.org,
	"Geert Uytterhoeven" <geert@linux-m68k.org>,
	"Andy Gross" <agross@codeaurora.org>,
	"Stephen Boyd" <sboyd@codeaurora.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 5/9] ARM: common: Introduce PM domains for CPUs/clusters
Date: Fri, 07 Aug 2015 16:45:36 -0700	[thread overview]
Message-ID: <7hd1yyvf1b.fsf@deeprootsystems.com> (raw)
In-Reply-To: <CAL_JsqK67=DTtjZwwnonObLDjLbahkREfm0RvyXVV95bhR-d4Q@mail.gmail.com> (Rob Herring's message of "Wed, 5 Aug 2015 22:14:51 -0500")

Rob Herring <robherring2@gmail.com> writes:

> On Tue, Aug 4, 2015 at 6:35 PM, Lina Iyer <lina.iyer@linaro.org> wrote:
>> Define and add Generic PM domains (genpd) for ARM CPU clusters. Many
>> new

@Lina: I know you inherited this from some proof-of-concept code frome me, so
I'm partially to blame, but...

There's really nothing ARM specific about this driver.  

>> SoCs group CPUs as clusters. Clusters share common resources like GIC,
>> power rail, caches, VFP, Coresight etc. When all CPUs in the cluster are
>> idle, these shared resources may also be put in their idle state.
>>
>> The idle time between the last CPU entering idle and a CPU resuming
>> execution is an opportunity for these shared resources to be powered
>> down. Generic PM domain provides a framework for defining such power
>> domains and attach devices to the domain. When the devices in the domain
>> are idle at runtime, the domain would also be suspended and resumed
>> before the first of the devices resume execution.
>>
>> We define a generic PM domain for each cluster and attach CPU devices in
>> the cluster to that PM domain. The DT definitions for the SoC describe
>> this relationship. Genpd callbacks for power_on and power_off can then
>> be used to power up/down the shared resources for the domain.
>
> [...]
>
>> +ARM CPU Power domains
>> +
>> +The device tree allows describing of CPU power domains in a SoC. In ARM SoC,
>> +CPUs may be grouped as clusters. A cluster may have CPUs, GIC, Coresight,
>> +caches, VFP and power controller and other peripheral hardware. Generally,
>> +when the CPUs in the cluster are idle/suspended, the shared resources may also
>> +be suspended and resumed before any of the CPUs resume execution.
>> +
>> +CPUs are the defined as the PM domain consumers and there is a PM domain
>> +provider for the CPUs. Bindings for generic PM domains (genpd) is described in
>> +[1].
>> +
>> +The ARM CPU PM domain follows the same binding convention as any generic PM
>> +domain. Additional binding properties are -
>> +
>> +- compatible:
>> +       Usage: required
>> +       Value type: <string>
>> +       Definition: Must also have
>> +                       "arm,pd"
>> +               inorder to initialize the genpd provider as ARM CPU PM domain.
>
> A compatible string should represent a particular h/w block. If it is
> generic, it should represent some sort of standard programming
> interface (e.g, AHCI, EHCI, etc.). This doesn't seem to be either and
> is rather just a mapping of what "driver" you want to use.
>
> I would expect that identifying a cpu's or cluster's power domain
> would be done by a phandle between the cpu/cluster node and power
> domain node. 

That's correct, the CPU nodes (and other nodes in the cluster like GIC,
Coresight, etc.) would have phandles to the cluster power domain node.

But this series is meant to create the driver & binding for those cluster
power domain(s), so the question is how exactly describe it.

What we're trying to get to is binding to describe a powerdomain of a
generic CPU cluster, but of course the actual programming interface for
powering down the cluster will be platform specific.  In earlier RFC
versions, Lina had proposed ways for platforms to register some
low-level hooks with this generic driver for the platform-specific bits,
but if you have some other suggests, we'd be all ears.

Kevin

WARNING: multiple messages have this Message-ID (diff)
From: khilman@kernel.org (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/9] ARM: common: Introduce PM domains for CPUs/clusters
Date: Fri, 07 Aug 2015 16:45:36 -0700	[thread overview]
Message-ID: <7hd1yyvf1b.fsf@deeprootsystems.com> (raw)
In-Reply-To: <CAL_JsqK67=DTtjZwwnonObLDjLbahkREfm0RvyXVV95bhR-d4Q@mail.gmail.com> (Rob Herring's message of "Wed, 5 Aug 2015 22:14:51 -0500")

Rob Herring <robherring2@gmail.com> writes:

> On Tue, Aug 4, 2015 at 6:35 PM, Lina Iyer <lina.iyer@linaro.org> wrote:
>> Define and add Generic PM domains (genpd) for ARM CPU clusters. Many
>> new

@Lina: I know you inherited this from some proof-of-concept code frome me, so
I'm partially to blame, but...

There's really nothing ARM specific about this driver.  

>> SoCs group CPUs as clusters. Clusters share common resources like GIC,
>> power rail, caches, VFP, Coresight etc. When all CPUs in the cluster are
>> idle, these shared resources may also be put in their idle state.
>>
>> The idle time between the last CPU entering idle and a CPU resuming
>> execution is an opportunity for these shared resources to be powered
>> down. Generic PM domain provides a framework for defining such power
>> domains and attach devices to the domain. When the devices in the domain
>> are idle at runtime, the domain would also be suspended and resumed
>> before the first of the devices resume execution.
>>
>> We define a generic PM domain for each cluster and attach CPU devices in
>> the cluster to that PM domain. The DT definitions for the SoC describe
>> this relationship. Genpd callbacks for power_on and power_off can then
>> be used to power up/down the shared resources for the domain.
>
> [...]
>
>> +ARM CPU Power domains
>> +
>> +The device tree allows describing of CPU power domains in a SoC. In ARM SoC,
>> +CPUs may be grouped as clusters. A cluster may have CPUs, GIC, Coresight,
>> +caches, VFP and power controller and other peripheral hardware. Generally,
>> +when the CPUs in the cluster are idle/suspended, the shared resources may also
>> +be suspended and resumed before any of the CPUs resume execution.
>> +
>> +CPUs are the defined as the PM domain consumers and there is a PM domain
>> +provider for the CPUs. Bindings for generic PM domains (genpd) is described in
>> +[1].
>> +
>> +The ARM CPU PM domain follows the same binding convention as any generic PM
>> +domain. Additional binding properties are -
>> +
>> +- compatible:
>> +       Usage: required
>> +       Value type: <string>
>> +       Definition: Must also have
>> +                       "arm,pd"
>> +               inorder to initialize the genpd provider as ARM CPU PM domain.
>
> A compatible string should represent a particular h/w block. If it is
> generic, it should represent some sort of standard programming
> interface (e.g, AHCI, EHCI, etc.). This doesn't seem to be either and
> is rather just a mapping of what "driver" you want to use.
>
> I would expect that identifying a cpu's or cluster's power domain
> would be done by a phandle between the cpu/cluster node and power
> domain node. 

That's correct, the CPU nodes (and other nodes in the cluster like GIC,
Coresight, etc.) would have phandles to the cluster power domain node.

But this series is meant to create the driver & binding for those cluster
power domain(s), so the question is how exactly describe it.

What we're trying to get to is binding to describe a powerdomain of a
generic CPU cluster, but of course the actual programming interface for
powering down the cluster will be platform specific.  In earlier RFC
versions, Lina had proposed ways for platforms to register some
low-level hooks with this generic driver for the platform-specific bits,
but if you have some other suggests, we'd be all ears.

Kevin

  reply	other threads:[~2015-08-07 23:45 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-04 23:35 [PATCH 0/9] ARM: PM / Domains: Generic PM domains for CPUs/Clusters Lina Iyer
2015-08-04 23:35 ` Lina Iyer
2015-08-04 23:35 ` [PATCH 1/9] PM / Domains: Allocate memory outside domain locks Lina Iyer
2015-08-04 23:35   ` Lina Iyer
2015-08-12 19:47   ` Kevin Hilman
2015-08-12 19:47     ` Kevin Hilman
2015-09-01 12:40   ` Ulf Hansson
2015-09-01 12:40     ` Ulf Hansson
2015-08-04 23:35 ` [PATCH 2/9] PM / Domains: Remove dev->driver check for runtime PM Lina Iyer
2015-08-04 23:35   ` Lina Iyer
2015-08-12 19:50   ` Kevin Hilman
2015-08-12 19:50     ` Kevin Hilman
2015-08-13  8:57     ` Geert Uytterhoeven
2015-08-13  8:57       ` Geert Uytterhoeven
2015-08-14  3:40       ` Kevin Hilman
2015-08-14  3:40         ` Kevin Hilman
2015-08-14  7:24         ` Geert Uytterhoeven
2015-08-14  7:24           ` Geert Uytterhoeven
2015-08-14 17:19           ` Kevin Hilman
2015-08-14 17:19             ` Kevin Hilman
2015-08-16  9:24             ` Geert Uytterhoeven
2015-08-16  9:24               ` Geert Uytterhoeven
2015-08-21 21:04               ` Kevin Hilman
2015-08-21 21:04                 ` Kevin Hilman
2015-08-24 19:50                 ` Lina Iyer
2015-08-24 19:50                   ` Lina Iyer
2015-08-25  9:24                   ` Geert Uytterhoeven
2015-08-25  9:24                     ` Geert Uytterhoeven
2015-09-01 13:28   ` Ulf Hansson
2015-09-01 13:28     ` Ulf Hansson
2015-08-04 23:35 ` [PATCH 3/9] PM / Domains: Support IRQ safe PM domains Lina Iyer
2015-08-04 23:35   ` Lina Iyer
2015-08-12 20:12   ` Kevin Hilman
2015-08-12 20:12     ` Kevin Hilman
2015-08-12 20:47     ` Lina Iyer
2015-08-12 20:47       ` Lina Iyer
2015-08-12 23:03   ` Stephen Boyd
2015-08-12 23:03     ` Stephen Boyd
2015-08-04 23:35 ` [PATCH 4/9] kernel/cpu_pm: fix cpu_cluster_pm_exit comment Lina Iyer
2015-08-04 23:35   ` Lina Iyer
2015-08-12 20:13   ` Kevin Hilman
2015-08-12 20:13     ` Kevin Hilman
2015-08-04 23:35 ` [PATCH 5/9] ARM: common: Introduce PM domains for CPUs/clusters Lina Iyer
2015-08-04 23:35   ` Lina Iyer
2015-08-06  3:14   ` Rob Herring
2015-08-06  3:14     ` Rob Herring
2015-08-07 23:45     ` Kevin Hilman [this message]
2015-08-07 23:45       ` Kevin Hilman
2015-08-11 13:07       ` Geert Uytterhoeven
2015-08-11 13:07         ` Geert Uytterhoeven
2015-08-11 15:58         ` Lina Iyer
2015-08-11 15:58           ` Lina Iyer
2015-08-11 20:12           ` Rob Herring
2015-08-11 20:12             ` Rob Herring
2015-08-11 22:29             ` Lina Iyer
2015-08-11 22:29               ` Lina Iyer
2015-08-12 19:00             ` [PATCH v2 1/2] " Lina Iyer
2015-08-12 19:00               ` Lina Iyer
2015-08-13 17:29               ` Rob Herring
2015-08-13 17:29                 ` Rob Herring
2015-08-13 20:12                 ` Lina Iyer
2015-08-13 20:12                   ` Lina Iyer
2015-08-13 22:01                   ` Rob Herring
2015-08-13 22:01                     ` Rob Herring
2015-08-14 14:38                     ` Lina Iyer
2015-08-14 14:38                       ` Lina Iyer
2015-08-12 19:00             ` [PATCH v2 2/2] ARM: domain: Add platform handlers for CPU PM domains Lina Iyer
2015-08-12 19:00               ` Lina Iyer
2015-08-13 15:01     ` [PATCH 5/9] ARM: common: Introduce PM domains for CPUs/clusters Lorenzo Pieralisi
2015-08-13 15:01       ` Lorenzo Pieralisi
2015-08-13 15:45       ` Lina Iyer
2015-08-13 15:45         ` Lina Iyer
2015-08-13 15:52         ` Lorenzo Pieralisi
2015-08-13 15:52           ` Lorenzo Pieralisi
2015-08-13 16:22           ` Lina Iyer
2015-08-13 16:22             ` Lina Iyer
2015-08-14  3:51           ` Kevin Hilman
2015-08-14  3:51             ` Kevin Hilman
2015-08-14  4:02             ` Lina Iyer
2015-08-14  4:02               ` Lina Iyer
2015-08-14 15:49             ` Lorenzo Pieralisi
2015-08-14 15:49               ` Lorenzo Pieralisi
2015-08-14 19:11               ` Kevin Hilman
2015-08-14 19:11                 ` Kevin Hilman
2015-08-13 17:26         ` Sudeep Holla
2015-08-13 17:26           ` Sudeep Holla
2015-08-13 19:27           ` Lina Iyer
2015-08-13 19:27             ` Lina Iyer
2015-08-14  9:52             ` Sudeep Holla
2015-08-14  9:52               ` Sudeep Holla
2015-08-04 23:35 ` [PATCH 6/9] ARM: domain: Add platform handlers for CPU PM domains Lina Iyer
2015-08-04 23:35   ` Lina Iyer
2015-08-05 14:45   ` Rob Herring
2015-08-05 14:45     ` Rob Herring
2015-08-05 16:38     ` Lina Iyer
2015-08-05 16:38       ` Lina Iyer
2015-08-05 19:23     ` Lina Iyer
2015-08-05 19:23       ` Lina Iyer
2015-08-06  3:01       ` Rob Herring
2015-08-06  3:01         ` Rob Herring
2015-08-10 15:36         ` Lina Iyer
2015-08-10 15:36           ` Lina Iyer
2015-08-04 23:35 ` [PATCH 7/9] ARM: cpuidle: Add runtime PM support for CPU idle Lina Iyer
2015-08-04 23:35   ` Lina Iyer
2015-08-04 23:35 ` [PATCH 8/9] ARM64: smp: Add runtime PM support for CPU hotplug Lina Iyer
2015-08-04 23:35   ` Lina Iyer
2015-08-04 23:35 ` [PATCH 9/9] ARM: " Lina Iyer
2015-08-04 23:35   ` Lina Iyer
2015-08-12 20:28   ` Kevin Hilman
2015-08-12 20:28     ` Kevin Hilman
2015-08-12 20:43     ` Lina Iyer
2015-08-12 20:43       ` Lina Iyer
2015-08-14 18:59       ` Kevin Hilman
2015-08-14 18:59         ` Kevin Hilman
2015-08-12 23:47   ` Stephen Boyd
2015-08-12 23:47     ` Stephen Boyd
2015-08-13 16:00     ` Lina Iyer
2015-08-13 16:00       ` Lina Iyer
2015-08-13 19:18       ` Stephen Boyd
2015-08-13 19:18         ` Stephen Boyd

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=7hd1yyvf1b.fsf@deeprootsystems.com \
    --to=khilman@kernel.org \
    --cc=agross@codeaurora.org \
    --cc=catalin.marinas@arm.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=geert@linux-m68k.org \
    --cc=k.kozlowski@samsung.com \
    --cc=lina.iyer@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=msivasub@codeaurora.org \
    --cc=rjw@rjwysocki.net \
    --cc=robherring2@gmail.com \
    --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 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.