Message ID | 7f6b9ec9-b26f-8c13-6b0b-1d697bc1a7a9@freesources.org (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | [v2,1/2] PM: Add a switch for disabling/enabling sync() before suspend | expand |
Slightly change the behaviour of build-time switch CONFIG_SUSPEND_SKIP_SYNC:
Make it configure the default for '/sys/power/sync_on_suspend', now that we
have a run-time switch for it.
Signed-off-by: Jonas Meurer <jonas@freesources.org>
---
Documentation/ABI/testing/sysfs-power | 7 ++++---
kernel/power/Kconfig | 5 ++++-
kernel/power/main.c | 2 +-
kernel/power/suspend.c | 2 +-
4 files changed, 10 insertions(+), 6 deletions(-)
--- a/kernel/power/suspend.c
+++ b/kernel/power/suspend.c
@@ -575,7 +575,7 @@ static int enter_state(suspend_state_t s
if (state == PM_SUSPEND_TO_IDLE)
s2idle_begin();
- if (!IS_ENABLED(CONFIG_SUSPEND_SKIP_SYNC) && sync_on_suspend_enabled) {
+ if (sync_on_suspend_enabled) {
trace_suspend_resume(TPS("sync_filesystems"), 0, true);
ksys_sync_helper();
trace_suspend_resume(TPS("sync_filesystems"), 0, false);
--- a/kernel/power/Kconfig
+++ b/kernel/power/Kconfig
@@ -27,7 +27,10 @@ config SUSPEND_SKIP_SYNC
Skip the kernel sys_sync() before freezing user processes.
Some systems prefer not to pay this cost on every invocation
of suspend, or they are content with invoking sync() from
- user-space before invoking suspend. Say Y if that's your case.
+ user-space before invoking suspend. There's a run-time switch
+ at '/sys/power/sync_on_suspend' to configure this behaviour.
+ This setting changes the default for the run-tim switch. Say Y
+ to change the default to disable the kernel sys_sync().
config HIBERNATE_CALLBACKS
bool
--- a/kernel/power/main.c
+++ b/kernel/power/main.c
@@ -198,7 +198,7 @@ power_attr(mem_sleep);
* show() returns whether ksys_sync_helper() is invoked before suspend.
* store() accepts 0 or 1. 0 disables ksys_sync_helper() and 1 enables it.
*/
-bool sync_on_suspend_enabled = true;
+bool sync_on_suspend_enabled = !IS_ENABLED(CONFIG_SUSPEND_SKIP_SYNC);
static ssize_t sync_on_suspend_show(struct kobject *kobj,
struct kobj_attribute *attr, char *buf)
--- a/Documentation/ABI/testing/sysfs-power
+++ b/Documentation/ABI/testing/sysfs-power
@@ -312,6 +312,7 @@ Description:
aware that you have to take care of sync() yourself before
suspending the system if you disable it here.
- Writing a "1" (default) to this file enables the sync() and
- writing a "0" disables it. Reads from the file return the
- current value.
+ Writing a "1" to this file enables the sync() and writing a
+ "0" disables it. Reads from the file return the current value.
+ The default is "1" but can be configured with the build-time
+ config flag "SUSPEND_SKIP_SYNC".
--- a/kernel/power/suspend.c +++ b/kernel/power/suspend.c @@ -575,7 +575,7 @@ static int enter_state(suspend_state_t s if (state == PM_SUSPEND_TO_IDLE) s2idle_begin(); - if (!IS_ENABLED(CONFIG_SUSPEND_SKIP_SYNC) && sync_on_suspend_enabled) { + if (sync_on_suspend_enabled) { trace_suspend_resume(TPS("sync_filesystems"), 0, true); ksys_sync_helper(); trace_suspend_resume(TPS("sync_filesystems"), 0, false); --- a/kernel/power/Kconfig +++ b/kernel/power/Kconfig @@ -19,7 +19,7 @@ config SUSPEND_FREEZER Turning OFF this setting is NOT recommended! If in doubt, say Y. -config SUSPEND_SKIP_SYNC +config SKIP_SYNC_ON_SUSPEND bool "Skip kernel's sys_sync() on suspend to RAM/standby" depends on SUSPEND depends on EXPERT @@ -27,7 +27,10 @@ config SUSPEND_SKIP_SYNC Skip the kernel sys_sync() before freezing user processes. Some systems prefer not to pay this cost on every invocation of suspend, or they are content with invoking sync() from - user-space before invoking suspend. Say Y if that's your case. + user-space before invoking suspend. There's a run-time switch + at '/sys/power/sync_on_suspend' to configure this behaviour. + This setting changes the default for the run-tim switch. Say Y + to change the default to disable the kernel sys_sync(). config HIBERNATE_CALLBACKS bool --- a/kernel/power/main.c +++ b/kernel/power/main.c @@ -198,7 +198,7 @@ power_attr(mem_sleep); * show() returns whether ksys_sync_helper() is invoked before suspend. * store() accepts 0 or 1. 0 disables ksys_sync_helper() and 1 enables it. */ -bool sync_on_suspend_enabled = true; +bool sync_on_suspend_enabled = !IS_ENABLED(CONFIG_SKIP_SYNC_ON_SUSPEND); static ssize_t sync_on_suspend_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) --- a/Documentation/ABI/testing/sysfs-power +++ b/Documentation/ABI/testing/sysfs-power @@ -312,6 +312,7 @@ Description: aware that you have to take care of sync() yourself before suspending the system if you disable it here. - Writing a "1" (default) to this file enables the sync() and - writing a "0" disables it. Reads from the file return the - current value. + Writing a "1" to this file enables the sync() and writing a + "0" disables it. Reads from the file return the current value. + The default is "1" but can be configured with the build-time + config flag "SKIP_SYNC_ON_SUSPEND".
Rename the build-time switch CONFIG_SUSPEND_SKIP_SYNC to CONFIG_SKIP_SYNC_ON_SUSPEND and slightly change its behaviour. Make it configure the default for '/sys/power/sync_on_suspend', now that we have a run-time switch for it. Signed-off-by: Jonas Meurer <jonas@freesources.org> --- Documentation/ABI/testing/sysfs-power | 7 ++++--- kernel/power/Kconfig | 7 +++++-- kernel/power/main.c | 2 +- kernel/power/suspend.c | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-)