Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Jan 2005 00:21:05 -0200
From:      =?ISO-8859-1?Q?Jo=E3o_Carlos_Mendes_Lu=EDs?= <jonny@jonny.eng.br>
To:        hackers@freebsd.org
Subject:   FreeBSD disk hibernation - Was: Resuming from a crashdump
Message-ID:  <41F5AD11.9090508@jonny.eng.br>
In-Reply-To: <41F5A2DE.5000306@gamersimpact.com>
References:  <86pszu639o.fsf@borg.borderworlds.dk> <86brbe6052.fsf@borg.borderworlds.dk> <Pine.BSI.4.58L.0501241423530.27294@vp4.netgate.net> <200501242240.j0OMeIXP043763@apollo.backplane.com> <41F59242.7090900@jonny.eng.br> <41F5A2DE.5000306@gamersimpact.com>

next in thread | previous in thread | raw e-mail | index | archive | help


Ryan Sommers wrote:
> João Carlos Mendes Luís wrote:
> 
>> Isn't it much easier to simply reload the full memory dump 
>> (hibernation file, not dump device) into RAM and continue from that 
>> point?  This should be done by /boot/loader, not by a full kernel, as 
>> the memory dump will also contain the kernel.
>>
>> At this point, all you have to do is to restore the hardware state, 
>> which may (or may not) be just the same as recovering from suspend state.
> 
> 
> Restoring the hardware state requires restoring the state inside each 
> and every hardware device. For certain devices this is trivial. However, 
> I believe for devices with much more complex internal state machines 
> this is way beyond the scope of the loader.

     This is not to be done by the loader.  Loader will only load the 
file into memory.  It's this "running image" that will restore hardware 
state.

> Now, that isn't to say the loader couldn't start executing the kernel 
> somewhere other than "the beginning" and instead at a point where the 
> kernel would specifically know it was awoken from hibernation and 
> cleanup/reinitialize any devices.

     Almost this.  Just note that we are not dealing with a kernel 
anymore.  If we have, someday, a swapable kernel, parts of it may be in 
the swap, and not in core.

> My little knowledge on this subject aside. I'd love to have full 
> suspend/resume functionality. It'd make my life as a mobile freebsd user 
> much much easier. However, I wouldn't want it at the expense of every 
> kernel. It would need to be something completely modular.

     It will require every driver used to be able to restore hardware 
state, and this may impact every kernel a bit.  Other than this, it 
should be modular.

     BTW: This is not useful only for laptops.  Some desktops could 
benefit from this also.  I like to hibernate windows XP desktops just to 
continue processing from the same point on the next day, and do not 
waste energy doing this.  Maybe even some servers (mostly processing 
servers, not network servers) could use this capability to survive 
energy blackouts, hibernating when the UPS goes on battery for some time.

     I've thought on this before windows XP come with an implementation, 
but I don't have enough knowledge to even start the hardware device 
state setup.   :-(

                                         Jonny

-- 
João Carlos Mendes Luís - Networking Engineer - jonny@jonny.eng.br



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?41F5AD11.9090508>