^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) config SUSPEND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) bool "Suspend to RAM and standby"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) depends on ARCH_SUSPEND_POSSIBLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) Allow the system to enter sleep states in which main memory is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) powered and thus its contents are preserved, such as the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) suspend-to-RAM state (e.g. the ACPI S3 state).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) config SUSPEND_FREEZER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) bool "Enable freezer for suspend to RAM/standby" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) if ARCH_WANTS_FREEZER_CONTROL || BROKEN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) depends on SUSPEND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) This allows you to turn off the freezer for suspend. If this is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) done, no tasks are frozen for suspend to RAM/standby.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) Turning OFF this setting is NOT recommended! If in doubt, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) config SUSPEND_SKIP_SYNC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) bool "Skip kernel's sys_sync() on suspend to RAM/standby"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) depends on SUSPEND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) depends on EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) Skip the kernel sys_sync() before freezing user processes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) Some systems prefer not to pay this cost on every invocation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) of suspend, or they are content with invoking sync() from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) user-space before invoking suspend. There's a run-time switch
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) at '/sys/power/sync_on_suspend' to configure this behaviour.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) This setting changes the default for the run-tim switch. Say Y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) to change the default to disable the kernel sys_sync().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) config HIBERNATE_CALLBACKS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) config HIBERNATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) bool "Hibernation (aka 'suspend to disk')"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) depends on SWAP && ARCH_HIBERNATION_POSSIBLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) select HIBERNATE_CALLBACKS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) select LZO_COMPRESS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) select LZO_DECOMPRESS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) select CRC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) Enable the suspend to disk (STD) functionality, which is usually
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) called "hibernation" in user interfaces. STD checkpoints the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) system and powers it off; and restores that checkpoint on reboot.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) You can suspend your machine with 'echo disk > /sys/power/state'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) after placing resume=/dev/swappartition on the kernel command line
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) in your bootloader's configuration file.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) Alternatively, you can use the additional userland tools available
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) from <http://suspend.sf.net>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) In principle it does not require ACPI or APM, although for example
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) ACPI will be used for the final steps when it is available. One
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) of the reasons to use software suspend is that the firmware hooks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) for suspend states like suspend-to-RAM (STR) often don't work very
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) well with Linux.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) It creates an image which is saved in your active swap. Upon the next
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) boot, pass the 'resume=/dev/swappartition' argument to the kernel to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) have it detect the saved image, restore memory state from it, and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) continue to run as before. If you do not want the previous state to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) be reloaded, then use the 'noresume' kernel command line argument.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) Note, however, that fsck will be run on your filesystems and you will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) need to run mkswap against the swap partition used for the suspend.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) It also works with swap files to a limited extent (for details see
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) <file:Documentation/power/swsusp-and-swap-files.rst>).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) Right now you may boot without resuming and resume later but in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) meantime you cannot use the swap partition(s)/file(s) involved in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) suspending. Also in this case you must not use the filesystems
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) that were mounted before the suspend. In particular, you MUST NOT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) MOUNT any journaled filesystems mounted before the suspend or they
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) will get corrupted in a nasty way.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) For more information take a look at <file:Documentation/power/swsusp.rst>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) config HIBERNATION_SNAPSHOT_DEV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) bool "Userspace snapshot device"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) depends on HIBERNATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) Device used by the uswsusp tools.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) Say N if no snapshotting from userspace is needed, this also
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) reduces the attack surface of the kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) If in doubt, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) config PM_STD_PARTITION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) string "Default resume partition"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) depends on HIBERNATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) default ""
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) The default resume partition is the partition that the suspend-
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) to-disk implementation will look for a suspended disk image.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) The partition specified here will be different for almost every user.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) It should be a valid swap partition (at least for now) that is turned
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) on before suspending.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) The partition specified can be overridden by specifying:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) resume=/dev/<other device>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) which will set the resume partition to the device specified.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) Note there is currently not a way to specify which device to save the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) suspended image to. It will simply pick the first available swap
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) config PM_SLEEP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) depends on SUSPEND || HIBERNATE_CALLBACKS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) select PM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) select SRCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) config PM_SLEEP_SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) depends on SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) depends on ARCH_SUSPEND_POSSIBLE || ARCH_HIBERNATION_POSSIBLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) depends on PM_SLEEP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) select HOTPLUG_CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) config PM_SLEEP_SMP_NONZERO_CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) depends on PM_SLEEP_SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) depends on ARCH_SUSPEND_NONZERO_CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) If an arch can suspend (for suspend, hibernate, kexec, etc) on a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) non-zero numbered CPU, it may define ARCH_SUSPEND_NONZERO_CPU. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) will allow nohz_full mask to include CPU0.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) config PM_AUTOSLEEP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) bool "Opportunistic sleep"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) depends on PM_SLEEP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) Allow the kernel to trigger a system transition into a global sleep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) state automatically whenever there are no active wakeup sources.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) config PM_WAKELOCKS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) bool "User space wakeup sources interface"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) depends on PM_SLEEP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) Allow user space to create, activate and deactivate wakeup source
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) objects with the help of a sysfs-based interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) config PM_WAKELOCKS_LIMIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) int "Maximum number of user space wakeup sources (0 = no limit)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) range 0 100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) default 100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) depends on PM_WAKELOCKS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) config PM_WAKELOCKS_GC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) bool "Garbage collector for user space wakeup sources"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) depends on PM_WAKELOCKS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) config PM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) bool "Device power management core functionality"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) Enable functionality allowing I/O devices to be put into energy-saving
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) (low power) states, for example after a specified period of inactivity
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) (autosuspended), and woken up in response to a hardware-generated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) wake-up event or a driver's request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) Hardware support is generally required for this functionality to work
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) and the bus type drivers of the buses the devices are on are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) responsible for the actual handling of device suspend requests and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) wake-up events.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) config PM_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) bool "Power Management Debug Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) depends on PM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) This option enables various debugging support in the Power Management
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) code. This is helpful when debugging and reporting PM bugs, like
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) suspend support.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) config PM_ADVANCED_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) bool "Extra PM attributes in sysfs for low-level debugging/testing"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) depends on PM_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) Add extra sysfs attributes allowing one to access some Power Management
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) fields of device objects from user space. If you are not a kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) developer interested in debugging/testing Power Management, say "no".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) config PM_TEST_SUSPEND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) bool "Test suspend/resume and wakealarm during bootup"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) depends on SUSPEND && PM_DEBUG && RTC_CLASS=y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) This option will let you suspend your machine during bootup, and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) make it wake up a few seconds later using an RTC wakeup alarm.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) Enable this with a kernel parameter like "test_suspend=mem".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) You probably want to have your system's RTC driver statically
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) linked, ensuring that it's available when this test runs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) config PM_SLEEP_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) depends on PM_DEBUG && PM_SLEEP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) config DPM_WATCHDOG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) bool "Device suspend/resume watchdog"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) depends on PM_DEBUG && PSTORE && EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) Sets up a watchdog timer to capture drivers that are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) locked up attempting to suspend/resume a device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) A detected lockup causes system panic with message
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) captured in pstore device for inspection in subsequent
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) boot session.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) config DPM_WATCHDOG_TIMEOUT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) int "Watchdog timeout in seconds"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) range 1 120
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) default 120
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) depends on DPM_WATCHDOG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) config PM_TRACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) This enables code to save the last PM event point across
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) reboot. The architecture needs to support this, x86 for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) example does by saving things in the RTC, see below.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) The architecture specific code must provide the extern
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) functions from <linux/resume-trace.h> as well as the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) <asm/resume-trace.h> header with a TRACE_RESUME() macro.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) The way the information is presented is architecture-
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) dependent, x86 will print the information during a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) late_initcall.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) config PM_TRACE_RTC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) bool "Suspend/resume event tracing"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) depends on PM_SLEEP_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) depends on X86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) select PM_TRACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) This enables some cheesy code to save the last PM event point in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) RTC across reboots, so that you can debug a machine that just hangs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) during suspend (or more commonly, during resume).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) To use this debugging feature you should attempt to suspend the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) machine, reboot it and then run
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) dmesg -s 1000000 | grep 'hash matches'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) CAUTION: this option will cause your machine's real-time clock to be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) set to an invalid time after a resume.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) config APM_EMULATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) tristate "Advanced Power Management Emulation"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) depends on SYS_SUPPORTS_APM_EMULATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) APM is a BIOS specification for saving power using several different
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) techniques. This is mostly useful for battery powered laptops with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) APM compliant BIOSes. If you say Y here, the system time will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) reset after a RESUME operation, the /proc/apm device will provide
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) battery status information, and user-space programs will receive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) notification of APM "events" (e.g. battery status change).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) In order to use APM, you will need supporting software. For location
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) and more information, read <file:Documentation/power/apm-acpi.rst>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) and the Battery Powered Linux mini-HOWTO, available from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) <http://www.tldp.org/docs.html#howto>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) This driver does not spin down disk drives (see the hdparm(8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) manpage ("man 8 hdparm") for that), and it doesn't turn off
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) VESA-compliant "green" monitors.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) Generally, if you don't have a battery in your machine, there isn't
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) much point in using this driver and you should say N. If you get
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) random kernel OOPSes or reboots that don't seem to be related to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) anything, try disabling/enabling this option (or disabling/enabling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) APM in your BIOS).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) config PM_CLK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) depends on PM && HAVE_CLK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) config PM_GENERIC_DOMAINS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) depends on PM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) config WQ_POWER_EFFICIENT_DEFAULT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) bool "Enable workqueue power-efficient mode by default"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) depends on PM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) Per-cpu workqueues are generally preferred because they show
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) better performance thanks to cache locality; unfortunately,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) per-cpu workqueues tend to be more power hungry than unbound
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) workqueues.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) Enabling workqueue.power_efficient kernel parameter makes the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) per-cpu workqueues which were observed to contribute
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) significantly to power consumption unbound, leading to measurably
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) lower power usage at the cost of small performance overhead.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) This config option determines whether workqueue.power_efficient
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) is enabled by default.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) config PM_GENERIC_DOMAINS_SLEEP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) depends on PM_SLEEP && PM_GENERIC_DOMAINS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) config PM_GENERIC_DOMAINS_OF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) depends on PM_GENERIC_DOMAINS && OF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) config CPU_PM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) config ENERGY_MODEL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) bool "Energy Model for CPUs"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) depends on SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) depends on CPU_FREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) Several subsystems (thermal and/or the task scheduler for example)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) can leverage information about the energy consumed by CPUs to make
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) smarter decisions. This config option enables the framework from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) which subsystems can access the energy models.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) The exact usage of the energy model is subsystem-dependent.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) If in doubt, say N.