forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
333 lines
11 KiB
333 lines
11 KiB
# SPDX-License-Identifier: GPL-2.0-only |
|
config SUSPEND |
|
bool "Suspend to RAM and standby" |
|
depends on ARCH_SUSPEND_POSSIBLE |
|
default y |
|
help |
|
Allow the system to enter sleep states in which main memory is |
|
powered and thus its contents are preserved, such as the |
|
suspend-to-RAM state (e.g. the ACPI S3 state). |
|
|
|
config SUSPEND_FREEZER |
|
bool "Enable freezer for suspend to RAM/standby" \ |
|
if ARCH_WANTS_FREEZER_CONTROL || BROKEN |
|
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 SUSPEND_SKIP_SYNC |
|
bool "Skip kernel's sys_sync() on suspend to RAM/standby" |
|
depends on SUSPEND |
|
depends on EXPERT |
|
help |
|
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. 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 |
|
|
|
config HIBERNATION |
|
bool "Hibernation (aka 'suspend to disk')" |
|
depends on SWAP && ARCH_HIBERNATION_POSSIBLE |
|
select HIBERNATE_CALLBACKS |
|
select LZO_COMPRESS |
|
select LZO_DECOMPRESS |
|
select CRC32 |
|
help |
|
Enable the suspend to disk (STD) functionality, which is usually |
|
called "hibernation" in user interfaces. STD checkpoints the |
|
system and powers it off; and restores that checkpoint on reboot. |
|
|
|
You can suspend your machine with 'echo disk > /sys/power/state' |
|
after placing resume=/dev/swappartition on the kernel command line |
|
in your bootloader's configuration file. |
|
|
|
Alternatively, you can use the additional userland tools available |
|
from <http://suspend.sf.net>. |
|
|
|
In principle it does not require ACPI or APM, although for example |
|
ACPI will be used for the final steps when it is available. One |
|
of the reasons to use software suspend is that the firmware hooks |
|
for suspend states like suspend-to-RAM (STR) often don't work very |
|
well with Linux. |
|
|
|
It creates an image which is saved in your active swap. Upon the next |
|
boot, pass the 'resume=/dev/swappartition' argument to the kernel to |
|
have it detect the saved image, restore memory state from it, and |
|
continue to run as before. If you do not want the previous state to |
|
be reloaded, then use the 'noresume' kernel command line argument. |
|
Note, however, that fsck will be run on your filesystems and you will |
|
need to run mkswap against the swap partition used for the suspend. |
|
|
|
It also works with swap files to a limited extent (for details see |
|
<file:Documentation/power/swsusp-and-swap-files.rst>). |
|
|
|
Right now you may boot without resuming and resume later but in the |
|
meantime you cannot use the swap partition(s)/file(s) involved in |
|
suspending. Also in this case you must not use the filesystems |
|
that were mounted before the suspend. In particular, you MUST NOT |
|
MOUNT any journaled filesystems mounted before the suspend or they |
|
will get corrupted in a nasty way. |
|
|
|
For more information take a look at <file:Documentation/power/swsusp.rst>. |
|
|
|
config HIBERNATION_SNAPSHOT_DEV |
|
bool "Userspace snapshot device" |
|
depends on HIBERNATION |
|
default y |
|
help |
|
Device used by the uswsusp tools. |
|
|
|
Say N if no snapshotting from userspace is needed, this also |
|
reduces the attack surface of the kernel. |
|
|
|
If in doubt, say Y. |
|
|
|
config PM_STD_PARTITION |
|
string "Default resume partition" |
|
depends on HIBERNATION |
|
default "" |
|
help |
|
The default resume partition is the partition that the suspend- |
|
to-disk implementation will look for a suspended disk image. |
|
|
|
The partition specified here will be different for almost every user. |
|
It should be a valid swap partition (at least for now) that is turned |
|
on before suspending. |
|
|
|
The partition specified can be overridden by specifying: |
|
|
|
resume=/dev/<other device> |
|
|
|
which will set the resume partition to the device specified. |
|
|
|
Note there is currently not a way to specify which device to save the |
|
suspended image to. It will simply pick the first available swap |
|
device. |
|
|
|
config PM_SLEEP |
|
def_bool y |
|
depends on SUSPEND || HIBERNATE_CALLBACKS |
|
select PM |
|
select SRCU |
|
|
|
config PM_SLEEP_SMP |
|
def_bool y |
|
depends on SMP |
|
depends on ARCH_SUSPEND_POSSIBLE || ARCH_HIBERNATION_POSSIBLE |
|
depends on PM_SLEEP |
|
select HOTPLUG_CPU |
|
|
|
config PM_SLEEP_SMP_NONZERO_CPU |
|
def_bool y |
|
depends on PM_SLEEP_SMP |
|
depends on ARCH_SUSPEND_NONZERO_CPU |
|
help |
|
If an arch can suspend (for suspend, hibernate, kexec, etc) on a |
|
non-zero numbered CPU, it may define ARCH_SUSPEND_NONZERO_CPU. This |
|
will allow nohz_full mask to include CPU0. |
|
|
|
config PM_AUTOSLEEP |
|
bool "Opportunistic sleep" |
|
depends on PM_SLEEP |
|
help |
|
Allow the kernel to trigger a system transition into a global sleep |
|
state automatically whenever there are no active wakeup sources. |
|
|
|
config PM_WAKELOCKS |
|
bool "User space wakeup sources interface" |
|
depends on PM_SLEEP |
|
help |
|
Allow user space to create, activate and deactivate wakeup source |
|
objects with the help of a sysfs-based interface. |
|
|
|
config PM_WAKELOCKS_LIMIT |
|
int "Maximum number of user space wakeup sources (0 = no limit)" |
|
range 0 100000 |
|
default 100 |
|
depends on PM_WAKELOCKS |
|
|
|
config PM_WAKELOCKS_GC |
|
bool "Garbage collector for user space wakeup sources" |
|
depends on PM_WAKELOCKS |
|
default y |
|
|
|
config PM |
|
bool "Device power management core functionality" |
|
help |
|
Enable functionality allowing I/O devices to be put into energy-saving |
|
(low power) states, for example after a specified period of inactivity |
|
(autosuspended), and woken up in response to a hardware-generated |
|
wake-up event or a driver's request. |
|
|
|
Hardware support is generally required for this functionality to work |
|
and the bus type drivers of the buses the devices are on are |
|
responsible for the actual handling of device suspend requests and |
|
wake-up events. |
|
|
|
config PM_DEBUG |
|
bool "Power Management Debug Support" |
|
depends on PM |
|
help |
|
This option enables various debugging support in the Power Management |
|
code. This is helpful when debugging and reporting PM bugs, like |
|
suspend support. |
|
|
|
config PM_ADVANCED_DEBUG |
|
bool "Extra PM attributes in sysfs for low-level debugging/testing" |
|
depends on PM_DEBUG |
|
help |
|
Add extra sysfs attributes allowing one to access some Power Management |
|
fields of device objects from user space. If you are not a kernel |
|
developer interested in debugging/testing Power Management, say "no". |
|
|
|
config PM_TEST_SUSPEND |
|
bool "Test suspend/resume and wakealarm during bootup" |
|
depends on SUSPEND && PM_DEBUG && RTC_CLASS=y |
|
help |
|
This option will let you suspend your machine during bootup, and |
|
make it wake up a few seconds later using an RTC wakeup alarm. |
|
Enable this with a kernel parameter like "test_suspend=mem". |
|
|
|
You probably want to have your system's RTC driver statically |
|
linked, ensuring that it's available when this test runs. |
|
|
|
config PM_SLEEP_DEBUG |
|
def_bool y |
|
depends on PM_DEBUG && PM_SLEEP |
|
|
|
config DPM_WATCHDOG |
|
bool "Device suspend/resume watchdog" |
|
depends on PM_DEBUG && PSTORE && EXPERT |
|
help |
|
Sets up a watchdog timer to capture drivers that are |
|
locked up attempting to suspend/resume a device. |
|
A detected lockup causes system panic with message |
|
captured in pstore device for inspection in subsequent |
|
boot session. |
|
|
|
config DPM_WATCHDOG_TIMEOUT |
|
int "Watchdog timeout in seconds" |
|
range 1 120 |
|
default 120 |
|
depends on DPM_WATCHDOG |
|
|
|
config PM_TRACE |
|
bool |
|
help |
|
This enables code to save the last PM event point across |
|
reboot. The architecture needs to support this, x86 for |
|
example does by saving things in the RTC, see below. |
|
|
|
The architecture specific code must provide the extern |
|
functions from <linux/resume-trace.h> as well as the |
|
<asm/resume-trace.h> header with a TRACE_RESUME() macro. |
|
|
|
The way the information is presented is architecture- |
|
dependent, x86 will print the information during a |
|
late_initcall. |
|
|
|
config PM_TRACE_RTC |
|
bool "Suspend/resume event tracing" |
|
depends on PM_SLEEP_DEBUG |
|
depends on X86 |
|
select PM_TRACE |
|
help |
|
This enables some cheesy code to save the last PM event point in the |
|
RTC across reboots, so that you can debug a machine that just hangs |
|
during suspend (or more commonly, during resume). |
|
|
|
To use this debugging feature you should attempt to suspend the |
|
machine, reboot it and then run |
|
|
|
dmesg -s 1000000 | grep 'hash matches' |
|
|
|
CAUTION: this option will cause your machine's real-time clock to be |
|
set to an invalid time after a resume. |
|
|
|
config APM_EMULATION |
|
tristate "Advanced Power Management Emulation" |
|
depends on SYS_SUPPORTS_APM_EMULATION |
|
help |
|
APM is a BIOS specification for saving power using several different |
|
techniques. This is mostly useful for battery powered laptops with |
|
APM compliant BIOSes. If you say Y here, the system time will be |
|
reset after a RESUME operation, the /proc/apm device will provide |
|
battery status information, and user-space programs will receive |
|
notification of APM "events" (e.g. battery status change). |
|
|
|
In order to use APM, you will need supporting software. For location |
|
and more information, read <file:Documentation/power/apm-acpi.rst> |
|
and the Battery Powered Linux mini-HOWTO, available from |
|
<http://www.tldp.org/docs.html#howto>. |
|
|
|
This driver does not spin down disk drives (see the hdparm(8) |
|
manpage ("man 8 hdparm") for that), and it doesn't turn off |
|
VESA-compliant "green" monitors. |
|
|
|
Generally, if you don't have a battery in your machine, there isn't |
|
much point in using this driver and you should say N. If you get |
|
random kernel OOPSes or reboots that don't seem to be related to |
|
anything, try disabling/enabling this option (or disabling/enabling |
|
APM in your BIOS). |
|
|
|
config PM_CLK |
|
def_bool y |
|
depends on PM && HAVE_CLK |
|
|
|
config PM_GENERIC_DOMAINS |
|
bool |
|
depends on PM |
|
|
|
config WQ_POWER_EFFICIENT_DEFAULT |
|
bool "Enable workqueue power-efficient mode by default" |
|
depends on PM |
|
help |
|
Per-cpu workqueues are generally preferred because they show |
|
better performance thanks to cache locality; unfortunately, |
|
per-cpu workqueues tend to be more power hungry than unbound |
|
workqueues. |
|
|
|
Enabling workqueue.power_efficient kernel parameter makes the |
|
per-cpu workqueues which were observed to contribute |
|
significantly to power consumption unbound, leading to measurably |
|
lower power usage at the cost of small performance overhead. |
|
|
|
This config option determines whether workqueue.power_efficient |
|
is enabled by default. |
|
|
|
If in doubt, say N. |
|
|
|
config PM_GENERIC_DOMAINS_SLEEP |
|
def_bool y |
|
depends on PM_SLEEP && PM_GENERIC_DOMAINS |
|
|
|
config PM_GENERIC_DOMAINS_OF |
|
def_bool y |
|
depends on PM_GENERIC_DOMAINS && OF |
|
|
|
config CPU_PM |
|
bool |
|
|
|
config ENERGY_MODEL |
|
bool "Energy Model for devices with DVFS (CPUs, GPUs, etc)" |
|
depends on SMP |
|
depends on CPU_FREQ |
|
help |
|
Several subsystems (thermal and/or the task scheduler for example) |
|
can leverage information about the energy consumed by devices to |
|
make smarter decisions. This config option enables the framework |
|
from which subsystems can access the energy models. |
|
|
|
The exact usage of the energy model is subsystem-dependent. |
|
|
|
If in doubt, say N.
|
|
|