[RFC PATCH v5] ARM hibernation / suspend-to-disk (fwd)
frank.hofmann at tomtom.com
Mon Jun 13 12:11:07 EDT 2011
On Mon, 13 Jun 2011, Frank Hofmann wrote:
[ ... ]
> So it's kind of a two-pronged attack to minimize the SoC-specific code,
> Colin's framework to extract common code from the "outer" parts and Russell's
> cpu_suspend/resume to extract common code from the "inner" parts.
Also, to clarify on the hibernation side:
The biggest shortfall of the hibernation support patch that I've posted is
that it currently has no awareness of the "peripheral" side of things at
all, i.e. all the stuff done by the platform_suspend_ops->begin/enter/end
for the suspend-to-mem case isn't replicated sufficiently by the
If you like, swsusp_arch_suspend / resume are on the same level of
complexity as are the functions in platform_suspend_ops. But the current
hibernation patch does only parts of that. It gets away with this largely
because it "resumes from ON" ...
As far as that is concerned, Russell really has a point, to do all this
properly / well for the hibernation case, a hibernation-specific approach
on the platform_ops abstraction level would be better than just to hack
low-level generics together for the sake of hacking low-level generics
If just doing per-SoC hibernation, then the code bloat problem remains, on
ARM there's already platform_suspend_ops per SoC; if one adds a full set
of platform_hibernation_ops per SoC without thinking where/how to
consolidate, it'd only create another mess. Beware the beginnings ...
I had thought the idea of using cpu_suspend / resume actually made it
clear that my main point for all this "use generics wherever imaginable"
is to never allow for unnecessary bloat in the first place and hence opt
for generics even if somewhat imperfect / shoehorned for the general case.
I'd like to apologize if that didn't come over.
I'm following the work in this area; compared to where things were a year
ago a lot of things have happened already. In a way, my hope is that part
of all this blah of mine is helping to identify areas where code might be
shared even if that starts out as coincidental (as is the current use of
cpu_suspend / resume inside the hibernation patch).
More information about the linux-arm-kernel