The NVIDIA driver includes support for both APM- and ACPI- based power management. The NVIDIA Linux driver supports 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 notebooks 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
Note: If you are using Linux 2.6 (or a newer Linux kernel) that 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 or later 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 the NvAGP driver.
Disabling AGP support (see Chapter 12, 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 Linux 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 as root:
% echo 0 > /sys/power/suspend2/extra_pages_allowance
Older versions of suspend2 may provide a different interface, in which case the following command needs to be issued as 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, see http://www.suspend2.net/.