public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Pavel Machek <pavel@ucw.cz>
Cc: Alan Stern <stern@rowland.harvard.edu>,
	pm list <linux-pm@lists.linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Matthew Garrett <mjg59@srcf.ucam.org>,
	Nigel Cunningham <nigel@nigel.suspend2.net>,
	Oliver Neukum <oliver@neukum.org>
Subject: Re: [RFC][PATCH -mm 1/3] PM: Hibernation and suspend notifiers
Date: Wed, 30 May 2007 22:44:24 +0200	[thread overview]
Message-ID: <200705302244.25927.rjw@sisk.pl> (raw)
In-Reply-To: <20070530153740.GA4772@ucw.cz>

Hi,

On Wednesday, 30 May 2007 17:37, Pavel Machek wrote:
> Hi!
> 
> > +Suspend notifiers
> > +	(C) 2007 Rafael J. Wysocki <rjw@sisk.pl>, GPL
> > +
> > +There are some operations that device drivers may want to carry out in their
> > +.suspend() routines, but shouldn't, because they can cause the hibernation or
> > +suspend to fail. For example, a driver may want to allocate a substantial amount
> > +of memory (like 50 MB) in .suspend(), but that shouldn't be done after the
> > +swsusp's memory shrinker has run.
> > +
> > +Also, there may be some operations, that subsystems want to carry out before a
> > +hibernation/suspend or after a restore/resume, requiring the system to be fully
> > +functional, so the drivers' .suspend() and .resume() routines are not suitable
> > +for this purpose.  For example, device drivers may want to upload firmware to
> > +their devices after a restore from a hibernation image, but they cannot do it by
> > +calling request_firmware() from their .resume() routines (user land processes
> > +are frozen at this point).  The solution may be to load the firmware into
> > +memory before processes are frozen and upload it from there in the .resume()
> > +routine.  Of course, a hibernation notifier may be used for this purpose.
> > +
> > +The subsystems that have such needs can register suspend notifiers that will be
> > +called upon the following events by the suspend core:
> > +
> > +PM_PRE_FREEZE		The system is going to hibernate or suspend, tasks will
> > +			be frozen immediately
> 
> Hmm, looks like bad idea if we are going to remove freezer from
> suspend...?

We need PM_PRE_FREEZE anyway and it's a different question whether or not
it'll be used for suspend (STR) too.

The timing is not the best one, but so far the freezer is in the suspend code
path and I need to take this into account.
 
> > +PM_POST_THAW		Tasks have just been thawed after a resume or restore
> > +			from a hibernation image
> > +
> > +PM_HIBERNATION_PREPARE	The system is preparing for hibernation.  Tasks have
> > +			been frozen, memory is going to be freed and devices
> > +			are going to be suspended.
> 
> Is not PRE_FREEZE enough? We can allocate memory for drivers there,
> too...

Well, there is a reason for not doing this.  Namely, if the memory if freed on
PM_POST_HIBERNATION after the image has been created, we can use it for saving
the image (and speed up the saving).

Besides, if the freezer is dropped from the suspend code, the notifiers will be
useful to it anyway IMO, and PRE_FREEZE won't make sense in that case.

I think the rule should be: If you need to do something _before_ tasks are
frozen, do it in PM_PRE_FREEZE, but if you can do that after the tasks have
been frozen, do it on PM_HIBERNATION_PREPARE (or PM_SUSPEND_PREPARE in the
suspend case).

Greetings,
Rafael

  reply	other threads:[~2007-05-30 20:39 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-27 20:29 [RFC][PATCH -mm 0/3] PM: Hibernation and suspend notifiers Rafael J. Wysocki
2007-05-27 20:30 ` [RFC][PATCH -mm 1/3] " Rafael J. Wysocki
2007-05-28  9:49   ` Nigel Cunningham
2007-05-28 13:12   ` Pavel Machek
2007-05-28 17:26     ` Rafael J. Wysocki
2007-05-28 15:56   ` Alan Stern
2007-05-28 17:29     ` Rafael J. Wysocki
2007-05-29 22:24     ` Rafael J. Wysocki
2007-05-30 15:37       ` Pavel Machek
2007-05-30 20:44         ` Rafael J. Wysocki [this message]
2007-05-30 21:11           ` Rafael J. Wysocki
2007-05-30 22:24             ` Nigel Cunningham
2007-05-31  5:44               ` Rafael J. Wysocki
2007-05-31 14:23                 ` Pavel Machek
2007-05-31 20:02                   ` Rafael J. Wysocki
2007-05-31 21:56                     ` Nigel Cunningham
2007-05-30 22:29             ` Pavel Machek
2007-05-31  5:42               ` Rafael J. Wysocki
2007-05-27 20:30 ` [RFC][PATCH -mm 2/3] PM: Disable usermode helper before hibernation/suspend Rafael J. Wysocki
2007-05-28 13:04   ` Pavel Machek
2007-05-27 20:31 ` [RFC][PATCH -mm 3/3] PM: Disable _request_firmware " Rafael J. Wysocki
2007-05-27 20:45   ` Michael-Luke Jones
2007-05-27 21:55     ` Rafael J. Wysocki
2007-05-28 13:01     ` Pavel Machek
2007-05-29 20:41     ` Rob Landley
2007-05-27 20:49   ` Matthew Garrett
2007-05-27 21:45     ` Rafael J. Wysocki
2007-05-27 22:01       ` Matthew Garrett
2007-05-28  7:44         ` Rafael J. Wysocki
2007-05-28 16:09         ` Alan Stern
2007-05-28 16:12           ` Matthew Garrett
2007-05-28 16:43             ` Alan Stern
2007-05-28 16:54               ` Matthew Garrett
2007-05-28 20:03                 ` Alan Stern
2007-05-28 20:57               ` Pavel Machek
2007-05-28 22:29                 ` Alan Stern
2007-05-29 20:09                   ` [linux-pm] " David Brownell
2007-05-29 20:48                     ` Alan Stern
2007-06-04 11:00                   ` Pavel Machek
2007-06-05 18:45                     ` Alan Stern
2007-06-05 20:26                       ` Pavel Machek
2007-05-28  8:30       ` Nigel Cunningham
2007-05-28 11:22         ` Rafael J. Wysocki
2007-05-27 21:49     ` Kay Sievers
2007-05-27 22:01       ` Rafael J. Wysocki
2007-05-27 22:04       ` Matthew Garrett
2007-05-27 22:16         ` Kay Sievers
2007-05-28  7:43           ` Rafael J. Wysocki
2007-05-28  8:48             ` Michael-Luke Jones
2007-05-28  9:06               ` Kay Sievers
2007-05-28 10:26                 ` Michael-Luke Jones
2007-05-28 12:01                   ` Kay Sievers
2007-05-28 12:07                     ` Michael-Luke Jones
2007-05-28 10:41                 ` Michael-Luke Jones
2007-05-29 21:19                 ` Rob Landley
2007-05-29 22:51               ` Rob Landley
2007-05-30 19:50                 ` Pavel Machek
2007-05-28 11:15             ` Pavel Machek
2007-05-28 11:24               ` Kay Sievers
2007-05-28 11:28                 ` Pavel Machek
2007-05-28 11:38                 ` Michael-Luke Jones
2007-05-28 11:45                   ` [linux-pm] " Pavel Machek
2007-05-28 11:51                   ` Kay Sievers
2007-05-28 12:26                     ` Michael-Luke Jones
2007-05-28 12:47                       ` Kay Sievers
2007-05-28 13:00                       ` Pavel Machek
2007-05-28 13:10                         ` Michael-Luke Jones
2007-05-28 11:28               ` Rafael J. Wysocki
2007-05-28 13:07   ` Pavel Machek
2007-05-28 15:55   ` Alan Stern
2007-05-28 17:43     ` Rafael J. Wysocki
2007-05-28 20:51       ` Ray Lee
2007-05-28 20:59         ` Pavel Machek
2007-06-02  0:41 ` [RFC][PATCH -mm 0/2] PM: Hibernation and suspend notifiers (rev. 2) Rafael J. Wysocki
2007-06-02  0:43   ` [RFC][PATCH -mm 1/2] PM: Introduce hibernation and suspend notifiers Rafael J. Wysocki
2007-06-03 16:41     ` Pavel Machek
2007-06-03 22:38       ` Rafael J. Wysocki
2007-06-03 22:59         ` Pavel Machek
2007-06-04  7:56           ` Rafael J. Wysocki
2007-06-02  0:44   ` [RFC][PATCH -mm 2/2] PM: Disable usermode helper before hibernation and suspend Rafael J. Wysocki
2007-06-03 16:42     ` Pavel Machek

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=200705302244.25927.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=mjg59@srcf.ucam.org \
    --cc=nigel@nigel.suspend2.net \
    --cc=oliver@neukum.org \
    --cc=pavel@ucw.cz \
    --cc=stern@rowland.harvard.edu \
    /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