All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Seyfried <stefan.seyfried@googlemail.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: "Bartłomiej Zimoń" <uzi18@o2.pl>,
	linux-kernel@vger.kernel.org, "Andy Walls" <awalls@radix.net>,
	"pm list" <linux-pm@lists.linux-foundation.org>,
	"Alan Stern" <stern@rowland.harvard.edu>
Subject: Re: [suspend/resume] Re: userspace notification from module
Date: Mon, 4 Jan 2010 14:38:23 +0100	[thread overview]
Message-ID: <20100104143823.1464643d@strolchi.home.s3e.de> (raw)
In-Reply-To: <201001032249.11510.rjw@sisk.pl>

Hi,

On Sun, 3 Jan 2010 22:49:11 +0100
"Rafael J. Wysocki" <rjw@sisk.pl> wrote:

> On Sunday 03 January 2010, Bartłomiej Zimoń wrote:
> > mhm, why not to create kernel based pm event messaging for processes?

I don't think you need the kernel for that.

> > How it is implemented on other platforms?
> > Because on MacOsX looks like program registers callback for such event.
> > 
> > I dont know if every pm_notifier blocks suspend until return from callback.
> > 
> > If we cant do it simple we can do it better.
> > Rafael what do You think about it?

Basically, modern desktops do it exactly this way. They have one "power
manager" (be it gnome-power-manager or KDE's solid) and the
applications are notified by it if a suspend is going to happen.

E.g. the power manager will tell the volume manager (the thing that
mounted the USB stick) "we will suspend, please unmount everything".
Other desktop components will also be notified.

Some processes might also wish to inhibit the suspend (e.g. a CD
burning application while it is burning).

The power manager is the "single point of decision". It might decide to
ignore the CD burning application, if the power is critically low
(better a ruined CD than data loss by hard poweroff), but honor it
otherwise. It might decide to ask the user (and it has an easy way to
do so, since it is running in the users session and thus has access to
the X display), but proceed after a timeout etc...

All this is already possible and does not need any kernel changes at
all.

> I've just said, roughly, in a message I sent to you a while back.
> 
> You need a power manager, but not necessarily in the kernel.  The role of the
> power manager would be to:
> (1) pass suspend requests from different sources in the user space (a GUI for
>     one example) to the kernel,
> (2) notify processes which registered for that when it's going to pass a
>     suspend (or hibernate) request to the kernel,
> (3) wait for the notified processes to complete the pre-suspend preparations
>     they require.

Exactly.

> There are a few more things to consider here.  For example, what if one of the
> registered processes becomes unresponsive?  Are we going to suspend anyway
> or notify the user and wait for him to resolve the problem?  In the latter
> case, what to do if that is, for example, an emergency hibernation started
> because we're running out of battery power?  Etc.
> 
> Some time ago openSUSE had a daemon called powersaved used for this purpose,
> but then it was replaced by pm-utils, apparently because everybody else was
> using pm-utils and it just wasn't worth maintaining a different solution for
> one distro only.  Maybe it's time to rethink this idea?

No. Because what powersaved did was not fundamentally different from
what gnome-power-manager / pm-utils does now. The difference was, that
it was a daemon running as root. Which brought a few problems of its
own:
 * communication with the user was not easily possible
 * it mixed up policy and mechanism (powersaved decided what to do if
   you press the power or sleep button, and you needed root to configure
   that behaviour).

And before somebody comes along with arguments like "but what about my
manually mounted NFS share - who will unmount that?", I can only tell
you: "go away". There is no way to imlement a sane solution that will
take care of all the crazy manual configurations people can dream of,
so you can only tell them "you mounted it manually - so unmount it
manually".

And you can give them pm-utils hooks that give them a mechanism to do
their manual stuff semi-automatically during suspend / resume.

Have fun :-)

	seife
-- 
Stefan Seyfried

"Any ideas, John?"
"Well, surrounding them's out."

  parent reply	other threads:[~2010-01-04 13:38 UTC|newest]

Thread overview: 121+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-02 13:29 userspace notification from module Bartłomiej Zimoń
2010-01-02 14:04 ` Daniel Borkmann
2010-01-02 14:27   ` [suspend/resume] " Bartłomiej Zimoń
2010-01-02 15:11     ` Oliver Neukum
     [not found]     ` <6f52f5b81001020713j5435cfadr1143806a9026adc2@mail.gmail.com>
2010-01-02 15:15       ` Daniel Borkmann
2010-01-02 15:40         ` Andy Walls
2010-01-02 15:56           ` Daniel Borkmann
2010-01-02 18:26             ` Bartłomiej Zimoń
2010-01-02 21:01               ` Rafael J. Wysocki
     [not found]                 ` <7cf4f51f.5fc2a5cd.4b3fc3ad.c849c@o2.pl>
2010-01-02 23:29                   ` Rafael J. Wysocki
2010-01-02 23:29                     ` Rafael J. Wysocki
2010-01-03  1:03                     ` Bartłomiej Zimoń
2010-01-03  9:30                       ` Daniel Borkmann
2010-01-03  9:30                       ` Daniel Borkmann
2010-01-03 10:06                         ` Daniel Borkmann
2010-01-03 10:06                         ` Daniel Borkmann
2010-01-03 11:01                           ` Bartłomiej Zimoń
2010-01-03 21:49                             ` Rafael J. Wysocki
2010-01-03 21:49                             ` Rafael J. Wysocki
2010-01-04 13:38                               ` Stefan Seyfried
2010-01-04 13:38                               ` Stefan Seyfried [this message]
2010-01-03 21:33                         ` Rafael J. Wysocki
2010-01-03 21:33                         ` Rafael J. Wysocki
2010-01-03 21:29                       ` Rafael J. Wysocki
2010-01-03 21:29                       ` Rafael J. Wysocki
2010-01-03 22:53                         ` Bartłomiej Zimoń
2010-01-03 23:30                           ` Rafael J. Wysocki
2010-01-03 23:30                           ` Rafael J. Wysocki
2010-01-03 23:35                             ` Bartłomiej Zimoń
2010-01-03 23:45                               ` Rafael J. Wysocki
2010-01-03 23:45                               ` Rafael J. Wysocki
2010-01-04  0:51                                 ` Bartłomiej Zimoń
2010-01-04  0:51                                 ` Bartłomiej Zimoń
2010-01-04  1:06                                   ` Bartłomiej Zimoń
2010-01-04 19:43                                   ` Rafael J. Wysocki
2010-01-05  9:07                                     ` [linux-pm] " Anders Eriksson
2010-01-05 21:02                                       ` Bartłomiej Zimoń
2010-01-05 21:23                                         ` [linux-pm] " Rafael J. Wysocki
2010-01-05 22:12                                           ` Bartłomiej Zimoń
2010-01-05 22:12                                           ` [linux-pm] " Bartłomiej Zimoń
2010-01-05 23:03                                             ` Rafael J. Wysocki
2010-01-05 23:03                                             ` [linux-pm] " Rafael J. Wysocki
2010-01-05 23:37                                               ` Bartłomiej Zimoń
2010-01-06 14:35                                                 ` [linux-pm] " Anders Eriksson
2010-01-06 20:37                                                   ` [linux-pm] [suspend/resume] Re: userspace notific ation " Bartłomiej Zimoń
2010-01-06 20:49                                                     ` Roland Dreier
2010-01-06 20:56                                                       ` Roland Dreier
2010-01-06 20:56                                                       ` Roland Dreier
2010-01-06 20:49                                                     ` Roland Dreier
2010-01-06 20:37                                                   ` Bartłomiej Zimoń
2010-01-15 20:02                                                   ` [suspend/resume] Re: userspace notification " Pavel Machek
2010-01-15 20:02                                                   ` [linux-pm] " Pavel Machek
2010-01-06 14:35                                                 ` Anders Eriksson
2010-01-05 21:23                                         ` Rafael J. Wysocki
2010-01-05 21:26                                       ` [linux-pm] " Stefan Seyfried
2010-01-05 22:22                                         ` Bartłomiej Zimoń
2010-01-05 23:05                                           ` Rafael J. Wysocki
2010-01-05 23:05                                           ` [linux-pm] " Rafael J. Wysocki
2010-01-06  0:43                                             ` Bartłomiej Zimoń
2010-01-06 10:10                                           ` Stefan Seyfried
2010-01-05 21:26                                       ` Stefan Seyfried
2010-01-05  9:07                                     ` Anders Eriksson
2010-01-04 19:43                                   ` Rafael J. Wysocki
2010-01-04 12:46                                 ` Daniel Borkmann
2010-01-04 19:45                                   ` Rafael J. Wysocki
2010-01-04 19:45                                   ` Rafael J. Wysocki
2010-01-04 12:46                                 ` Daniel Borkmann
2010-01-03 23:35                             ` Bartłomiej Zimoń
2010-01-03 17:20                     ` Bartłomiej Zimoń
2010-01-03 17:20                     ` Bartłomiej Zimoń
2010-01-03 21:50                       ` Rafael J. Wysocki
2010-01-03 21:50                       ` Rafael J. Wysocki
2010-01-09 10:32                 ` Pavel Machek
2010-01-09 13:40                   ` Rafael J. Wysocki
2010-01-15 20:03                     ` Pavel Machek
2010-01-15 20:03                       ` Pavel Machek
2010-01-15 22:14                       ` Rafael J. Wysocki
2010-01-15 22:14                         ` Rafael J. Wysocki
2010-01-16  3:00                         ` Eric Miao
2010-01-16  3:00                           ` Eric Miao
2010-01-16 17:00                           ` Stanislav Brabec
2010-01-16 17:00                             ` Stanislav Brabec
2010-01-16 18:12                             ` Pavel Machek
2010-01-16 18:12                               ` Pavel Machek
2010-01-16 22:05                               ` Rafael J. Wysocki
2010-01-16 22:05                                 ` Rafael J. Wysocki
2010-01-16 22:19                                 ` Pavel Machek
2010-01-16 22:19                                   ` Pavel Machek
2010-01-16 22:25                                   ` Pavel Machek
2010-01-16 22:25                                     ` Pavel Machek
2010-01-16 22:31                                     ` Rafael J. Wysocki
2010-01-16 22:31                                       ` Rafael J. Wysocki
2010-01-16 22:26                                   ` Rafael J. Wysocki
2010-01-16 22:26                                     ` Rafael J. Wysocki
2010-01-17 13:07                                     ` Pavel Machek
2010-01-17 13:07                                       ` Pavel Machek
2010-01-17 13:26                                       ` Russell King - ARM Linux
2010-01-17 13:26                                         ` Russell King - ARM Linux
2010-01-19  5:15                                         ` Pavel Machek
2010-01-19  5:15                                           ` Pavel Machek
2010-01-16 22:32                                 ` Russell King - ARM Linux
2010-01-16 22:32                                   ` Russell King - ARM Linux
2010-01-16 18:12                           ` Pavel Machek
2010-01-16 18:12                             ` Pavel Machek
2010-01-16 18:12                         ` Pavel Machek
2010-01-16 18:12                           ` Pavel Machek
2010-01-16 22:07                           ` Rafael J. Wysocki
2010-01-16 22:07                             ` Rafael J. Wysocki
2010-01-16 22:14                             ` Pavel Machek
2010-01-16 22:14                               ` Pavel Machek
2010-01-16 22:21                               ` Rafael J. Wysocki
2010-01-16 22:21                                 ` Rafael J. Wysocki
2010-01-02 21:20               ` Bartłomiej Zimoń
2010-01-02 14:31   ` Bartłomiej Zimoń
2010-01-02 22:34 Bartłomiej Zimoń
2010-01-03  8:31 Bartłomiej Zimoń
2010-01-03 11:06 Bartłomiej Zimoń
2010-01-03 23:17 Bartłomiej Zimoń
2010-01-03 23:17 Bartłomiej Zimoń
2010-01-06  1:05 [linux-pm] " Bartłomiej Zimoń
2010-01-06 22:48 ` Rafael J. Wysocki
2010-01-06  1:05 Bartłomiej Zimoń

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=20100104143823.1464643d@strolchi.home.s3e.de \
    --to=stefan.seyfried@googlemail.com \
    --cc=awalls@radix.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=rjw@sisk.pl \
    --cc=stern@rowland.harvard.edu \
    --cc=uzi18@o2.pl \
    /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.