Kernel Patches Test Suspend States at Runtime

Two patches by Rafael J. Wysocki give users the ability to test suspend and hibernation modes at runtime to detect errors.

The first patch gives users the ability to test the suspend code (suspend to disk) without actually switching to suspend mode. This is a useful approach to discovering driver issues says the developer. The second patch modifies the current hibernation function (Suspend to RAM) source code to achieve the same objective. According to Wysocki, this works better than the current test modes as his code can also test globabl ACPI methods.

The test options add a new "/sys/power/pm_test_level" attribute which accepts numbers between 1 and 5. Each of these values simulates a different suspend or hibernation code level. Wysocki explains the individual values as follows. 5 test the freezing of individual processes. 4 additionally tests suspending of devices. Besides suspending processes and devices, 3 additionally tests platform global methods. 2 adds disabling of nonboot CPUs, and 1 simulates full system suspend.

The developer adds: "if a suspend is started by normal means, the suspend core will perform its normal operations up to the point indicated by the test level. Next, it will wait for 5 seconds and carry out the resume operations needed to transition the system back to the fully functional state". To avoid using the text system, you can set "pm_test_level" to 0. Wysocki’s third patch adds information on his test systems to the documentation.

Related content

Nearly all motherboards have a power management feature designed to power down the computer and put it into suspend mode. In real life, this feature does not always work. Linux has a software-based workaround for the dysfunctional suspend.