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>