LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Miklos Szeredi <miklos@szeredi.hu>
To: rjw@sisk.pl
Cc: miklos@szeredi.hu, ncunningham@crca.org.au,
linux-pm@lists.linux-foundation.org,
linux-kernel@vger.kernel.org
Subject: Re: [linux-pm] Freezer: Don't count threads waiting for frozen filesystems.
Date: Wed, 29 Oct 2008 09:10:16 +0100 [thread overview]
Message-ID: <E1Kv688-0007Kp-SN@pomaz-ex.szeredi.hu> (raw)
In-Reply-To: <200810290059.38411.rjw@sisk.pl>
On Wed, 29 Oct 2008, Rafael J. Wysocki wrote:
> On Wednesday, 29 of October 2008, Miklos Szeredi wrote:
> > On Tue, 28 Oct 2008, Rafael J. Wysocki wrote:
> > > On Tuesday, 28 of October 2008, Miklos Szeredi wrote:
> > > > I would prefer a freezer-less solution. Suspend to ram doesn't need
> > > > the freezer,
> > >
> > > Well, yes it does. And it will in forseeable future, AFAICS.
> >
> > Umm, OK. Last I remember everybody agreed that there's absolutely no
> > reason why processes need to be frozen, and the only important thing
> > is that drivers are not twiddling the hardware during suspend, and
> > this can usually easily be solved on the subsystem level.
>
> Well, this turned out not to be the case in the meantime.
>
> In fact to handle that without the freezer we'd have to synchronize
> every driver's suspend/resume callbacks with every possible way in
> which applications can access the device for regular I/O (for
> example for PCI devices this means any I/O other than configuration
> space accesses).
Not all callbacks. I don't know what the current model is but AFAIR
it should be something like this:
1) call drivers to prepare for suspend (allocate space, etc)
2) stop all driver activity (plug queues, disable interrupts, etc)
3) call drivers to actually save state and power down
4) suspend
The part we are concerned is stopping driver activity. It could be
done with a mutex, or it could be done by freezing tasks. Adding a
mutex or other mechanism is the one I most like, but it's probably the
biggest work, so lets look at how to fix the freezing:
Currently the criteria for freezing is that userspace task has to exit
kernelspace, and kernel task has to hit a specific "freeze point".
This causes problems where we want to freeze tasks which are "stuck"
inside filesystems or other non-driver parts of the kernel. We can
fix this two ways:
a) mark additional places to freeze for userspace tasks as
well. This is the direction Nigel seems to be taking.
b) or instead we could allow freezing anywhere in uninterruptible
sleep, _except_ where explicity marked.
Which is easier? I don't know. But I very storgly feel that marking
un-freezable places instead of marking freezable places is a much
cleaner solution. It only affects parts of the kernel which have
something to do with suspend, instead of affecting parts of the kernel
which have absolutely nothing to do with suspend.
Miklos
next prev parent reply other threads:[~2008-10-29 8:10 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1224886068.6478.21.camel@nigel-laptop>
2008-10-26 20:01 ` Rafael J. Wysocki
2008-10-27 11:12 ` Miklos Szeredi
2008-10-27 11:20 ` Nigel Cunningham
2008-10-27 11:37 ` Rafael J. Wysocki
2008-10-27 11:40 ` Nigel Cunningham
2008-10-27 12:38 ` Miklos Szeredi
2008-10-27 20:59 ` Nigel Cunningham
2008-10-27 21:09 ` Miklos Szeredi
2008-10-27 22:13 ` Nigel Cunningham
2008-10-28 20:25 ` Miklos Szeredi
2008-10-28 21:29 ` Nigel Cunningham
2008-10-28 21:51 ` Miklos Szeredi
2008-10-28 22:00 ` Rafael J. Wysocki
2008-10-28 22:02 ` Miklos Szeredi
2008-10-28 22:21 ` Rafael J. Wysocki
2008-10-28 23:21 ` Miklos Szeredi
2008-10-28 23:59 ` Rafael J. Wysocki
2008-10-29 8:10 ` Miklos Szeredi [this message]
2008-10-29 13:51 ` Alan Stern
2008-10-29 14:50 ` Miklos Szeredi
2008-10-29 15:28 ` Alan Stern
2008-10-29 15:50 ` Miklos Szeredi
2008-10-29 16:17 ` Alan Stern
2008-10-29 16:10 ` Miklos Szeredi
2008-10-29 20:37 ` Alan Stern
2008-10-29 21:11 ` Rafael J. Wysocki
2008-10-29 21:45 ` Nigel Cunningham
2008-10-29 22:07 ` Rafael J. Wysocki
2008-10-29 23:53 ` Miklos Szeredi
2008-11-09 13:44 ` Pavel Machek
2008-10-29 23:48 ` Miklos Szeredi
2008-10-30 13:04 ` Nigel Cunningham
2008-10-30 13:56 ` Alan Stern
2008-10-30 21:44 ` Nigel Cunningham
2008-10-31 8:49 ` Miklos Szeredi
2008-10-31 9:10 ` Nigel Cunningham
2008-10-31 9:16 ` Miklos Szeredi
2008-10-31 11:28 ` Nigel Cunningham
2008-10-31 12:44 ` Miklos Szeredi
2008-10-31 21:11 ` Nigel Cunningham
2008-10-29 23:43 ` Miklos Szeredi
2008-10-30 13:54 ` Alan Stern
2008-10-30 14:39 ` Miklos Szeredi
2008-10-30 17:07 ` Alan Stern
2008-10-30 17:43 ` Miklos Szeredi
2008-10-30 20:17 ` Rafael J. Wysocki
2008-11-15 16:58 ` Pavel Machek
2008-10-29 23:56 ` Matthew Garrett
2008-10-28 22:03 ` Nigel Cunningham
2008-10-28 23:04 ` Nigel Cunningham
2008-10-28 23:12 ` Miklos Szeredi
2008-10-28 23:17 ` Nigel Cunningham
2008-10-28 23:24 ` Miklos Szeredi
2008-10-28 23:41 ` Nigel Cunningham
2008-10-28 23:45 ` Miklos Szeredi
2008-10-28 23:50 ` Miklos Szeredi
2008-10-28 23:58 ` Nigel Cunningham
2008-10-28 23:54 ` Nigel Cunningham
2008-10-27 11:37 ` Miklos Szeredi
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=E1Kv688-0007Kp-SN@pomaz-ex.szeredi.hu \
--to=miklos@szeredi.hu \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=ncunningham@crca.org.au \
--cc=rjw@sisk.pl \
--subject='Re: [linux-pm] Freezer: Don'\''t count threads waiting for frozen filesystems.' \
/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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).