public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Greg Kroah-Hartman <gregkh@suse.de>,
	Magnus Damm <magnus.damm@gmail.com>,
	Paul Walmsley <paul@pwsan.com>, Kevin Hilman <khilman@ti.com>
Cc: Linux PM mailing list <linux-pm@lists.linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-sh@vger.kernel.org
Subject: [PATCH 0/8] PM / Domains: Support for generic I/O PM domains (v5)
Date: Sat, 11 Jun 2011 22:23:04 +0200	[thread overview]
Message-ID: <201106112223.04972.rjw@sisk.pl> (raw)

Hi,

This is the 4th update of the patchset adding support for generic I/O PM
domains.  The patches have been reworked quite a bit to take feedback into
account, but I left the Greg's ACK in [4/8] in the hope it still applies
(Greg, please let me know in case it doesn't :-)).

The model here is that a bunch of devices share a common power resource
that can be turned on and off by software.  In addition to that, there
are means to start and stop the activity of each device, for example
by manipulating their clocks.  Moreover, there may be hierarchy of
such things, for example power resource A may be necessary for devices
a, b, c, which don't rely on any other power resources, and for devices
x, y, z that also rely on power resource X.  In that case there one PM
domain object representing devices a, b, c and power resource A, and 
another PM domain object will represent devices x, y, z with power
resource X, plus the first object will be the second one's parent.

Note to Kevin: I know you'd like each PM domain to be able to go into several
different states, but the situation will always be that in some of those
states the devices' registers will remain intact, while in the rest of those
states they will be reset.  Say, there are states 1, 2, 3, 4 and states
1-3 preserve device registers.  Then it is not necessary to save device
registers for "domain" states 1-3 and it only is necessary to save them
when going to state 4.  In that case, .power_off() may map to the "go to
state 4" operation (and analogously .power_on()), while the rest may be
done by .stop_device() and .start_device().  IOW, .power_is_off == true
means "the devices' registers have to be restored", so it need not map to
any particular physical state of a (hardware) power domain.

Note to Magnus and Paul: I didn't use a global lock as suggested, because
I think it may lead to completely unnecessary congestion in situations in
which there are no hierarchies of PM domains.  It is quite easy to show that
the code doesn't deadlock, because (1) no more than 2 locks are held by the
same thread at a time (parent lock and child lock) and (2) they are always
acquired in the same order (parent before the child).

Overall, I think I've taken all of the important dependencies into
consideration, but if you spot something suspicious, please let me know. :-)
Wakeup is not covered at this point, because it's not necessary for the
SH7372's A4LC power domain that's the first user of the new code, but it
is quite clear how add the support for it.  Also, for more complicated
cases it is necessary to take QoS requirements (latencies) into account,
which is in the works (kind of).

[1/8] - Update documentation to reflect the fact that struct dev_power_domain
        callbacks take precedence over subsystem PM callbacks.

[2/8] - Rename struct dev_power_domain to struct dev_pm_domain to reflect the
        fact that those objects need not correspond to hardware power domains
        directly.

[3/8] - Move subsys_data in struct dev_pm_info out of #ifdef CONFIG_PM_RUNTIME

[4/8] - Introduce runtime PM support for generic I/O PM domains.

[5/8] - Introduce generic "noirq" callbacks for system suspend/hibernation
        (that's necessary for the next patches).

[6/8] - Move some PM domains support code fro under #ifdef CONFIG_PM_RUNTIME

[7/8] - Add system-wide PM support for generic I/O PM domains.

[8/8] - Use the new code to represent the SH7372's A4MP power domain.

The patchset has been tested on SH7372 Mackerel board and appears to work
correctly.

I'd like to push [1/8] for 3.0 (it may be regarded as a fix), but I _think_
that it may be a good idea to push [2/8] for 3.0 too, to limit the time in
which people may possibly use the naming that's going to change in their new
code.  If you agree with that, please let me know, I'll need some serious
ACKs below that patch if it's to be pushed for 3.0. ;-)

Thanks,
Rafael

             reply	other threads:[~2011-06-11 20:23 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-11 20:23 Rafael J. Wysocki [this message]
2011-06-11 20:25 ` [PATCH 1/8] PM / Domains: Update documentation Rafael J. Wysocki
2011-06-11 20:26 ` [PATCH 2/8] PM / Domains: Rename struct dev_power_domain to struct dev_pm_domain Rafael J. Wysocki
2011-06-11 20:27 ` [PATCH 3/8] PM: subsys_data in struct dev_pm_info need not depend on RM_RUNTIME Rafael J. Wysocki
2011-06-11 20:31 ` [PATCH 4/8] PM / Domains: Support for generic I/O PM domains (v5) Rafael J. Wysocki
2011-06-11 20:36 ` [PATCH 5/8] PM: Introduce generic "noirq" callback routines for subsystems Rafael J. Wysocki
2011-06-11 20:37 ` [PATCH 6/8] PM / Domains: Move code from under #ifdef CONFIG_PM_RUNTIME Rafael J. Wysocki
2011-06-11 20:39 ` [PATCH 7/8] PM / Domains: System-wide transitions support for generic PM domains Rafael J. Wysocki
2011-06-11 20:40 ` [PATCH 8/8] ARM / shmobile: Support for I/O PM domains for SH7372 (v5) Rafael J. Wysocki
2011-06-11 20:57 ` [PATCH 0/8] PM / Domains: Support for generic I/O PM domains (v5) Greg KH
     [not found] ` <201106112239.16285.rjw@sisk.pl>
2011-06-11 23:28   ` [Update][PATCH 7/8] PM / Domains: System-wide transitions support for generic domains (v2) Rafael J. Wysocki
2011-06-19 22:06   ` [Update][PATCH 7/8] PM / Domains: System-wide transitions support for generic domains (v3) Rafael J. Wysocki
     [not found]   ` <201106200006.07642.rjw@sisk.pl>
2011-06-20 23:05     ` Rafael J. Wysocki
2011-06-22 21:50     ` Kevin Hilman
     [not found]     ` <8739j1lemc.fsf@ti.com>
2011-06-22 22:16       ` Rafael J. Wysocki
     [not found]       ` <201106230016.46704.rjw@sisk.pl>
2011-06-22 22:18         ` Kevin Hilman
     [not found]         ` <871uyljys6.fsf@ti.com>
2011-06-22 22:22           ` Rafael J. Wysocki
     [not found]           ` <201106230022.56462.rjw@sisk.pl>
2011-06-23 13:57             ` [PATCH] PM / Runtime: Update documentation of interactions with system sleep Rafael J. Wysocki
     [not found]             ` <201106231557.43653.rjw@sisk.pl>
2011-06-24 18:25               ` Kevin Hilman
2011-06-23 14:19         ` [Update][PATCH 7/8] PM / Domains: System-wide transitions support for generic domains (v3) Alan Stern
     [not found] ` <201106112240.11621.rjw@sisk.pl>
2011-06-14 13:12   ` [PATCH 8/8] ARM / shmobile: Support for I/O PM domains for SH7372 (v5) Magnus Damm
     [not found]   ` <BANLkTi=-1Fpp9L17T7CwxoO9JfSes4FeKg@mail.gmail.com>
2011-06-14 21:16     ` Rafael J. Wysocki
     [not found]     ` <201106142316.02812.rjw@sisk.pl>
2011-06-15 14:17       ` Magnus Damm
     [not found]       ` <BANLkTi=u_eyGZt9e0CuVpyz9B08HarEyVw@mail.gmail.com>
2011-06-15 23:06         ` Rafael J. Wysocki
     [not found]         ` <201106160106.40553.rjw@sisk.pl>
2011-06-19 22:07           ` [Update][PATCH 8/8] ARM / shmobile: Support for I/O power domains for SH7372 (v6) Rafael J. Wysocki
     [not found]           ` <201106200007.47828.rjw@sisk.pl>
2011-06-20  2:01             ` Paul Mundt
     [not found]             ` <20110620020125.GA26125@linux-sh.org>
2011-06-20 22:30               ` Rafael J. Wysocki
     [not found]               ` <201106210030.01922.rjw@sisk.pl>
2011-06-21 11:57                 ` Rafael J. Wysocki
     [not found]                 ` <201106211357.09202.rjw@sisk.pl>
2011-06-21 12:47                   ` Paul Mundt
2011-07-10 11:45         ` [PATCH 8/8] ARM / shmobile: Support for I/O PM domains for SH7372 (v5) Laurent Pinchart
     [not found] ` <201106112231.11269.rjw@sisk.pl>
2011-06-19 22:02   ` [Update][PATCH 4/8] PM / Domains: Support for generic I/O PM domains (v6) Rafael J. Wysocki
     [not found]   ` <201106200002.19377.rjw@sisk.pl>
2011-06-21 17:42     ` Kevin Hilman
     [not found]     ` <874o3jt72c.fsf@ti.com>
2011-06-22  0:07       ` Rafael J. Wysocki
     [not found]       ` <201106220207.01434.rjw@sisk.pl>
2011-06-22 19:51         ` Kevin Hilman
     [not found]         ` <87fwn1lk61.fsf@ti.com>
2011-06-22 21:30           ` Rafael J. Wysocki
     [not found] ` <201106112226.07631.rjw@sisk.pl>
2011-06-20 23:37   ` [PATCH 2/8] PM / Domains: Rename struct dev_power_domain to struct dev_pm_domain Kevin Hilman
2011-06-21  0:02 ` [PATCH 0/8] PM / Domains: Support for generic I/O PM domains (v5) Kevin Hilman
     [not found] ` <87boxs3vd3.fsf@ti.com>
2011-06-21 11:06   ` Rafael J. Wysocki
     [not found]   ` <201106211306.26016.rjw@sisk.pl>
2011-06-21 14:47     ` Kevin Hilman
2011-06-25 21:24 ` [PATCH 0/10 v6] PM / Domains: Support for generic I/O PM domains Rafael J. Wysocki
     [not found] ` <201106252324.13454.rjw@sisk.pl>
2011-06-25 21:24   ` [PATCH 1/10 v6] PM / Domains: Rename struct dev_power_domain to struct dev_pm_domain Rafael J. Wysocki
2011-06-25 21:25   ` [PATCH 2/10 v6] PM: subsys_data in struct dev_pm_info need not depend on RM_RUNTIME Rafael J. Wysocki
2011-06-25 21:26   ` [PATCH 3/10 v6] PM / Domains: Support for generic I/O PM domains (v7) Rafael J. Wysocki
2011-06-25 21:27   ` [PATCH 4/10 v6] PM: Introduce generic "noirq" callback routines for subsystems (v2) Rafael J. Wysocki
2011-06-25 21:27   ` [PATCH 5/10 v6] PM / Domains: Move code from under #ifdef CONFIG_PM_RUNTIME (v2) Rafael J. Wysocki
2011-06-25 21:28   ` [PATCH 6/10 v6] PM / Domains: System-wide transitions support for generic domains (v4) Rafael J. Wysocki
2011-06-25 21:29   ` [PATCH 7/10 v6] PM / Domains: Don't stop wakeup devices during system sleep transitions Rafael J. Wysocki
2011-06-25 21:30   ` [PATCH 8/10 v6] PM: Allow the clocks management code to be used during system suspend Rafael J. Wysocki
2011-06-25 21:30   ` [PATCH 9/10 v6] PM: Rename clock management functions Rafael J. Wysocki
2011-06-25 21:31   ` [PATCH 10/10 v6] ARM / shmobile: Support for I/O power domains for SH7372 (v8) Rafael J. Wysocki
     [not found]   ` <201106252331.43354.rjw@sisk.pl>
2011-06-27  4:07     ` Magnus Damm
2011-06-27 19:25       ` Rafael J. Wysocki
     [not found]       ` <201106272125.12700.rjw@sisk.pl>
2011-06-27 23:21         ` Magnus Damm
2011-06-28 10:08           ` Rafael J. Wysocki
     [not found]   ` <201106252328.31882.rjw@sisk.pl>
2011-06-28 23:44     ` [Update][PATCH 6/10] PM / Domains: System-wide transitions support for generic domains (v5) Rafael J. Wysocki
     [not found]     ` <201106290144.01186.rjw@sisk.pl>
2011-07-08  0:29       ` Kevin Hilman
     [not found]       ` <871uy1d380.fsf@ti.com>
2011-07-08  9:24         ` Rafael J. Wysocki
     [not found]   ` <201106252329.24342.rjw@sisk.pl>
2011-06-29 23:50     ` [PATCH 7/10 v6] PM / Domains: Don't stop wakeup devices during system sleep transitions Kevin Hilman
     [not found]     ` <87fwmsnqno.fsf@ti.com>
2011-06-30 19:37       ` Rafael J. Wysocki
     [not found]       ` <201106302137.23801.rjw@sisk.pl>
2011-06-30 22:42         ` Kevin Hilman
     [not found]         ` <878vsjdjpx.fsf@ti.com>
2011-06-30 22:55           ` Rafael J. Wysocki
     [not found]           ` <201107010055.26952.rjw@sisk.pl>
2011-06-30 23:14             ` Kevin Hilman
2011-06-30 23:25             ` Rafael J. Wysocki
     [not found]             ` <87iprmdi9o.fsf@ti.com>
2011-06-30 23:28               ` Rafael J. Wysocki
     [not found]               ` <201107010128.03732.rjw@sisk.pl>
2011-07-01  0:01                 ` Kevin Hilman
2011-07-01  0:24                   ` Rafael J. Wysocki
     [not found]                   ` <201107010224.37609.rjw@sisk.pl>
2011-07-01 14:34                     ` Kevin Hilman
     [not found]   ` <201106252326.23837.rjw@sisk.pl>
2011-06-30  6:14     ` [PATCH 3/10 v6] PM / Domains: Support for generic I/O PM domains (v7) Ming Lei
     [not found]     ` <BANLkTi=tipUrzeKJeQirrNWyE0KMS1+DYw@mail.gmail.com>
2011-06-30 18:58       ` Rafael J. Wysocki
2011-07-01 18:11     ` Kevin Hilman
     [not found]     ` <87tyb5yipq.fsf@ti.com>
2011-07-01 20:03       ` Rafael J. Wysocki
2011-07-01 18:27   ` [PATCH 0/10 v6] PM / Domains: Support for generic I/O PM domains Kevin Hilman

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=201106112223.04972.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=gregkh@suse.de \
    --cc=khilman@ti.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=paul@pwsan.com \
    /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