Re: swsusp issues

Benjamin Herrenschmidt
2005-06-03T22:50:28Z

[-- Attachment #1: Type: text/plain, Size: 1507 bytes --]

> PM_DISK_REBOOT is very usefull for testing (and I believe generic; you
> could do that on ppc too). PM_DISK_SHUTDOWN is usefull for using
> normal powerdown paths in case something is wrong with disk-specific
> powerdown. We should move away from it, but please try not to kill it.

Well, I have a problem with these because they don't call the arch
prepare/finish callbacks.

Anyway, I discussed with Patrick yesterday and we came to the conclusion
that the best is in fact to just kill the current mecanism which was
done upside down. Kill pm_ops completely and instead of having a slim
"core" that uses callbacks all over, have the arch contain the main
state enter function and have the stuff in kernel/power/* be "library"
functions to be called by the arch code.

The idea here is then to have the arch provide main.c with an array of
"name",function pairs (name beeing the name in /sys/power/state and
function is what to call when the user echo's that name
to /sys/power/state). The rest would be entirely under arch control, and
that would remove most of the current cruft.

To simplify the job for swsusp and avoid the ugly in_suspend thing, we
should do a slight change of the low level code so that swsusp_suspend()
returns: 0 -> resume, 1 -> snapshotted, <0 -> error

We could provide an "example" default implementation that does only
swsusp that an arch can "drop in" if you want, but archs have to
implement the various "inline" callbacks anyway (save_processor_state &
friends).