Re: [linux-pm] driver power operations (was Re: suspend2 merge)
- From: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>
- Date: Fri, 27 Apr 2007 16:39:24 +0200
On Fri, 2007-04-27 at 10:34 -0400, Alan Stern wrote:
For the sake of argument, let's call the stages of STD and STR by these
names (also noted are the current PSMG values):
Suspend to disk:
"prepare to create snapshot" (= FREEZE)
"continue after snapshot" (= RESUME)
Resume from disk:
"prepare to restore snapshot" (= PRETHAW)
"continue after restore" (= RESUME)
Suspend to RAM:
"suspend" (= SUSPEND)
"resume" (= RESUME)
The real reason for adding PRETHAW was that drivers couldn't distinguish
between "continue after restore" and "resume", other than by examining the
device's state -- since the PM core doesn't pass any information to the
resume() method.
That's pretty much what I said about prethaw though, no? Anyway,
Anyway, based on this analysis it seems reasonable to have Six (6) method
pointers. Suggested names (in the same order as above):
pre_snaphot()
post_snapshot()
pre_restore()
post_restore()
suspend()
resume()
People apparently assume that pre_snapshot() and pre_restore() would
always do the same thing and hence be redundant. I'm not so sure; time
will tell. Doing it this way certainly is more clear.
Right. I did assume that pre_snapshot and pre_restore would be
effectively the same since they both have to quiesce the device and
assume not much more. I'm not averse to making it explicit, many drivers
that don't care can just assign the same function.
Then there's the question of having early_ and late_ versions of some of
these things (i.e., one called with interrupts enabled, the other with
interrupts disabled). I don't know to what extent that would be
necessary; perhaps the each method call should occur in two phases with
the interrupt-enable status changed in between. Then the interrupt-enable
setting could be passed as an argument.
Good point. Though if we go for passing the interrupt-enable setting as
an argument then many drivers will have the same
"if (irqs_disabled()) return" code. Hm. I guess passing it isn't even
strictly necessary.
johannes
Attachment:
signature.asc
Description: This is a digitally signed message part
- Follow-Ups:
- Re: [linux-pm] driver power operations (was Re: suspend2 merge)
- From: Johannes Berg
- Re: [linux-pm] driver power operations (was Re: suspend2 merge)
- References:
- Re: [linux-pm] driver power operations (was Re: suspend2 merge)
- From: Alan Stern
- Re: [linux-pm] driver power operations (was Re: suspend2 merge)
- Prev by Date: Re: [PATCH 1/3] ia64: convert to use clocksource code
- Next by Date: Re: [linux-pm] driver power operations (was Re: suspend2 merge)
- Previous by thread: Re: [linux-pm] driver power operations (was Re: suspend2 merge)
- Next by thread: Re: [linux-pm] driver power operations (was Re: suspend2 merge)
- Index(es):
Relevant Pages
|