IP Library Granted Patent US 7,640,440
Granted Patent B2
US 7,640,440 · App. 11/411,363 · Granted Dec 29, 2009

Method and apparatus for facilitating device hibernation

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,640,440
App. No.
11/411,363
Granted
Dec 29, 2009
Kind
B2
Abstract

One embodiment of the present invention provides a system that enables a computing device to save additional power by entering a “hibernation mode,” wherein the active state of the computing device is preserved in non-volatile storage while power to volatile storage is turned off. During operation, the system reanimates a computing device from a hibernation image by restoring reanimation code from the hibernation image and then executing the reanimation code. While executing this reanimation code, the system restores the rest of the hibernation image by, reading compressed data containing the rest of the hibernation image, and decompressing the compressed data using computational circuitry within the computing device. During this process, the decompression operations are overlapped with the reading operations to improve performance.

Claims (42)

1. A method for reanimating a computing device from a hibernation image, comprising:

restoring reanimation code from the hibernation image;

executing the reanimation code, wherein executing the reanimation code causes the computing device to restore the rest of the hibernation image by:

reading compressed data containing the rest of the hibernation image;

decompressing the compressed data using computational circuitry within the computing device, wherein the decompression operations are overlapped with the reading operations to improve performance during the reanimation process; and

setting a reanimation flag so that hibernation-aware drivers can determine that a following wake-from-sleep operation is not a normal wake-from-sleep operation, but is instead part of a reanimation operation; and

performing a wake-from-sleep operation to reanimate the computing device from the decompressed hibernation image.

2. The method of claim 1 , wherein restoring the rest of the hibernation image additionally involves:

reading a decryption key from non-volatile random access memory; and

using the decryption key to decrypt portions of the compressed data containing the rest of the hibernation image which were encrypted prior to storage in non-volatile memory.

3. The method of claim 1 , wherein prior to restoring the reanimation code, the method further comprises:

comparing a stored booter checksum, which was stored while generating the hibernation image, against a current booter checksum for a booter which is currently restoring the animation code; and

if the stored booter checksum does not match the current booter checksum, discontinuing the reanimation process.

4. The method of claim 1 , wherein prior to restoring the reanimation code, the method further comprises:

examining stored device configuration information, which was stored when the hibernation image was generated, to determine whether the configuration of the computing device has changed since the hibernation image was generated; and

if the configuration of the computing device has changed, discontinuing the reanimation process.

5. A computing device including a mechanism for reanimating the computing device from a hibernation image, comprising:

a processor;

a memory;

a device-initialization mechanism, which is configured to,

restore reanimation code from the hibernation image;

execute the reanimation code, wherein executing the reanimation code causes the computing device to:

read compressed data containing the rest of the hibernation image;

decompress the compressed data using computational circuitry within the computing device, wherein the decompression operations are overlapped with the reading operations to improve performance during the reanimation process; and

set a reanimation flag so that hibernation-aware drivers can determine that a following wake-from-sleep operation is not a normal wake-from-sleep operation, but is instead part of a reanimation operation; and

perform a wake-from-sleep operation to reanimate the computing device from the decompressed hibernation image.

6. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for reanimating a computing device from a hibernation image, the method comprising:

restoring reanimation code from the hibernation image; and

executing the reanimation code, wherein executing the reanimation code causes the computing device to restore the rest of the hibernation image by:

reading compressed data containing the rest of the hibernation image;

decompressing the compressed data using computational circuitry within the computing device, wherein the decompression operations are overlapped with the reading operations to improve performance during the reanimation process; and

setting a reanimation flag so that hibernation-aware drivers can determine that a following wake-from-sleep operation is not a normal wake-from-sleep operation, but is instead part of a reanimation operation; and

performing a wake-from-sleep operation to reanimate the computing device from the decompressed hibernation image.

7. The computer-readable storage medium of claim 6 , wherein restoring the rest of the hibernation image additionally involves:

reading a decryption key from non-volatile random access memory; and

using the decryption key to decrypt portions of the compressed data containing the rest of the hibernation image which were encrypted prior to storage in non-volatile memory.

8. The computer-readable storage medium of claim 6 , wherein prior to restoring the reanimation code, the method further comprises:

comparing a stored booter checksum, which was stored while generating the hibernation image, against a current booter checksum for a booter which is currently restoring the animation code; and

if the stored booter checksum does not match the current booter checksum, discontinuing the reanimation process.

9. The computer-readable storage medium of claim 6 , wherein prior to restoring the reanimation code, the method further comprises:

examining stored device configuration information, which was stored when the hibernation image was generated, to determine whether the configuration of the computing device has changed since the hibernation image was generated; and

if the configuration of the computing device has changed, discontinuing the reanimation process.

Assignments (2)
CHANGE OF NAME Recorded May 7, 2007
From: APPLE COMPUTER, INC.
To: APPLE INC.
Reel/Frame 019265/0922 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 25, 2006
From: REECE, DEAN; DOUGLAS, SIMON M.
To: APPLE COMPUTER, INC.
Reel/Frame 017824/0368 →