[RFC PATCH v5] ARM hibernation / suspend-to-disk (fwd)
Frank Hofmann
frank.hofmann at tomtom.com
Wed Jun 29 11:14:23 EDT 2011
On Wed, 29 Jun 2011, Matthieu CASTET wrote:
> Frank Hofmann a écrit :
>> On Mon, 13 Jun 2011, Russell King - ARM Linux wrote:
>>
>> Hi Russell,
>>
>>
>> this change is perfect; with this, the hibernation support code turns into
>> the attached.
>>
>> That's both better and simpler to perform a full suspend/resume cycle (via
>> resetting in the cpu_suspend "finisher") after the snapshot image has been
>> created, instead of shoehorning a return into this.
>>
>> FrankH.
>
>
>>
>> +
>> +u8 __swsusp_resume_stk[PAGE_SIZE/2] __nosavedata;
> It look like dangerous : there is no alignment constraint, but the stack should
> be aligned on a 8 Bytes.
Uh - sorry. I used to have both the __nosavedata and
__attribute__((__aligned__(PAGE_SIZE/2))) attributes there. That must've
gone lost at one point.
It's an artifact of the build that things turn out ok by default; the
__nosavedata forces a separate section (page), and arch/arm is linked
before kernel/power (the other user of __nosavedata), hence this block,
due to the way the kernel build works, ends up just fine.
But as you say, not by intent / declaration.
Have you seen Will Deacon's suggested kexec changes ? That keeps a "reset
stack" page around, _elsewhere_, and I've been considering using that. In
the end, all swsusp_arch_resume() really requires is a stack page that's
guaranteed to be outside the target kernel data, thereby left alone by the
restore. __nosavedata is merely one way.
>
>
> Matthieu
>
Thanks,
FrankH.
More information about the linux-arm-kernel
mailing list