The NVIDIA driver includes support for both APM- and ACPI- based power management. This driver will support APM-based suspend and resume, as well as ACPI standby (S3) and suspend (S4).
To use APM, your system's BIOS will need to support APM, rather than ACPI. Many, but not all, of the GeForce2- and GeForce4-based laptops include APM support. You can check for APM support via the procfs interface (check for the existence of /proc/apm) or via the kernel's boot output:
% dmesg | grep -i apm
a message similar to this indicates APM support:
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16)
or a message like this indicates no APM support:
No APM support in Kernel
Please note: If you are using Linux kernel 2.6 and your kernel was configured with support for both ACPI and APM, the NVIDIA kernel module will be built with ACPI Power Management support. If you wish to use APM, you will need to rebuild the Linux kernel without ACPI support and reinstall the NVIDIA Linux graphics driver.
Sometimes chipsets lose their AGP configuration during suspend, and may cause corruption on the bus upon resume. The AGP driver is required to save and restore relevant register state on such systems; NVIDIA's NvAGP is notified of power management events and ensures its configuration is kept intact across suspend/resume cycles.
Linux 2.4 AGPGART does not support power management, Linux 2.6 AGPGART does, but only for a few select chipsets. If you use either of these two AGP drivers and find your system fails to resume reliably, you may have more success with NVIDIA's NvAGP driver.
Disabling AGP support (please see Appendix F, Configuring AGP for more details on disabling AGP) will also work around this problem.
More recent systems are more likely to support ACPI. ACPI is supported by the NVIDIA graphics driver in 2.6 and newer kernels. The driver supports ACPI standby (S3) and includes beta support for ACPI suspend (S4).
If you enable ACPI S4 support via suspend2 patches, you will need to tweak the Linux kernel such that it dynamically determines the amount of pages needed by the drivers that will be suspended in the system. This is done by issuing the following command from root:
% echo 0 > /proc/suspend2/extra_pages_allowance
The system does NOT need rebooting, and as a matter of fact, the setting is volatile over reboots. You will need to include the tweak in your startup scripts. However, failure to perform the tweak will result in a hang going to sleep. For further information regarding suspend2 patches, please see http://www.suspend2.net/.