Re: [PATCH] PM: make freezer optional for suspend

Rafael J. Wysocki
2007-11-14T13:21:15Z

On Tuesday, 13 of November 2007, Johannes Berg wrote:
> This patch makes the freezer optional for suspend to allow the
> system to work (or not work) like the original PMU suspend.
>
> Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
> ---
> In a quick test, playing sound across suspend failed to work,
> it usually works when the freezer is enabled (unless you use
> gstreamer.)
>
> kernel/power/Kconfig | 10 ++++++++++
> kernel/power/main.c | 6 ++++++
> 2 files changed, 16 insertions(+)
>
> --- everything.orig/kernel/power/main.c 2007-11-13 20:00:16.406263508 +0100
> +++ everything/kernel/power/main.c 2007-11-13 20:00:17.626268174 +0100
> @@ -79,10 +79,12 @@ static int suspend_prepare(void)
>
> pm_prepare_console();
>
> +#ifdef CONFIG_SUSPEND_FREEZER
> if (freeze_processes()) {
> error = -EAGAIN;
> goto Thaw;
> }
> +#endif
>
> free_pages = global_page_state(NR_FREE_PAGES);
> if (free_pages < FREE_PAGE_NUMBER) {
> @@ -96,8 +98,10 @@ static int suspend_prepare(void)
> if (!error)
> return 0;
>
> +#ifdef CONFIG_SUSPEND_FREEZER
> Thaw:
> thaw_processes();
> +#endif
> pm_restore_console();
> Finish:
> pm_notifier_call_chain(PM_POST_SUSPEND);
> @@ -191,7 +195,9 @@ int suspend_devices_and_enter(suspend_st
> */
> static void suspend_finish(void)
> {
> +#ifdef CONFIG_SUSPEND_FREEZER
> thaw_processes();
> +#endif
> pm_restore_console();
> pm_notifier_call_chain(PM_POST_SUSPEND);
> }
> --- everything.orig/kernel/power/Kconfig 2007-11-13 20:00:16.476274685 +0100
> +++ everything/kernel/power/Kconfig 2007-11-13 20:01:10.186257269 +0100
> @@ -97,6 +97,16 @@ config SUSPEND
> powered and thus its contents are preserved, such as the
> suspend-to-RAM state (i.e. the ACPI S3 state).
>
> +config SUSPEND_FREEZER
> + bool "Enable freezer for suspend to RAM/standby" if ADB_PMU || BROKEN

Hm, is ADB_PMU specific to powerpc?

> + depends on SUSPEND
> + default y
> + help
> + This allows you to turn off the freezer for suspend. If this is
> + done, no tasks are frozen for suspend to RAM/standby.
> +
> + Turning OFF this setting is NOT recommended! If in doubt, say Y.
> +
> config HIBERNATION_UP_POSSIBLE
> bool
> depends on X86 || PPC64_SWSUSP || PPC32

Greetings,
Rafael