From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: David Brownell <david-b@pacbell.net>
Cc: Andrew Victor <andrew@sanpeople.com>,
linux-pm@lists.linux-foundation.org,
Andrew Morton <akpm@linux-foundation.org>,
Russell King <rmk@arm.linux.org.uk>
Subject: Re: Re: [patch 2.6.23-rc2 1/2] define clk_must_disable()
Date: Wed, 8 Aug 2007 00:20:09 +0200 [thread overview]
Message-ID: <200708080020.10147.rjw@sisk.pl> (raw)
In-Reply-To: <200708071417.47706.david-b@pacbell.net>
On Tuesday, 7 August 2007 23:17, David Brownell wrote:
> On Tuesday 07 August 2007, Russell King wrote:
>
> > 4. the description of the function implies that this function may be
> > called when we are not suspending:
> >
> > + * On platforms that support reduced functionality operating states, the
> > + * constraint may also need to be tested during resume() and probe() calls.
>
> Right ... support for multiple "run" states will imply this same kind
> of predicate, and I couldn't justify chosing a name which forces the
> existence of more than one such predicate. Ergo a generic name.
>
> However, right now no platforms support them (cpufreq aside), so this
> text could be rather harmlessly removed: the second half of the sentence
> doesn't apply to anything yet. And maybe it *should* be removed, since
> such platforms might do arbitrarily surprising stuff ... they might use
> driver-level "reclock yourself" callbacks/notifiers (like the original
> DPM stuff).
>
>
> > With SoCs with multiple power states affecting which clocks are
> > available, and the need in point (2) for the architecture code to
> > record which PM mode we're entering via the pm_ops set_target method,
>
> Your point (2) was that it's "unclear" how that information becomes
> available. But the presumption of (4) here is that it's set_target().
> So either it's clear enough, and (2) was wrong; or (4) has a false
> premise; or both. From false premises, anything can be proven...
>
> I'd certainly not expect pm_ops.set_target() to apply in any context
> other than the start of a suspend sequence. Any platform choosing
> to implement multiple run states necessarily provides some more
> mechanisms...
>
> (Purely as an example ... this is much the same kind of thing that goes
> on with cpufreq updating a CPU clock that's also exposed through the
> clock API: multiple interfaces to the same PM-related state. In both
> cases, the public interface doesn't say how the implementation might
> be done; it doesn't even care.)
>
>
> > calling clk_must_disable() outside of the suspend methods results in
> > this function essentially returning undefined values at driver probe
> > time. Note: there is no locking between driver probing and the
> > set_target method.
> >
> > Moreover, if used in a driver probe() path, the return value could
> > well depend on the _last_ system suspend state entered, and would be
> > undefined for a system which hasn't been suspended from boot.
>
> No, this platform maintains an invariant that the target PM state is
> always PM_SUSPEND_ON except while suspending. (So does ACPI, as I
> recall.) You're presuming a broken platform; but it's not broken...
>
> Re locking, that issue would be addressed as part of supporting
> multiple run states. I still don't see suspend ops being involved
> in non-suspend transitions.
Well, I'll go further and say that in principle the .suspend() callbacks have
nothing to do with non-suspend transitions. In some situations they may
perform similar operations, but in that case the common code should be put
into a separate function and called _explicitly_ from the two places, to avoid
confusion.
Greetings,
Rafael
--
"Premature optimization is the root of all evil." - Donald Knuth
next prev parent reply other threads:[~2007-08-07 22:20 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-06 18:11 [patch 2.6.23-rc2 1/2] define clk_must_disable() David Brownell
2007-08-06 20:04 ` Russell King
2007-08-06 20:38 ` David Brownell
2007-08-06 21:03 ` David Brownell
2007-08-06 21:48 ` Russell King
2007-08-06 23:46 ` David Brownell
2007-08-07 5:23 ` Andrew Morton
2007-08-07 12:50 ` Russell King
2007-08-07 17:21 ` Andrew Morton
2007-08-07 17:25 ` Russell King
2007-08-07 20:15 ` David Brownell
2007-08-07 20:18 ` David Brownell
2007-08-07 21:04 ` David Brownell
2007-08-07 21:17 ` David Brownell
2007-08-07 22:20 ` Rafael J. Wysocki [this message]
2007-08-07 21:20 ` David Brownell
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=200708080020.10147.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=akpm@linux-foundation.org \
--cc=andrew@sanpeople.com \
--cc=david-b@pacbell.net \
--cc=linux-pm@lists.linux-foundation.org \
--cc=rmk@arm.linux.org.uk \
/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