public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: David Brownell <david-b@pacbell.net>
To: Dmitry Krivoschekov <dmitry.krivoschekov@gmail.com>
Cc: alexey.y.starikovskiy@intel.com, dirk.behme@de.bosch.com,
	johannes@sipsolutions.net, pavel@ucw.cz,
	linux-pm@lists.linux-foundation.org, nico@cam.org,
	ben@simtec.co.uk, g.liakhovetski@gmx.de
Subject: Re: [PATCH] implement pm_ops.valid for everybody
Date: Sun, 25 Mar 2007 08:20:17 -0700	[thread overview]
Message-ID: <200703250820.18095.david-b@pacbell.net> (raw)
In-Reply-To: <46064E68.8030302@gmail.com>

On Sunday 25 March 2007 3:26 am, Dmitry Krivoschekov wrote:
> David Brownell wrote:
> > On Friday 23 March 2007 1:39 pm, Rafael J. Wysocki wrote:
> >
> >> 	After we have frozen tasks, we need to
> >> call something like device_suspend(some_argument) where the argument should
> >> tell drivers what to do. 
> >
> > That parameter can't suffice, since the exact details depend on
> > system-dependent context.  Example, on one system a given sleep
> > state will allow a given device to issue wakeups ... on another,
> > it won't.
> >
> What do you mean? Capability of h/w to be a wakeup source or
> design decisions, when wakeup capability of a given device
> is disabled intentionally for some reason?

Both ways; device_may_wakeup(dev) is there to flag whether
the driver suspend() method should try to kick in wakeup
machinery, whether the restriction is from hardware or from
software (userspace) policy.


> System may have a number of devices that all are able to wakeup
> the system from *all* sleep (low power) states the system
> supports.Normally, such devices should be marked as "can_wakeup"
> to demonstrate the capability,

That flag doesn't indicate wakeup from "all" states, but
instead from "any" state.  There's no micromanagement
going on... just a simple way for userspace to say whether
they'd like to try using that device's wakeup machinery.

If the device can't wake from the target system state,
the driver won't be able to kick in that machinery.
Hardware trumps software, as it were.


> So, it is reasonable idea to permit some devices to be
> wakeup sources for one system-wide state but restrict
> the wakeup ability for another system-wide state.

That restriction being done in hardware or, if for some
reason userspace wants, by updating the sysfs "wakeup"
attribute for the relevant device before writing to the
/sys/power/state file.


> But, it seems not quite reasonable to hardcode this
> in platform-specific code, unless your platform is
> designed for very specific needs. In general,
> every wakeup source (which is capable to wakeup
> at any system state) should be available via sysfs
> (../power/wakeup interface of device)

Right, which is why I never suggested hardwiring any
of that in platform-specific code.  The only thing
that platform-specific code should handle is whether
the device can be a wakeup event source *at all*, which
is hardware-controlled.


> > You seem to have overlooked the clk_must_disable() patches I
> > recently re-sent.  In conjunction with the driver model wakeup
> > flags, that can solve the problem on every SOC platform I've
> > had a reason to look at ... see how it works for AT91 USB.
> 
> As I pointed above, user may want to choose between wakeup
> sources and he(she) must be sure the choice won't be ignored,

If the user sets a policy the hardware can't implement in
that particular context, then of course that choice can't
apply.  It's not "ignored", just irrelevant.


> but your changes for atmel_serial.c and at91_udc.c,
> seems restrict user with that.

The restriction is from hardware, not software.  And that
patch doesn't change that behavior; it couldn't!  :)

If userspace wants the USB host to be able to wake the
system from sleep, then the simple rule is:  don't use
the suspend-to-RAM mode.  Nothing software does can ever
change that restriction; "slow clock mode" doesn't run
the 48 MHz clock, wakeup doesn't work without that clock.

By forcing the system into suspend-to-RAM mode, rather
than using runtime PM to minimize power usage, userspace
has already said that being fully functional isn't the
top issue just then.

Keep in mind that most users are already trained in that
model.  Even if it didn't already make sense, that's what
MS-Windows has done forever.  Those little checkboxes in
each driver's GUI properties, saying "let it wake up the
system"?  They're boolean, and only reflect the details
of the ACPI tables in so far not having the checkbox if
that device is known to ACPI and isn't in that table.
It's a simple model, easily understood and generalized.

- Dave

  reply	other threads:[~2007-03-25 15:20 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-22 13:44 [PATCH] implement pm_ops.valid for everybody Scott E. Preece
2007-03-22 18:29 ` David Brownell
2007-03-22 19:26   ` Tony Lindgren
2007-03-22 21:16     ` David Brownell
2007-03-23 13:15       ` tony
2007-03-23 18:25         ` David Brownell
2007-03-22 21:37     ` Rafael J. Wysocki
2007-03-22 21:27   ` Rafael J. Wysocki
2007-03-22 21:43     ` David Brownell
2007-03-22 21:56       ` Guennadi Liakhovetski
2007-03-22 22:42         ` David Brownell
2007-03-22 22:10       ` Rafael J. Wysocki
2007-03-22 22:56         ` David Brownell
2007-03-22 23:21           ` Rafael J. Wysocki
2007-03-22 23:55             ` David Brownell
2007-03-23  1:14               ` Matthew Locke
2007-03-23 13:17                 ` tony
2007-03-23 13:35                   ` Igor Stoppa
2007-03-23 14:52                     ` tony
2007-03-23 15:17                       ` Igor Stoppa
2007-03-23 18:51                         ` Matthew Locke
2007-03-23 19:19                           ` Igor Stoppa
2007-03-23 18:29                 ` David Brownell
2007-03-23 19:21                   ` Matthew Locke
2007-03-23 20:11                     ` David Brownell
2007-03-23  6:46               ` Guennadi Liakhovetski
2007-03-23 16:15                 ` David Brownell
2007-03-23 21:08                   ` Guennadi Liakhovetski
2007-03-24  0:52                     ` David Brownell
2007-03-23 13:43               ` Rafael J. Wysocki
2007-03-23 17:57                 ` David Brownell
2007-03-23 20:39                   ` Rafael J. Wysocki
2007-03-24  0:01                     ` Pavel Machek
2007-03-24  0:54                       ` David Brownell
2007-03-24 20:01                       ` Rafael J. Wysocki
2007-03-24  0:41                     ` Dmitry Krivoschekov
2007-03-24 20:49                     ` David Brownell
2007-03-24 21:01                       ` Johannes Berg
2007-03-25  1:02                         ` David Brownell
2007-03-24 21:36                       ` Rafael J. Wysocki
2007-03-24 22:19                         ` David Brownell
2007-03-25 10:26                       ` Dmitry Krivoschekov
2007-03-25 15:20                         ` David Brownell [this message]
2007-03-25 16:23                           ` Jim Gettys
2007-03-25 16:55                             ` David Brownell
2007-03-23 18:18                 ` Matthew Locke
2007-03-24  3:08                 ` Paul Mackerras
2007-03-24 20:04                   ` Rafael J. Wysocki
2007-03-22 23:29           ` Guennadi Liakhovetski
2007-03-22 23:44             ` David Brownell
2007-03-22 23:45             ` Guennadi Liakhovetski
2007-03-22 21:33 ` Rafael J. Wysocki
  -- strict thread matches above, loose matches on Subject: below --
2007-03-20  1:58 [PATCH] rework pm_ops pm_disk_modes foo Johannes Berg
2007-03-20  8:46 ` [PATCH v2] " Johannes Berg
2007-03-20  9:31   ` Pavel Machek
2007-03-20  9:36     ` Johannes Berg
2007-03-20  9:43       ` Pavel Machek
2007-03-20 10:17         ` [PATCH] add firmware disk state and clean up Johannes Berg
2007-03-20 10:25           ` Pavel Machek
2007-03-20 11:06             ` [PATCH] implement pm_ops.valid for everybody Johannes Berg
2007-03-20 13:16               ` Pavel Machek
2007-03-20 23:44               ` David Brownell
2007-03-20 22:49                 ` Pavel Machek
2007-03-21 21:01                 ` Guennadi Liakhovetski
2007-03-21 22:07                   ` David Brownell
2007-03-21 22:36                     ` Guennadi Liakhovetski
2007-03-21 22:57                       ` Pavel Machek
2007-03-21 23:25                         ` David Brownell
2007-03-21 23:31                           ` Pavel Machek
2007-03-22 10:03                           ` Johannes Berg
2007-03-22 17:10                             ` David Brownell
2007-03-22 17:18                               ` Johannes Berg
2007-03-22 18:13                                 ` David Brownell
2007-03-22 18:18                                   ` Johannes Berg
2007-03-21 23:32                         ` Rafael J. Wysocki

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=200703250820.18095.david-b@pacbell.net \
    --to=david-b@pacbell.net \
    --cc=alexey.y.starikovskiy@intel.com \
    --cc=ben@simtec.co.uk \
    --cc=dirk.behme@de.bosch.com \
    --cc=dmitry.krivoschekov@gmail.com \
    --cc=g.liakhovetski@gmx.de \
    --cc=johannes@sipsolutions.net \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=nico@cam.org \
    --cc=pavel@ucw.cz \
    /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